Go to the documentation of this file.
31 #include "absl/status/status.h"
69 compression_options_(compression_options),
70 call_size_estimate_(channel_stack->call_stack_size +
75 ->CreateMemoryOwner(
target)),
99 channelz::ChannelTrace::Severity::Info,
108 auto channel_args =
builder->channel_args();
126 if (default_level.has_value()) {
133 auto default_algorithm =
135 if (default_algorithm.has_value()) {
143 auto enabled_algorithms_bitset =
145 if (enabled_algorithms_bitset.has_value()) {
147 *enabled_algorithms_bitset | 1 ;
158 void* channelz_node_copy(
void* p) {
160 node->
Ref().release();
163 void channelz_node_destroy(
void* p) {
164 channelz::ChannelNode* node =
static_cast<channelz::ChannelNode*
>(p);
167 int channelz_node_cmp(
void* p1,
void* p2) {
return QsortCompare(p1, p2); }
169 channelz_node_copy, channelz_node_destroy, channelz_node_cmp};
171 void CreateChannelzNode(ChannelStackBuilder*
builder) {
176 if (!channelz_enabled)
return;
178 const size_t channel_tracer_max_memory =
std::max(
181 const bool is_internal_channel =
185 RefCountedPtr<channelz::ChannelNode> channelz_node =
186 MakeRefCounted<channelz::ChannelNode>(
187 target.c_str(), channel_tracer_max_memory, is_internal_channel);
188 channelz_node->AddTraceEvent(
189 channelz::ChannelTrace::Severity::Info,
197 &channelz_node_arg_vtable)));
210 if (ssl_override.has_value()) {
216 auto channel_args_mutator =
218 if (channel_args_mutator !=
nullptr) {
224 .SetTransport(optional_transport);
241 cur,
size, std::memory_order_relaxed, std::memory_order_relaxed);
245 }
else if (
cur > 0) {
249 std::memory_order_relaxed, std::memory_order_relaxed);
270 elem->filter->get_channel_info(
elem, channel_info);
276 GRPC_API_TRACE(
"grpc_channel_reset_connect_backoff(channel=%p)", 1,
279 op->reset_connect_backoff =
true;
292 GPR_ASSERT(!(
cq !=
nullptr && pollset_set_alternative !=
nullptr));
296 args.server =
nullptr;
297 args.parent = parent_call;
298 args.propagation_mask = propagation_mask;
300 args.pollset_set_alternative = pollset_set_alternative;
301 args.server_transport_data =
nullptr;
304 args.send_deadline = deadline;
337 channel, parent_call, propagation_mask,
nullptr, pollset_set,
349 if (host_arg !=
nullptr && host_arg[0] != 0) {
366 const char* host,
void* reserved) {
368 "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)",
381 auto key = std::make_pair(
std::string(host !=
nullptr ? host :
""),
385 return &rc_posn->second;
389 return &insertion_result.first->second;
401 "grpc_channel_create_registered_call("
402 "channel=%p, parent_call=%p, propagation_mask=%x, completion_queue=%p, "
403 "registered_call_handle=%p, "
404 "deadline=gpr_timespec { tv_sec: %" PRId64
405 ", tv_nsec: %d, clock_type: %d }, "
430 GRPC_API_TRACE(
"grpc_channel_destroy(channel=%p)", 1, (c_channel));
431 op->disconnect_with_error =
absl::optional< Slice > authority
uint32_t enabled_algorithms_bitset
grpc_completion_queue * completion_queue
RefCountedPtr< channelz::SubchannelNode > channelz_node_
const grpc_slice & grpc_slice_ref_internal(const grpc_slice &slice)
std::string ToString(StatusToStringMode mode=StatusToStringMode::kDefault) const
grpc_error_handle grpc_call_create(grpc_call_create_args *args, grpc_call **out_call)
grpc_channel_element * grpc_channel_stack_element(grpc_channel_stack *channel_stack, size_t index)
const RefCountedPtr< grpc_channel_stack > channel_stack_
static grpc_call * grpc_channel_create_call_internal(grpc_channel *c_channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *cq, grpc_pollset_set *pollset_set_alternative, grpc_core::Slice path, absl::optional< grpc_core::Slice > authority, grpc_core::Timestamp deadline)
CallRegistrationTable registration_table_
struct grpc_pollset_set grpc_pollset_set
grpc_compression_algorithm
grpc_compression_level level
#define GRPC_ARG_ENABLE_CHANNELZ
std::shared_ptr< internal::MemoryAllocatorImpl > allocator_
#define GRPC_LOG_IF_ERROR(what, error)
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL
@ GRPC_COMPRESS_LEVEL_COUNT
#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET
RefCountedPtr< channelz::ChannelNode > channelz_node_
void grpc_channel_get_info(grpc_channel *channel, const grpc_channel_info *channel_info)
void grpc_channel_destroy_internal(grpc_channel *c_channel)
#define GRPC_STATS_INC_SERVER_CHANNELS_CREATED()
#define GRPC_ARG_CHANNELZ_CHANNEL_NODE
GPRAPI void * gpr_zalloc(size_t size)
#define GRPC_ENABLE_CHANNELZ_DEFAULT
#define GRPC_ARG_DEFAULT_AUTHORITY
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static Slice FromCopiedString(const char *s)
wrapped_grpc_channel * channel
grpc_compression_options compression_options() const
void grpc_channel_reset_connect_backoff(grpc_channel *channel)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
size_t grpc_call_get_initial_size_estimate()
static const CoreConfiguration & Get()
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
struct grpc_compression_options::grpc_compression_options_default_level default_level
#define GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT
struct grpc_call grpc_call
@ GRPC_COMPRESS_LEVEL_NONE
typename AllocatorTraits< A >::pointer Pointer
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
RegisteredCall * RegisterCall(const char *method, const char *host)
grpc_transport_op * grpc_make_transport_op(grpc_closure *on_complete)
struct grpc_compression_options::grpc_compression_options_default_algorithm default_algorithm
RefCountedPtr< grpc_channel_stack > channel_stack_
void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice &data)
grpc_call * grpc_channel_create_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *completion_queue, grpc_slice method, const grpc_slice *host, gpr_timespec deadline, void *reserved)
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
gpr_clock_type clock_type
void grpc_channel_destroy(grpc_channel *channel)
char * grpc_channel_get_target(grpc_channel *channel)
std::atomic< size_t > call_size_estimate_
T Clamp(T val, T min, T max)
Channel(bool is_client, std::string target, ChannelArgs channel_args, grpc_compression_options compression_options, RefCountedPtr< grpc_channel_stack > channel_stack)
int QsortCompare(const T &a, const T &b)
channelz::ChannelNode * channelz_node() const
#define GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE
grpc_core::ExecCtx exec_ctx
GRPCAPI void grpc_compression_options_init(grpc_compression_options *opts)
grpc_call * grpc_channel_create_pollset_set_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_pollset_set *pollset_set, const grpc_slice &method, const grpc_slice *host, grpc_core::Timestamp deadline, void *reserved)
@ GRPC_COMPRESS_ALGORITHMS_COUNT
grpc_call * grpc_channel_create_registered_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *completion_queue, void *registered_call_handle, gpr_timespec deadline, void *reserved)
void channelz(grpc_end2end_test_config config)
struct grpc_channel grpc_channel
absl::string_view target() const
#define GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL
void UpdateCallSizeEstimate(size_t size)
grpc_core::ManualConstructor< std::function< void()> > on_destroy
void * grpc_channel_register_call(grpc_channel *channel, const char *method, const char *host, void *reserved)
RegisteredCall(const char *method_arg, const char *host_arg)
static absl::StatusOr< RefCountedPtr< Channel > > CreateWithBuilder(ChannelStackBuilder *builder)
bool grpc_channel_stack_type_is_client(grpc_channel_stack_type type)
GRPCAPI void grpc_init(void)
static Timestamp FromTimespecRoundUp(gpr_timespec t)
internal::RefMatcher< T & > Ref(T &x)
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM
static Channel * FromC(grpc_channel *c_type)
const char * grpc_channel_stack_type_string(grpc_channel_stack_type type)
#define GRPC_STATS_INC_CLIENT_CHANNELS_CREATED()
grpc_compression_algorithm algorithm
GRPCAPI void grpc_shutdown(void)
static absl::StatusOr< RefCountedPtr< Channel > > Create(const char *target, ChannelArgs args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport)
static grpc_completion_queue * cq
grpc_channel_args_client_channel_creation_mutator grpc_channel_args_get_client_channel_creation_mutator()
RefCountedPtr< Child > Ref() GRPC_MUST_USE_RESULT
#define GRPC_API_TRACE(fmt, nargs, args)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:52