Skip to content
Snippets Groups Projects
Commit 8d8d0d3d authored by Craig Tiller's avatar Craig Tiller
Browse files

Get combiner finalization lists working

parent a36857da
No related branches found
No related tags found
No related merge requests found
......@@ -41,6 +41,10 @@ void grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb,
closure->cb_arg = cb_arg;
}
void grpc_closure_list_init(grpc_closure_list *closure_list) {
closure_list->head = closure_list->tail = NULL;
}
void grpc_closure_list_append(grpc_closure_list *closure_list,
grpc_closure *closure, grpc_error *error) {
if (closure == NULL) {
......
......@@ -120,16 +120,27 @@ static void test_execute_many(void) {
grpc_combiner_destroy(lock);
}
static bool got_in_finally = false;
static void in_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
got_in_finally = true;
}
static void add_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
grpc_combiner_execute_finally(exec_ctx, arg,
grpc_closure_create(in_finally, NULL),
GRPC_ERROR_NONE, false);
}
static void test_execute_finally(void) {
gpr_log(GPR_DEBUG, "test_execute_finally");
grpc_combiner *lock = grpc_combiner_create(NULL);
bool done = false;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_combiner_execute(&exec_ctx, lock, grpc_closure_create(add_finally, lock),
GRPC_ERROR_NONE);
grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(done);
GPR_ASSERT(got_in_finally);
grpc_combiner_destroy(lock);
}
......@@ -138,8 +149,8 @@ int main(int argc, char **argv) {
grpc_init();
test_no_op();
test_execute_one();
test_execute_many();
test_execute_finally();
test_execute_many();
grpc_shutdown();
return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment