diff options
Diffstat (limited to 'grpc/src/core/lib/channel/channel_stack.h')
-rw-r--r-- | grpc/src/core/lib/channel/channel_stack.h | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/grpc/src/core/lib/channel/channel_stack.h b/grpc/src/core/lib/channel/channel_stack.h index e297df94..4832303c 100644 --- a/grpc/src/core/lib/channel/channel_stack.h +++ b/grpc/src/core/lib/channel/channel_stack.h @@ -125,8 +125,8 @@ struct grpc_channel_filter { transport and is on the server. Most filters want to ignore this argument. Implementations may assume that elem->call_data is all zeros. */ - grpc_error* (*init_call_elem)(grpc_call_element* elem, - const grpc_call_element_args* args); + grpc_error_handle (*init_call_elem)(grpc_call_element* elem, + const grpc_call_element_args* args); void (*set_pollset_or_pollset_set)(grpc_call_element* elem, grpc_polling_entity* pollent); /* Destroy per call data. @@ -148,8 +148,8 @@ struct grpc_channel_filter { useful for asserting correct configuration by upper layer code. The filter does not need to do any chaining. Implementations may assume that elem->channel_data is all zeros. */ - grpc_error* (*init_channel_elem)(grpc_channel_element* elem, - grpc_channel_element_args* args); + grpc_error_handle (*init_channel_elem)(grpc_channel_element* elem, + grpc_channel_element_args* args); /* Destroy per channel data. The filter does not need to do any chaining */ void (*destroy_channel_elem)(grpc_channel_element* elem); @@ -204,6 +204,13 @@ grpc_channel_element* grpc_channel_stack_element(grpc_channel_stack* stack, /* Get the last channel element in a channel stack */ grpc_channel_element* grpc_channel_stack_last_element( grpc_channel_stack* stack); + +// A utility function for a filter to determine how many other instances +// of the same filter exist above it in the same stack. Intended to be +// used in the filter's init_channel_elem() method. +size_t grpc_channel_stack_filter_instance_number( + grpc_channel_stack* channel_stack, grpc_channel_element* elem); + /* Get a call stack element given a call stack and an index */ grpc_call_element* grpc_call_stack_element(grpc_call_stack* stack, size_t i); @@ -211,7 +218,7 @@ grpc_call_element* grpc_call_stack_element(grpc_call_stack* stack, size_t i); size_t grpc_channel_stack_size(const grpc_channel_filter** filters, size_t filter_count); /* Initialize a channel stack given some filters */ -grpc_error* grpc_channel_stack_init( +grpc_error_handle grpc_channel_stack_init( int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg, const grpc_channel_filter** filters, size_t filter_count, const grpc_channel_args* args, grpc_transport* optional_transport, @@ -222,10 +229,11 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack); /* Initialize a call stack given a channel stack. transport_server_data is expected to be NULL on a client, or an opaque transport owned pointer on the server. */ -grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack, - int initial_refs, grpc_iomgr_cb_func destroy, - void* destroy_arg, - const grpc_call_element_args* elem_args); +grpc_error_handle grpc_call_stack_init(grpc_channel_stack* channel_stack, + int initial_refs, + grpc_iomgr_cb_func destroy, + void* destroy_arg, + const grpc_call_element_args* elem_args); /* Set a pollset or a pollset_set for a call stack: must occur before the first * op is started */ void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack* call_stack, |