diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index 91de1be489c..9dbd0958436 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -1256,6 +1256,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, inproc_transports_create(&server_transport, server_args, &client_transport, client_args); + // TODO(ncteisen): design and support channelz GetSocket for inproc. grpc_server_setup_transport(server, server_transport, nullptr, server_args, 0); grpc_channel* channel = grpc_channel_create( diff --git a/src/core/lib/channel/channelz.h b/src/core/lib/channel/channelz.h index daec2d7c100..72b5fe6b6b6 100644 --- a/src/core/lib/channel/channelz.h +++ b/src/core/lib/channel/channelz.h @@ -83,12 +83,6 @@ class BaseNode : public RefCounted { // All children must implement this function. virtual grpc_json* RenderJson() GRPC_ABSTRACT; - // Fat interface for functionality that will only ever be called on Servers. - // All other channelz entities will assert false. - virtual char* RenderServerSockets(intptr_t start_socket_id) { - GPR_ASSERT(false); - } - // Renders the json and returns allocated string that must be freed by the // caller. char* RenderJsonString(); @@ -199,9 +193,7 @@ class ServerNode : public BaseNode { grpc_json* RenderJson() override; - // Server overrides this functionality to populate the JSON with - // the sockets it owns. - char* RenderServerSockets(intptr_t start_socket_id) override; + char* RenderServerSockets(intptr_t start_socket_id); // proxy methods to composed classes. void AddTraceEvent(ChannelTrace::Severity severity, grpc_slice data) { diff --git a/src/core/lib/channel/channelz_registry.cc b/src/core/lib/channel/channelz_registry.cc index 820ed7bf8dc..edf9e318fd3 100644 --- a/src/core/lib/channel/channelz_registry.cc +++ b/src/core/lib/channel/channelz_registry.cc @@ -162,13 +162,16 @@ char* grpc_channelz_get_servers(intptr_t start_server_id) { char* grpc_channelz_get_server_sockets(intptr_t server_id, intptr_t start_socket_id) { - grpc_core::channelz::BaseNode* server_node = + grpc_core::channelz::BaseNode* base_node = grpc_core::channelz::ChannelzRegistry::Get(server_id); - if (server_node == nullptr || - server_node->type() != - grpc_core::channelz::BaseNode::EntityType::kServer) { + if (base_node == nullptr || + base_node->type() != grpc_core::channelz::BaseNode::EntityType::kServer) { return nullptr; } + // This cast is ok since we have just checked to make sure base_node is + // actually a server node + grpc_core::channelz::ServerNode* server_node = + static_cast(base_node); return server_node->RenderServerSockets(start_socket_id); }