19 #ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_H
20 #define GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_H
219 size_t filter_count);
243 #define GRPC_CALL_STACK_REF(call_stack, reason) \
244 grpc_stream_ref(&(call_stack)->refcount, reason)
245 #define GRPC_CALL_STACK_UNREF(call_stack, reason) \
246 grpc_stream_unref(&(call_stack)->refcount, reason)
247 #define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \
248 grpc_stream_ref(&(channel_stack)->refcount, reason)
249 #define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \
250 grpc_stream_unref(&(channel_stack)->refcount, reason)
252 #define GRPC_CALL_STACK_REF(call_stack, reason) \
254 grpc_stream_ref(&(call_stack)->refcount); \
257 #define GRPC_CALL_STACK_UNREF(call_stack, reason) \
259 grpc_stream_unref(&(call_stack)->refcount); \
262 #define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \
264 grpc_stream_ref(&(channel_stack)->refcount); \
267 #define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \
269 grpc_stream_unref(&(channel_stack)->refcount); \
305 #define GRPC_CALL_LOG_OP(sev, elem, op) \
307 if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) { \
308 grpc_call_log_op(sev, elem, op); \
void grpc_channel_next_get_info(grpc_channel_element *elem, const grpc_channel_info *channel_info)
Definition: channel_stack.cc:243
grpc_channel_element * grpc_channel_stack_last_element(grpc_channel_stack *stack)
Definition: channel_stack.cc:79
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, const char *name, grpc_channel_stack *stack)
Definition: channel_stack.cc:101
grpc_channel_stack * grpc_channel_stack_from_top_element(grpc_channel_element *elem)
Definition: channel_stack.cc:254
void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack *call_stack, grpc_polling_entity *pollent)
Definition: channel_stack.cc:204
size_t grpc_channel_stack_size(const grpc_channel_filter **filters, size_t filter_count)
Definition: channel_stack.cc:47
void grpc_call_stack_ignore_set_pollset_or_pollset_set(grpc_call_element *elem, grpc_polling_entity *pollent)
Definition: channel_stack.cc:218
grpc_channel_element * grpc_channel_stack_element(grpc_channel_stack *stack, size_t i)
Definition: channel_stack.cc:74
grpc_call_stack * grpc_call_stack_from_top_element(grpc_call_element *elem)
Definition: channel_stack.cc:261
grpc_core::TraceFlag grpc_trace_channel
void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
Definition: channel_stack.cc:236
size_t grpc_channel_stack_filter_instance_number(grpc_channel_stack *channel_stack, grpc_channel_element *elem)
Definition: channel_stack.cc:84
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)
Definition: channel_stack.cc:165
void grpc_channel_stack_destroy(grpc_channel_stack *stack)
Definition: channel_stack.cc:154
grpc_call_element * grpc_call_stack_element(grpc_call_stack *stack, size_t i)
Definition: channel_stack.cc:96
void grpc_call_stack_destroy(grpc_call_stack *stack, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure)
Definition: channel_stack.cc:221
void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op)
Definition: channel_stack.cc:249
void grpc_call_log_op(const char *file, int line, gpr_log_severity severity, grpc_call_element *elem, grpc_transport_stream_op_batch *op)
Definition: transport_op_string.cc:164
Definition: call_combiner.h:50
void(* grpc_iomgr_cb_func)(void *arg, grpc_error_handle error)
gRPC Callback definition.
Definition: closure.h:53
grpc_error * grpc_error_handle
Definition: error.h:48
int64_t grpc_millis
Definition: exec_ctx.h:37
grpc_status_code
Definition: status.h:26
@ GRPC_STATUS_OK
Not an error; returned on success.
Definition: status.h:28
gpr_log_severity
GPR log API.
Definition: log.h:43
Analogous to struct timespec.
Definition: gpr_types.h:47
Definition: channel_stack.h:76
grpc_core::Arena * arena
Definition: channel_stack.h:83
gpr_cycle_counter start_time
Definition: channel_stack.h:81
grpc_call_stack * call_stack
Definition: channel_stack.h:77
const void * server_transport_data
Definition: channel_stack.h:78
grpc_call_context_element * context
Definition: channel_stack.h:79
grpc_millis deadline
Definition: channel_stack.h:82
grpc_core::CallCombiner * call_combiner
Definition: channel_stack.h:84
const grpc_slice & path
Definition: channel_stack.h:80
Definition: channel_stack.h:174
void * call_data
Definition: channel_stack.h:177
const grpc_channel_filter * filter
Definition: channel_stack.h:175
void * channel_data
Definition: channel_stack.h:176
Information about the call upon completion.
Definition: channel_stack.h:91
grpc_status_code final_status
Definition: channel_stack.h:93
grpc_call_stats stats
Definition: channel_stack.h:92
const char * error_string
Definition: channel_stack.h:94
Definition: channel_stack.h:192
size_t count
Definition: channel_stack.h:198
grpc_stream_refcount refcount
Definition: channel_stack.h:197
Definition: channel_stack.h:86
gpr_timespec latency
Definition: channel_stack.h:88
grpc_transport_stream_stats transport_stream_stats
Definition: channel_stack.h:87
An array of arguments that can be passed around.
Definition: grpc_types.h:132
Definition: channel_stack.h:68
const grpc_channel_args * channel_args
Definition: channel_stack.h:70
int is_first
Definition: channel_stack.h:73
int is_last
Definition: channel_stack.h:74
grpc_channel_stack * channel_stack
Definition: channel_stack.h:69
grpc_transport * optional_transport
Transport, iff it is known.
Definition: channel_stack.h:72
Definition: channel_stack.h:166
const grpc_channel_filter * filter
Definition: channel_stack.h:167
void * channel_data
Definition: channel_stack.h:168
Definition: channel_stack.h:107
void(* destroy_call_elem)(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure)
Definition: channel_stack.h:138
void(* start_transport_op)(grpc_channel_element *elem, grpc_transport_op *op)
Definition: channel_stack.h:115
grpc_error_handle(* init_channel_elem)(grpc_channel_element *elem, grpc_channel_element_args *args)
Definition: channel_stack.h:151
void(* set_pollset_or_pollset_set)(grpc_call_element *elem, grpc_polling_entity *pollent)
Definition: channel_stack.h:130
grpc_error_handle(* init_call_elem)(grpc_call_element *elem, const grpc_call_element_args *args)
Definition: channel_stack.h:128
void(* start_transport_stream_op_batch)(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
Definition: channel_stack.h:110
void(* get_channel_info)(grpc_channel_element *elem, const grpc_channel_info *channel_info)
Definition: channel_stack.h:158
size_t sizeof_channel_data
Definition: channel_stack.h:143
void(* destroy_channel_elem)(grpc_channel_element *elem)
Definition: channel_stack.h:155
const char * name
Definition: channel_stack.h:162
size_t sizeof_call_data
Definition: channel_stack.h:118
Information requested from the channel.
Definition: grpc_types.h:704
Definition: channel_stack.h:182
size_t call_stack_size
Definition: channel_stack.h:187
grpc_stream_refcount refcount
Definition: channel_stack.h:183
size_t count
Definition: channel_stack.h:184
A closure over a grpc_iomgr_cb_func.
Definition: closure.h:56
Definition: error_internal.h:41
Definition: polling_entity.h:37
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1].
Definition: slice.h:60
Definition: transport.h:56
Transport op: a set of operations to perform on a transport as a whole.
Definition: transport.h:332
Definition: transport.h:163
Definition: transport.h:128
Definition: transport_impl.h:66