Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / grpc / deps / grpc / src / core / ext / filters / client_channel / connector.h
diff --git a/legacy-libs/grpc/deps/grpc/src/core/ext/filters/client_channel/connector.h b/legacy-libs/grpc/deps/grpc/src/core/ext/filters/client_channel/connector.h
new file mode 100644 (file)
index 0000000..2bd5ff2
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/transport/transport.h"
+
+typedef struct grpc_connector grpc_connector;
+typedef struct grpc_connector_vtable grpc_connector_vtable;
+
+struct grpc_connector {
+  const grpc_connector_vtable* vtable;
+};
+
+typedef struct {
+  /** set of pollsets interested in this connection */
+  grpc_pollset_set* interested_parties;
+  /** deadline for connection */
+  grpc_millis deadline;
+  /** channel arguments (to be passed to transport) */
+  const grpc_channel_args* channel_args;
+} grpc_connect_in_args;
+
+typedef struct {
+  /** the connected transport */
+  grpc_transport* transport;
+
+  /** channel arguments (to be passed to the filters) */
+  grpc_channel_args* channel_args;
+
+  /** channelz socket node of the connected transport. nullptr if not available
+   */
+  grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode> socket;
+
+  void reset() {
+    transport = nullptr;
+    channel_args = nullptr;
+    socket = nullptr;
+  }
+} grpc_connect_out_args;
+
+struct grpc_connector_vtable {
+  void (*ref)(grpc_connector* connector);
+  void (*unref)(grpc_connector* connector);
+  /** Implementation of grpc_connector_shutdown */
+  void (*shutdown)(grpc_connector* connector, grpc_error* why);
+  /** Implementation of grpc_connector_connect */
+  void (*connect)(grpc_connector* connector,
+                  const grpc_connect_in_args* in_args,
+                  grpc_connect_out_args* out_args, grpc_closure* notify);
+};
+
+grpc_connector* grpc_connector_ref(grpc_connector* connector);
+void grpc_connector_unref(grpc_connector* connector);
+/** Connect using the connector: max one outstanding call at a time */
+void grpc_connector_connect(grpc_connector* connector,
+                            const grpc_connect_in_args* in_args,
+                            grpc_connect_out_args* out_args,
+                            grpc_closure* notify);
+/** Cancel any pending connection */
+void grpc_connector_shutdown(grpc_connector* connector, grpc_error* why);
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H */