static void test_cq_end_client_metadata_read(void) { grpc_event *ev; grpc_completion_queue *cc; int on_finish_called = 0; void *tag = create_test_tag(); LOG_TEST(); cc = grpc_completion_queue_create(); grpc_cq_begin_op(cc, NULL, GRPC_CLIENT_METADATA_READ); grpc_cq_end_client_metadata_read(cc, tag, NULL, increment_int_on_finish, &on_finish_called, 0, NULL); ev = grpc_completion_queue_next(cc, gpr_inf_past); GPR_ASSERT(ev != NULL); GPR_ASSERT(ev->type == GRPC_CLIENT_METADATA_READ); GPR_ASSERT(ev->tag == tag); GPR_ASSERT(ev->data.client_metadata_read.count == 0); GPR_ASSERT(ev->data.client_metadata_read.elements == NULL); GPR_ASSERT(on_finish_called == 0); grpc_event_finish(ev); GPR_ASSERT(on_finish_called == 1); shutdown_and_destroy(cc); }
static void finish_recv_metadata(grpc_call *call, grpc_op_error status, void *tag) { legacy_state *ls; lock(call); ls = get_legacy_state(call); if (status == GRPC_OP_OK) { grpc_cq_end_client_metadata_read(call->cq, tag, call, do_nothing, NULL, ls->initial_md_in.count, ls->initial_md_in.metadata); } else { grpc_cq_end_client_metadata_read(call->cq, tag, call, do_nothing, NULL, 0, NULL); } unlock(call); }