aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/channel/channelz_registry.cc
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-07-18 18:31:09 -0700
committerGravatar ncteisen <ncteisen@gmail.com>2018-07-19 08:15:49 -0700
commitbbee13661c82c13e2f1b728c94f9535112f54d92 (patch)
treeed60505ea44cdde179e837ff13050445afe7809b /src/core/lib/channel/channelz_registry.cc
parent481c1d57e7fc92f74c79b9aa0f7c8f0eaa51000b (diff)
Add channelz subchannel support
Diffstat (limited to 'src/core/lib/channel/channelz_registry.cc')
-rw-r--r--src/core/lib/channel/channelz_registry.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/lib/channel/channelz_registry.cc b/src/core/lib/channel/channelz_registry.cc
index 38496b3d78..aeeb6958e4 100644
--- a/src/core/lib/channel/channelz_registry.cc
+++ b/src/core/lib/channel/channelz_registry.cc
@@ -142,3 +142,19 @@ char* grpc_channelz_get_channel(intptr_t channel_id) {
grpc_json_destroy(top_level_json);
return json_str;
}
+
+char* grpc_channelz_get_subchannel(intptr_t subchannel_id) {
+ grpc_core::channelz::SubchannelNode* subchannel_node =
+ grpc_core::channelz::ChannelzRegistry::GetSubchannelNode(subchannel_id);
+ if (subchannel_node == nullptr) {
+ return nullptr;
+ }
+ grpc_json* top_level_json = grpc_json_create(GRPC_JSON_OBJECT);
+ grpc_json* json = top_level_json;
+ grpc_json* subchannel_json = subchannel_node->RenderJson();
+ subchannel_json->key = "subchannel";
+ grpc_json_link_child(json, subchannel_json, nullptr);
+ char* json_str = grpc_json_dump_to_string(top_level_json, 0);
+ grpc_json_destroy(top_level_json);
+ return json_str;
+}