diff options
author | 2018-10-24 15:27:57 -0700 | |
---|---|---|
committer | 2018-10-24 17:31:30 -0700 | |
commit | 693f46841a2d91b35ac3c9268b69f9ca33feee81 (patch) | |
tree | 459bbe3aaf5bc06a6452b2c89ff45df303037215 /src/core/lib/channel | |
parent | 0d5db17da6a639068183828dc4ed6e292fc97cc3 (diff) |
Add GetServer to core
Diffstat (limited to 'src/core/lib/channel')
-rw-r--r-- | src/core/lib/channel/channelz_registry.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/lib/channel/channelz_registry.cc b/src/core/lib/channel/channelz_registry.cc index 1fe2fad3e1..8fc1b58adc 100644 --- a/src/core/lib/channel/channelz_registry.cc +++ b/src/core/lib/channel/channelz_registry.cc @@ -222,6 +222,24 @@ char* grpc_channelz_get_servers(intptr_t start_server_id) { return grpc_core::channelz::ChannelzRegistry::GetServers(start_server_id); } +char* grpc_channelz_get_server(intptr_t server_id) { + grpc_core::channelz::BaseNode* server_node = + grpc_core::channelz::ChannelzRegistry::Get(server_id); + if (server_node == nullptr || + server_node->type() != + grpc_core::channelz::BaseNode::EntityType::kServer) { + return nullptr; + } + grpc_json* top_level_json = grpc_json_create(GRPC_JSON_OBJECT); + grpc_json* json = top_level_json; + grpc_json* channel_json = server_node->RenderJson(); + channel_json->key = "server"; + grpc_json_link_child(json, channel_json, nullptr); + char* json_str = grpc_json_dump_to_string(top_level_json, 0); + grpc_json_destroy(top_level_json); + return json_str; +} + char* grpc_channelz_get_server_sockets(intptr_t server_id, intptr_t start_socket_id) { grpc_core::channelz::BaseNode* base_node = |