Go to the documentation of this file.
28 #include <type_traits>
30 #include "absl/status/statusor.h"
31 #include "absl/strings/escaping.h"
32 #include "absl/strings/strip.h"
87 data.calls_started.fetch_add(1, std::memory_order_relaxed);
88 data.last_call_started_cycle.store(gpr_get_cycle_counter(),
89 std::memory_order_relaxed);
94 .calls_failed.fetch_add(1, std::memory_order_relaxed);
99 .calls_succeeded.fetch_add(1, std::memory_order_relaxed);
103 for (
size_t core = 0; core <
num_cores_; ++core) {
106 out->calls_started +=
data.calls_started.load(std::memory_order_relaxed);
107 out->calls_succeeded +=
109 std::memory_order_relaxed);
111 std::memory_order_relaxed);
112 const gpr_cycle_counter last_call =
114 std::memory_order_relaxed);
115 if (last_call >
out->last_call_started_cycle) {
116 out->last_call_started_cycle = last_call;
124 if (
data.calls_started != 0) {
131 if (
data.calls_succeeded != 0) {
134 if (
data.calls_failed) {
144 bool is_internal_channel)
149 trace_(channel_tracer_max_nodes) {}
155 return "Channel state change to IDLE";
157 return "Channel state change to CONNECTING";
159 return "Channel state change to READY";
161 return "Channel state change to TRANSIENT_FAILURE";
163 return "Channel state change to SHUTDOWN";
175 if ((state_field & 1) != 0) {
227 int state_field = (
state << 1) + 1;
285 size_t pagination_limit = max_results == 0 ? 500 : max_results;
289 size_t sockets_rendered = 0;
294 ++
it, ++sockets_rendered) {
297 {
"name",
it->second->name()},
332 {
"name",
it.second->name()},
372 data[
"tls"] =
tls->RenderJson();
386 void* SecurityArgCopy(
void* p) {
389 return xds_certificate_provider->
Ref().release();
392 void SecurityArgDestroy(
void* p) {
395 xds_certificate_provider->
Unref();
398 int SecurityArgCmp(
void* p,
void* q) {
return QsortCompare(p, q); }
401 SecurityArgCopy, SecurityArgDestroy, SecurityArgCmp};
413 Security* security = grpc_channel_args_find_pointer<Security>(
415 return security !=
nullptr ? security->
Ref() :
nullptr;
425 const char* addr_str) {
426 if (addr_str ==
nullptr)
return;
429 if (uri.
ok() && (uri->scheme() ==
"ipv4" || uri->scheme() ==
"ipv6")) {
436 port_num = atoi(
port.data());
446 {
"ip_address", b64_host},
453 if (uri.
ok() && uri->scheme() ==
"unix") {
455 {
"filename", uri->path()},
477 std::memory_order_relaxed);
483 std::memory_order_relaxed);
489 std::memory_order_relaxed);
495 std::memory_order_relaxed);
503 if (streams_started != 0) {
505 gpr_cycle_counter last_local_stream_created_cycle =
507 if (last_local_stream_created_cycle != 0) {
513 gpr_cycle_counter last_remote_stream_created_cycle =
515 if (last_remote_stream_created_cycle != 0) {
524 if (streams_succeeded != 0) {
528 if (streams_failed != 0) {
532 if (messages_sent != 0) {
542 if (messages_received != 0) {
551 if (keepalives_sent != 0) {
565 object[
"security"] =
security_->RenderJson();
567 PopulateSocketAddressJson(&
object,
"remote",
remote_.c_str());
568 PopulateSocketAddressJson(&
object,
"local",
local_.c_str());
578 local_addr_(
std::
move(local_addr)) {}
588 PopulateSocketAddressJson(&
object,
"local",
local_addr_.c_str());
std::atomic< int64_t > streams_failed_
std::vector< Json > Array
GPRAPI unsigned gpr_cpu_num_cores(void)
void AddChildSubchannel(intptr_t child_uuid)
SocketNode(std::string local, std::string remote, std::string name, RefCountedPtr< Security > security)
void RemoveChildChannel(intptr_t child_uuid)
std::vector< AtomicCounterData > per_cpu_counter_data_storage_
void RecordMessagesSent(uint32_t num_sent)
std::atomic< int64_t > streams_started_
PHP_PROTO_OBJECT_FREE_END PHP_PROTO_OBJECT_DTOR_END intern array
void RecordStreamStartedFromRemote()
std::atomic< int64_t > messages_received_
gpr_timespec gpr_cycle_counter_to_time(gpr_cycle_counter cycles)
const std::string & name() const
@ GRPC_CHANNEL_TRANSIENT_FAILURE
OPENSSL_EXPORT pem_password_cb void * u
bool SplitHostPort(absl::string_view name, absl::string_view *host, absl::string_view *port)
std::string remote_certificate
ABSL_MUST_USE_RESULT absl::string_view StripPrefix(absl::string_view str, absl::string_view prefix)
void RemoveChildListenSocket(intptr_t child_uuid)
const RefCountedPtr< Security > security_
static absl::StatusOr< URI > Parse(absl::string_view uri_text)
void PopulateCallCounts(Json::Object *json)
void RecordStreamStartedFromLocal()
const std::string & remote()
CallCountingHelper call_counter_
void SetConnectivityState(grpc_connectivity_state state)
BaseNode(EntityType type, std::string name)
Json RenderJson() override
std::string grpc_sockaddr_get_packed_host(const grpc_resolved_address *resolved_addr)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
JSON (JavaScript Object Notation).
grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address *out, const char *addr, int port)
void RemoveChildSocket(intptr_t child_uuid)
void AddChildChannel(intptr_t child_uuid)
std::atomic< int > connectivity_state_
static const char * GetChannelConnectivityStateChangeString(grpc_connectivity_state state)
std::atomic< gpr_cycle_counter > last_message_sent_cycle_
std::atomic< int64_t > streams_succeeded_
static void Unregister(intptr_t uuid)
std::string gpr_format_timespec(gpr_timespec tm)
void RecordMessageReceived()
ListenSocketNode(std::string local_addr, std::string name)
Json RenderJson() override
void CollectData(CounterData *out)
void AddChildSocket(RefCountedPtr< SocketNode > node)
Json RenderJson() override
static void Register(BaseNode *node)
std::atomic< int64_t > keepalives_sent_
std::set< intptr_t > child_channels_
static RefCountedPtr< Security > GetFromChannelArgs(const grpc_channel_args *args)
@ GRPC_CHANNEL_CONNECTING
absl::optional< Tls > tls
std::atomic< gpr_cycle_counter > last_local_stream_created_cycle_
std::map< std::string, Json > Object
std::string RenderJsonString()
ABSL_MUST_USE_RESULT bool ok() const
const char * ConnectivityStateName(grpc_connectivity_state state)
#define GRPC_ARG_CHANNELZ_SECURITY
std::atomic< gpr_cycle_counter > last_message_received_cycle_
int QsortCompare(const T &a, const T &b)
GPRAPI gpr_timespec gpr_convert_clock_type(gpr_timespec t, gpr_clock_type clock_type)
std::set< intptr_t > child_subchannels_
std::atomic< int64_t > messages_sent_
std::string RenderServerSockets(intptr_t start_socket_id, intptr_t max_results)
std::atomic< gpr_cycle_counter > last_remote_stream_created_cycle_
ServerNode(size_t channel_tracer_max_nodes)
grpc_arg MakeChannelArg() const
void channelz(grpc_end2end_test_config config)
Json RenderJson() override
ChannelNode(std::string target, size_t channel_tracer_max_nodes, bool is_internal_channel)
#define GRPC_ERROR_UNREF(err)
void RecordCallSucceeded()
void PopulateChildRefs(Json::Object *json)
void RemoveChildSubchannel(intptr_t child_uuid)
std::map< intptr_t, RefCountedPtr< SocketNode > > child_sockets_
void Base64Escape(absl::string_view src, std::string *dest)
void AddChildListenSocket(RefCountedPtr< ListenSocketNode > node)
static bool to_string(zval *from)
grpc_arg grpc_channel_arg_pointer_create(char *name, void *value, const grpc_arg_pointer_vtable *vtable)
std::map< intptr_t, RefCountedPtr< ListenSocketNode > > child_listen_sockets_
virtual Json RenderJson()=0
CallCountingHelper call_counter_
std::string Dump(int indent=0) const
RefCountedPtr< Child > Ref() GRPC_MUST_USE_RESULT
absl::optional< Json > other
std::string local_certificate
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:52