aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/surface/server.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-06-25 09:00:34 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-06-25 09:00:34 -0700
commit3b1847c5283c3776ca700fb5ee56c894e68d970b (patch)
tree592027466cdf3d49cc4d790804b7873d2245c968 /src/core/surface/server.c
parent4b62811032b12e988ca320e43b41c3bda7834869 (diff)
parent48f0a13f3872876787f4d7588b396db914319b1b (diff)
Merge branch 'oops-i-split-it-again' into tis-but-thy-name
Diffstat (limited to 'src/core/surface/server.c')
-rw-r--r--src/core/surface/server.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/core/surface/server.c b/src/core/surface/server.c
index 445bd1a103..607344a7a6 100644
--- a/src/core/surface/server.c
+++ b/src/core/surface/server.c
@@ -191,9 +191,9 @@ struct call_data {
grpc_stream_op_buffer *recv_ops;
grpc_stream_state *recv_state;
- void (*on_done_recv)(void *user_data, int success);
- void *recv_user_data;
+ grpc_iomgr_closure *on_done_recv;
+ grpc_iomgr_closure server_on_recv;
grpc_iomgr_closure kill_zombie_closure;
call_data **root[CALL_LIST_COUNT];
@@ -523,7 +523,7 @@ static void server_on_recv(void *ptr, int success) {
break;
}
- calld->on_done_recv(calld->recv_user_data, success);
+ calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success);
}
static void server_mutate_op(grpc_call_element *elem,
@@ -535,9 +535,7 @@ static void server_mutate_op(grpc_call_element *elem,
calld->recv_ops = op->recv_ops;
calld->recv_state = op->recv_state;
calld->on_done_recv = op->on_done_recv;
- calld->recv_user_data = op->recv_user_data;
- op->on_done_recv = server_on_recv;
- op->recv_user_data = elem;
+ op->on_done_recv = &calld->server_on_recv;
}
}
@@ -633,6 +631,8 @@ static void init_call_elem(grpc_call_element *elem,
calld->deadline = gpr_inf_future;
calld->call = grpc_call_from_top_element(elem);
+ grpc_iomgr_closure_init(&calld->server_on_recv, server_on_recv, elem);
+
gpr_mu_lock(&chand->server->mu_call);
call_list_join(&chand->server->lists[ALL_CALLS], calld, ALL_CALLS);
gpr_mu_unlock(&chand->server->mu_call);