aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/channel/channel_stack.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-09-18 17:29:00 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-09-18 17:29:00 -0700
commitd1bec03fa148344b8eac2b59517252d86e4ca858 (patch)
treef359e48f9151ab7ceff72cd624ad6c7a59e4d304 /src/core/channel/channel_stack.c
parent33825118df7157219cec15382beb006d3462ad96 (diff)
Call list progress
Diffstat (limited to 'src/core/channel/channel_stack.c')
-rw-r--r--src/core/channel/channel_stack.c35
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);
}