aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/surface/channel_create.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-06-26 09:02:20 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-06-26 09:02:20 -0700
commitf7afa1f1ba4953c7bd6d20f0bbabc5742d3faea8 (patch)
tree651bfcbdb62fb9e464ed360ddd639c216469a484 /src/core/surface/channel_create.c
parent916246625bad68c6ea63d5a2cfca644a7e01cfe1 (diff)
client_config: chttp2_fullstack_no_op_unsecure_test passes
Diffstat (limited to 'src/core/surface/channel_create.c')
-rw-r--r--src/core/surface/channel_create.c53
1 files changed, 23 insertions, 30 deletions
diff --git a/src/core/surface/channel_create.c b/src/core/surface/channel_create.c
index 2d63d7e766..ba4e1a24ec 100644
--- a/src/core/surface/channel_create.c
+++ b/src/core/surface/channel_create.c
@@ -46,44 +46,42 @@
typedef struct {
grpc_connector base;
gpr_refcount refs;
- struct sockaddr *addr;
- int addr_len;
- grpc_channel_args *args;
} connector;
-typedef struct {
- grpc_subchannel_factory base;
- gpr_refcount refs;
- grpc_channel_args *args;
-} subchannel_factory;
-
-static void subchannel_factory_ref(grpc_subchannel_factory *scf) {
- subchannel_factory *f = (subchannel_factory*)scf;
- gpr_ref(&f->refs);
+static void connector_ref(grpc_connector *con) {
+ connector *c = (connector *)con;
+ gpr_ref(&c->refs);
}
-static void subchannel_factory_unref(grpc_subchannel_factory *scf) {
- subchannel_factory *f = (subchannel_factory*)scf;
- if (gpr_unref(&f->refs)) {
- grpc_channel_args_destroy(f->args);
- gpr_free(f);
+static void connector_unref(grpc_connector *con) {
+ connector *c = (connector *)con;
+ if (gpr_unref(&c->refs)) {
+ gpr_free(c);
}
}
+static void connector_connect(grpc_connector *connector, const grpc_channel_args *channel_args, grpc_mdctx *metadata_context, grpc_transport **transport, grpc_iomgr_closure *notify) {
+ abort();
+}
+
+static const grpc_connector_vtable connector_vtable = {connector_ref, connector_unref, connector_connect};
+
+static void subchannel_factory_ref(grpc_subchannel_factory *scf) {}
+
+static void subchannel_factory_unref(grpc_subchannel_factory *scf) {}
+
static grpc_subchannel *subchannel_factory_create_subchannel(grpc_subchannel_factory *scf, grpc_subchannel_args *args) {
- subchannel_factory *f = (subchannel_factory*)scf;
connector *c = gpr_malloc(sizeof(*c));
+ grpc_subchannel *s;
c->base.vtable = &connector_vtable;
gpr_ref_init(&c->refs, 1);
- c->addr = gpr_malloc(args->addr_len);
- memcpy(c->addr, args->addr, args->addr_len);
- c->addr_len = args->addr_len;
- c->args = grpc_channel_args_merge(args->args, f->args);
-
- return grpc_subchannel_create(&c->base);
+ s = grpc_subchannel_create(&c->base, args);
+ grpc_connector_unref(&c->base);
+ return s;
}
static const grpc_subchannel_factory_vtable subchannel_factory_vtable = {subchannel_factory_ref, subchannel_factory_unref, subchannel_factory_create_subchannel};
+static grpc_subchannel_factory subchannel_factory = {&subchannel_factory_vtable};
/* Create a client channel:
Asynchronously: - resolve target
@@ -92,7 +90,6 @@ static const grpc_subchannel_factory_vtable subchannel_factory_vtable = {subchan
grpc_channel *grpc_channel_create(const char *target,
const grpc_channel_args *args) {
grpc_channel *channel = NULL;
- subchannel_factory *scfactory = gpr_malloc(sizeof(*scfactory));
#define MAX_FILTERS 3
const grpc_channel_filter *filters[MAX_FILTERS];
grpc_resolver *resolver;
@@ -104,11 +101,7 @@ grpc_channel *grpc_channel_create(const char *target,
filters[n++] = &grpc_client_channel_filter;
GPR_ASSERT(n <= MAX_FILTERS);
- scfactory->base.vtable = &subchannel_factory_vtable;
- gpr_ref_init(&scfactory->refs, 1);
- scfactory->args = grpc_channel_args_copy(args);
-
- resolver = grpc_resolver_create(target, &scfactory->base);
+ resolver = grpc_resolver_create(target, &subchannel_factory);
if (!resolver) {
return NULL;
}