ncteisen 7 жил өмнө
parent
commit
e36b2aacec

+ 1 - 0
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(

+ 1 - 9
src/core/lib/channel/channelz.h

@@ -83,12 +83,6 @@ class BaseNode : public RefCounted<BaseNode> {
   // 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) {

+ 7 - 4
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<grpc_core::channelz::ServerNode*>(base_node);
   return server_node->RenderServerSockets(start_socket_id);
 }