aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/surface/secure_channel_create.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-09-15 07:41:28 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-09-15 07:41:28 -0700
commit06a43f5d7e7ec90dfe133c5dfa1bb2c3acb85059 (patch)
tree3280f1a990f3bf9f8d86fe899fc70b66641482fc /src/core/surface/secure_channel_create.c
parent1701b093339fc124bd9c7f08eb7d8511799281ec (diff)
Progress towards workqueue transition
Diffstat (limited to 'src/core/surface/secure_channel_create.c')
-rw-r--r--src/core/surface/secure_channel_create.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c
index 06ffa8dd6e..d141260421 100644
--- a/src/core/surface/secure_channel_create.c
+++ b/src/core/surface/secure_channel_create.c
@@ -57,6 +57,7 @@ typedef struct {
gpr_refcount refs;
grpc_channel_security_connector *security_connector;
+ grpc_workqueue *workqueue;
grpc_iomgr_closure *notify;
grpc_connect_in_args args;
@@ -71,6 +72,7 @@ static void connector_ref(grpc_connector *con) {
static void connector_unref(grpc_connector *con) {
connector *c = (connector *)con;
if (gpr_unref(&c->refs)) {
+ grpc_workqueue_unref(c->workqueue);
gpr_free(c);
}
}
@@ -122,8 +124,8 @@ static void connector_connect(grpc_connector *con,
c->notify = notify;
c->args = *args;
c->result = result;
- grpc_tcp_client_connect(connected, c, args->interested_parties, args->addr,
- args->addr_len, args->deadline);
+ grpc_tcp_client_connect(connected, c, args->interested_parties, c->workqueue,
+ args->addr, args->addr_len, args->deadline);
}
static const grpc_connector_vtable connector_vtable = {
@@ -165,6 +167,8 @@ static grpc_subchannel *subchannel_factory_create_subchannel(
memset(c, 0, sizeof(*c));
c->base.vtable = &connector_vtable;
c->security_connector = f->security_connector;
+ c->workqueue = grpc_channel_get_workqueue(f->master);
+ grpc_workqueue_ref(c->workqueue);
gpr_ref_init(&c->refs, 1);
args->mdctx = f->mdctx;
args->args = final_args;
@@ -240,7 +244,8 @@ grpc_channel *grpc_secure_channel_create(grpc_credentials *creds,
f->merge_args = grpc_channel_args_copy(args_copy);
f->master = channel;
GRPC_CHANNEL_INTERNAL_REF(channel, "subchannel_factory");
- resolver = grpc_resolver_create(target, &f->base);
+ resolver = grpc_resolver_create(target, &f->base,
+ grpc_channel_get_workqueue(channel));
if (!resolver) {
return NULL;
}