diff options
Diffstat (limited to 'src/core/transport/transport.c')
-rw-r--r-- | src/core/transport/transport.c | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/src/core/transport/transport.c b/src/core/transport/transport.c index 3f6b93c3e8..f7c87c1e90 100644 --- a/src/core/transport/transport.c +++ b/src/core/transport/transport.c @@ -40,48 +40,47 @@ size_t grpc_transport_stream_size(grpc_transport *transport) { return transport->vtable->sizeof_stream; } -void grpc_transport_destroy(grpc_transport *transport) { - transport->vtable->destroy(transport); +void grpc_transport_destroy(grpc_transport *transport, + grpc_call_list *call_list) { + transport->vtable->destroy(transport, call_list); } int grpc_transport_init_stream(grpc_transport *transport, grpc_stream *stream, const void *server_data, - grpc_transport_stream_op *initial_op) { + grpc_transport_stream_op *initial_op, + grpc_call_list *call_list) { return transport->vtable->init_stream(transport, stream, server_data, - initial_op); + initial_op, call_list); } void grpc_transport_perform_stream_op(grpc_transport *transport, grpc_stream *stream, - grpc_transport_stream_op *op) { - transport->vtable->perform_stream_op(transport, stream, op); + grpc_transport_stream_op *op, + grpc_call_list *call_list) { + transport->vtable->perform_stream_op(transport, stream, op, call_list); } -void grpc_transport_perform_op(grpc_transport *transport, - grpc_transport_op *op) { - transport->vtable->perform_op(transport, op); +void grpc_transport_perform_op(grpc_transport *transport, grpc_transport_op *op, + grpc_call_list *call_list) { + transport->vtable->perform_op(transport, op, call_list); } void grpc_transport_destroy_stream(grpc_transport *transport, - grpc_stream *stream) { - transport->vtable->destroy_stream(transport, stream); + grpc_stream *stream, + grpc_call_list *call_list) { + transport->vtable->destroy_stream(transport, stream, call_list); } -char *grpc_transport_get_peer(grpc_transport *transport) { - return transport->vtable->get_peer(transport); +char *grpc_transport_get_peer(grpc_transport *transport, + grpc_call_list *call_list) { + return transport->vtable->get_peer(transport, call_list); } -void grpc_transport_stream_op_finish_with_failure( - grpc_transport_stream_op *op) { - if (op->send_ops) { - op->on_done_send->cb(op->on_done_send->cb_arg, 0); - } - if (op->recv_ops) { - op->on_done_recv->cb(op->on_done_recv->cb_arg, 0); - } - if (op->on_consumed) { - op->on_consumed->cb(op->on_consumed->cb_arg, 0); - } +void grpc_transport_stream_op_finish_with_failure(grpc_transport_stream_op *op, + grpc_call_list *call_list) { + grpc_call_list_add(call_list, op->on_done_recv, 0); + grpc_call_list_add(call_list, op->on_done_send, 0); + grpc_call_list_add(call_list, op->on_consumed, 0); } void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op, @@ -105,11 +104,12 @@ typedef struct { grpc_closure closure; } close_message_data; -static void free_message(void *p, int iomgr_success) { +static void free_message(void *p, int iomgr_success, + grpc_call_list *call_list) { close_message_data *cmd = p; gpr_slice_unref(cmd->message); if (cmd->then_call != NULL) { - cmd->then_call->cb(cmd->then_call->cb_arg, iomgr_success); + cmd->then_call->cb(cmd->then_call->cb_arg, iomgr_success, call_list); } gpr_free(cmd); } |