|
|
|
@ -45,6 +45,9 @@ grpc_closure *grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb, |
|
|
|
|
closure->cb = cb; |
|
|
|
|
closure->cb_arg = cb_arg; |
|
|
|
|
closure->scheduler = scheduler; |
|
|
|
|
#ifndef NDEBUG |
|
|
|
|
closure->scheduled = false; |
|
|
|
|
#endif |
|
|
|
|
return closure; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -137,6 +140,10 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c, |
|
|
|
|
grpc_error *error) { |
|
|
|
|
GPR_TIMER_BEGIN("grpc_closure_sched", 0); |
|
|
|
|
if (c != NULL) { |
|
|
|
|
#ifndef NDEBUG |
|
|
|
|
GPR_ASSERT(!c->scheduled); |
|
|
|
|
c->scheduled = true; |
|
|
|
|
#endif |
|
|
|
|
assert(c->cb); |
|
|
|
|
c->scheduler->vtable->sched(exec_ctx, c, error); |
|
|
|
|
} else { |
|
|
|
@ -149,6 +156,10 @@ void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, grpc_closure_list *list) { |
|
|
|
|
grpc_closure *c = list->head; |
|
|
|
|
while (c != NULL) { |
|
|
|
|
grpc_closure *next = c->next_data.next; |
|
|
|
|
#ifndef NDEBUG |
|
|
|
|
GPR_ASSERT(!c->scheduled); |
|
|
|
|
c->scheduled = true; |
|
|
|
|
#endif |
|
|
|
|
assert(c->cb); |
|
|
|
|
c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error); |
|
|
|
|
c = next; |
|
|
|
|