Go to the documentation of this file.
52 size_t filter_count) {
60 "GPR_MAX_ALIGNMENT must be a power of two");
63 for (
i = 0;
i < filter_count;
i++) {
70 #define CHANNEL_ELEMS_FROM_STACK(stk) \
71 ((grpc_channel_element*)((char*)(stk) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
72 sizeof(grpc_channel_stack))))
74 #define CALL_ELEMS_FROM_STACK(stk) \
75 ((grpc_call_element*)((char*)(stk) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
76 sizeof(grpc_call_stack))))
91 for (
size_t i = 0;
i < channel_stack->
count; ++
i) {
112 for (
size_t i = 0;
i < filter_count;
i++) {
117 stack->on_destroy.Init([]() {});
127 stack->count = filter_count;
131 user_data = (
reinterpret_cast<char*
>(elems)) +
137 for (
i = 0;
i < filter_count;
i++) {
139 args.channel_args = channel_args;
140 args.is_first =
i == 0;
141 args.is_last =
i == (filter_count - 1);
162 stack->call_stack_size = call_size;
176 (*
stack->on_destroy)();
177 stack->on_destroy.Destroy();
191 destroy_arg,
"CALL_STACK");
193 user_data = (
reinterpret_cast<char*
>(call_elems)) +
198 for (
size_t i = 0;
i <
count;
i++) {
205 for (
size_t i = 0;
i <
count;
i++) {
246 &elems[
i], final_info,
247 i ==
count - 1 ? then_schedule_closure :
nullptr);
272 reinterpret_cast<char*
>(
elem) -
278 reinterpret_cast<char*
>(
elem) -
290 ClientNext(
elem + 1));
297 ServerNext(
elem - 1));
void(* get_channel_info)(grpc_channel_element *elem, const grpc_channel_info *channel_info)
static std::function< Slot &(Slot *)> element
grpc_channel_element * grpc_channel_stack_element(grpc_channel_stack *channel_stack, size_t index)
#define CALL_ELEMS_FROM_STACK(stk)
grpc_call_stack * grpc_call_stack_from_top_element(grpc_call_element *elem)
void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op)
void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack *call_stack, grpc_polling_entity *pollent)
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)
void grpc_call_stack_ignore_set_pollset_or_pollset_set(grpc_call_element *, grpc_polling_entity *)
grpc_call_element * grpc_call_stack_element(grpc_call_stack *call_stack, size_t index)
void grpc_channel_stack_destroy(grpc_channel_stack *stack)
#define GRPC_CALL_LOG_OP(sev, elem, op)
#define GPR_ROUND_UP_TO_ALIGNMENT_SIZE(x)
Given a size, round up to the next multiple of sizeof(void*).
grpc_error_handle(* init_channel_elem)(grpc_channel_element *elem, grpc_channel_element_args *args)
grpc_channel_element * grpc_channel_stack_last_element(grpc_channel_stack *channel_stack)
std::function< ArenaPromise< ServerMetadataHandle >(CallArgs)> NextPromiseFactory
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
void(* destroy_channel_elem)(grpc_channel_element *elem)
void grpc_channel_stack_no_post_init(grpc_channel_stack *, grpc_channel_element *)
const grpc_channel_filter * filter
const grpc_channel_filter * filter
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
#define CHANNEL_ELEMS_FROM_STACK(stk)
grpc_stream_refcount refcount
void grpc_channel_next_get_info(grpc_channel_element *elem, const grpc_channel_info *channel_info)
grpc_channel_stack * grpc_channel_stack_from_top_element(grpc_channel_element *elem)
void grpc_call_stack_destroy(grpc_call_stack *stack, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure)
void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
_W64 unsigned int uintptr_t
void(* destroy_call_elem)(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure)
grpc_core::TraceFlag grpc_trace_channel_stack(false, "channel_stack")
void(* start_transport_stream_op_batch)(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
size_t grpc_channel_stack_filter_instance_number(grpc_channel_stack *channel_stack, grpc_channel_element *elem)
grpc_core::TraceFlag grpc_trace_channel(false, "channel")
size_t grpc_channel_stack_size(const grpc_channel_filter **filters, size_t filter_count)
grpc_core::ArenaPromise< grpc_core::ServerMetadataHandle > MakeCallPromise(grpc_core::CallArgs call_args)
void(* grpc_iomgr_cb_func)(void *arg, grpc_error_handle error)
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 *channel_args, const char *name, grpc_channel_stack *stack)
grpc_call_stack * call_stack
#define GRPC_ERROR_UNREF(err)
#define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype)
void(* set_pollset_or_pollset_set)(grpc_call_element *elem, grpc_polling_entity *pollent)
void(* start_transport_op)(grpc_channel_element *elem, grpc_transport_op *op)
static std::function< void(void *, Slot *)> destroy
grpc_error_handle(* init_call_elem)(grpc_call_element *elem, const grpc_call_element_args *args)
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:44