diff options
author | 2015-09-18 17:29:00 -0700 | |
---|---|---|
committer | 2015-09-18 17:29:00 -0700 | |
commit | d1bec03fa148344b8eac2b59517252d86e4ca858 (patch) | |
tree | f359e48f9151ab7ceff72cd624ad6c7a59e4d304 /src/core/channel/channel_stack.c | |
parent | 33825118df7157219cec15382beb006d3462ad96 (diff) |
Call list progress
Diffstat (limited to 'src/core/channel/channel_stack.c')
-rw-r--r-- | src/core/channel/channel_stack.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/core/channel/channel_stack.c b/src/core/channel/channel_stack.c index 4eb5df5de3..c767a87b20 100644 --- a/src/core/channel/channel_stack.c +++ b/src/core/channel/channel_stack.c @@ -105,7 +105,8 @@ void grpc_channel_stack_init(const grpc_channel_filter **filters, size_t filter_count, grpc_channel *master, const grpc_channel_args *args, grpc_mdctx *metadata_context, - grpc_channel_stack *stack) { + grpc_channel_stack *stack, + grpc_call_list *call_list) { size_t call_size = ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) + ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element)); @@ -125,7 +126,7 @@ void grpc_channel_stack_init(const grpc_channel_filter **filters, elems[i].channel_data = user_data; elems[i].filter->init_channel_elem(&elems[i], master, args, metadata_context, i == 0, - i == (filter_count - 1)); + i == (filter_count - 1), call_list); user_data += ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_channel_data); call_size += ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data); } @@ -137,14 +138,15 @@ void grpc_channel_stack_init(const grpc_channel_filter **filters, stack->call_stack_size = call_size; } -void grpc_channel_stack_destroy(grpc_channel_stack *stack) { +void grpc_channel_stack_destroy(grpc_channel_stack *stack, + grpc_call_list *call_list) { grpc_channel_element *channel_elems = CHANNEL_ELEMS_FROM_STACK(stack); size_t count = stack->count; size_t i; /* destroy per-filter data */ for (i = 0; i < count; i++) { - channel_elems[i].filter->destroy_channel_elem(&channel_elems[i]); + channel_elems[i].filter->destroy_channel_elem(&channel_elems[i], call_list); } } @@ -175,30 +177,34 @@ void grpc_call_stack_init(grpc_channel_stack *channel_stack, } } -void grpc_call_stack_destroy(grpc_call_stack *stack) { +void grpc_call_stack_destroy(grpc_call_stack *stack, + grpc_call_list *call_list) { grpc_call_element *elems = CALL_ELEMS_FROM_STACK(stack); size_t count = stack->count; size_t i; /* destroy per-filter data */ for (i = 0; i < count; i++) { - elems[i].filter->destroy_call_elem(&elems[i]); + elems[i].filter->destroy_call_elem(&elems[i], call_list); } } -void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op *op) { +void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op *op, + grpc_call_list *call_list) { grpc_call_element *next_elem = elem + 1; - next_elem->filter->start_transport_stream_op(next_elem, op); + next_elem->filter->start_transport_stream_op(next_elem, op, call_list); } -char *grpc_call_next_get_peer(grpc_call_element *elem) { +char *grpc_call_next_get_peer(grpc_call_element *elem, + grpc_call_list *call_list) { grpc_call_element *next_elem = elem + 1; - return next_elem->filter->get_peer(next_elem); + return next_elem->filter->get_peer(next_elem, call_list); } -void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op) { +void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op, + grpc_call_list *call_list) { grpc_channel_element *next_elem = elem + 1; - next_elem->filter->start_transport_op(next_elem, op); + next_elem->filter->start_transport_op(next_elem, op, call_list); } grpc_channel_stack *grpc_channel_stack_from_top_element( @@ -212,9 +218,10 @@ grpc_call_stack *grpc_call_stack_from_top_element(grpc_call_element *elem) { sizeof(grpc_call_stack))); } -void grpc_call_element_send_cancel(grpc_call_element *cur_elem) { +void grpc_call_element_send_cancel(grpc_call_element *cur_elem, + grpc_call_list *call_list) { grpc_transport_stream_op op; memset(&op, 0, sizeof(op)); op.cancel_with_status = GRPC_STATUS_CANCELLED; - grpc_call_next_op(cur_elem, &op); + grpc_call_next_op(cur_elem, &op, call_list); } |