From 9b0223f1c5b5b2e8eb4ad2763f19415a7f26b09f Mon Sep 17 00:00:00 2001 From: ncteisen Date: Wed, 3 Oct 2018 18:29:38 -0700 Subject: Add skeleton listen socket support --- src/core/lib/surface/server.cc | 14 +++++++++++++- src/core/lib/surface/server.h | 8 +++++++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src/core/lib/surface') diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index 3a536b07d7..35ab2c3bce 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -54,6 +54,7 @@ struct listener { size_t pollset_count); void (*destroy)(grpc_server* server, void* arg, grpc_closure* closure); struct listener* next; + intptr_t socket_uuid; grpc_closure destroy_done; }; @@ -1230,6 +1231,15 @@ void grpc_server_populate_server_sockets( gpr_mu_unlock(&s->mu_global); } +void grpc_server_populate_listen_sockets( + grpc_server* server, grpc_core::channelz::ChildRefsList* listen_sockets) { + gpr_mu_lock(&server->mu_global); + for (listener* l = server->listeners; l != nullptr; l = l->next) { + listen_sockets->push_back(l->socket_uuid); + } + gpr_mu_unlock(&server->mu_global); +} + void done_published_shutdown(void* done_arg, grpc_cq_completion* storage) { (void)done_arg; gpr_free(storage); @@ -1363,11 +1373,13 @@ void grpc_server_add_listener(grpc_server* server, void* arg, grpc_pollset** pollsets, size_t pollset_count), void (*destroy)(grpc_server* server, void* arg, - grpc_closure* on_done)) { + grpc_closure* on_done), + intptr_t socket_uuid) { listener* l = static_cast(gpr_malloc(sizeof(listener))); l->arg = arg; l->start = start; l->destroy = destroy; + l->socket_uuid = socket_uuid; l->next = server->listeners; server->listeners = l; } diff --git a/src/core/lib/surface/server.h b/src/core/lib/surface/server.h index 1b401b0466..33c205417e 100644 --- a/src/core/lib/surface/server.h +++ b/src/core/lib/surface/server.h @@ -39,7 +39,8 @@ void grpc_server_add_listener(grpc_server* server, void* listener, grpc_pollset** pollsets, size_t npollsets), void (*destroy)(grpc_server* server, void* arg, - grpc_closure* on_done)); + grpc_closure* on_done), + intptr_t socket_uuid); /* Setup a transport - creates a channel stack, binds the transport to the server */ @@ -48,10 +49,15 @@ void grpc_server_setup_transport(grpc_server* server, grpc_transport* transport, const grpc_channel_args* args, intptr_t socket_uuid); +/* fills in the uuids of all sockets used for connections on this server */ void grpc_server_populate_server_sockets( grpc_server* server, grpc_core::channelz::ChildRefsList* server_sockets, intptr_t start_idx); +/* fills in the uuids of all listen sockets on this server */ +void grpc_server_populate_listen_sockets( + grpc_server* server, grpc_core::channelz::ChildRefsList* listen_sockets); + grpc_core::channelz::ServerNode* grpc_server_get_channelz_node( grpc_server* server); -- cgit v1.2.3