|
|
|
@ -309,6 +309,7 @@ static void push_setting(transport *t, grpc_chttp2_setting_id id, |
|
|
|
|
|
|
|
|
|
static int prepare_callbacks(transport *t); |
|
|
|
|
static void run_callbacks(transport *t, const grpc_transport_callbacks *cb); |
|
|
|
|
static void call_cb_closed(transport *t, const grpc_transport_callbacks *cb); |
|
|
|
|
|
|
|
|
|
static int prepare_write(transport *t); |
|
|
|
|
static void perform_write(transport *t, grpc_endpoint *ep); |
|
|
|
@ -516,13 +517,13 @@ static void init_transport(transport *t, grpc_transport_setup_callback setup, |
|
|
|
|
static void destroy_transport(grpc_transport *gt) { |
|
|
|
|
transport *t = (transport *)gt; |
|
|
|
|
|
|
|
|
|
gpr_mu_lock(&t->mu); |
|
|
|
|
lock(t); |
|
|
|
|
t->destroying = 1; |
|
|
|
|
while (t->calling_back) { |
|
|
|
|
gpr_cv_wait(&t->cv, &t->mu, gpr_inf_future); |
|
|
|
|
} |
|
|
|
|
t->cb = NULL; |
|
|
|
|
gpr_mu_unlock(&t->mu); |
|
|
|
|
drop_connection(t); |
|
|
|
|
unlock(t); |
|
|
|
|
|
|
|
|
|
unref_transport(t); |
|
|
|
|
} |
|
|
|
@ -772,7 +773,7 @@ static void unlock(transport *t) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (call_closed) { |
|
|
|
|
cb->closed(t->cb_user_data, &t->base); |
|
|
|
|
call_cb_closed(t, cb); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* write some bytes if necessary */ |
|
|
|
@ -1765,6 +1766,10 @@ static void run_callbacks(transport *t, const grpc_transport_callbacks *cb) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void call_cb_closed(transport *t, const grpc_transport_callbacks *cb) { |
|
|
|
|
cb->closed(t->cb_user_data, &t->base); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void add_to_pollset(grpc_transport *gt, grpc_pollset *pollset) { |
|
|
|
|
transport *t = (transport *)gt; |
|
|
|
|
lock(t); |
|
|
|
|