|
@@ -104,6 +104,7 @@ struct channel_data {
|
|
uint32_t registered_method_max_probes;
|
|
uint32_t registered_method_max_probes;
|
|
grpc_closure finish_destroy_channel_closure;
|
|
grpc_closure finish_destroy_channel_closure;
|
|
grpc_closure channel_connectivity_changed;
|
|
grpc_closure channel_connectivity_changed;
|
|
|
|
+ intptr_t socket_uuid;
|
|
};
|
|
};
|
|
|
|
|
|
typedef struct shutdown_tag {
|
|
typedef struct shutdown_tag {
|
|
@@ -1016,7 +1017,7 @@ grpc_server* grpc_server_create(const grpc_channel_args* args, void* reserved) {
|
|
{GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
|
|
{GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
|
|
server->channelz_server =
|
|
server->channelz_server =
|
|
grpc_core::MakeRefCounted<grpc_core::channelz::ServerNode>(
|
|
grpc_core::MakeRefCounted<grpc_core::channelz::ServerNode>(
|
|
- channel_tracer_max_memory);
|
|
|
|
|
|
+ server, channel_tracer_max_memory);
|
|
server->channelz_server->AddTraceEvent(
|
|
server->channelz_server->AddTraceEvent(
|
|
grpc_core::channelz::ChannelTrace::Severity::Info,
|
|
grpc_core::channelz::ChannelTrace::Severity::Info,
|
|
grpc_slice_from_static_string("Server created"));
|
|
grpc_slice_from_static_string("Server created"));
|
|
@@ -1119,7 +1120,8 @@ void grpc_server_get_pollsets(grpc_server* server, grpc_pollset*** pollsets,
|
|
|
|
|
|
void grpc_server_setup_transport(grpc_server* s, grpc_transport* transport,
|
|
void grpc_server_setup_transport(grpc_server* s, grpc_transport* transport,
|
|
grpc_pollset* accepting_pollset,
|
|
grpc_pollset* accepting_pollset,
|
|
- const grpc_channel_args* args) {
|
|
|
|
|
|
+ const grpc_channel_args* args,
|
|
|
|
+ intptr_t socket_uuid) {
|
|
size_t num_registered_methods;
|
|
size_t num_registered_methods;
|
|
size_t alloc;
|
|
size_t alloc;
|
|
registered_method* rm;
|
|
registered_method* rm;
|
|
@@ -1139,6 +1141,7 @@ void grpc_server_setup_transport(grpc_server* s, grpc_transport* transport,
|
|
chand->server = s;
|
|
chand->server = s;
|
|
server_ref(s);
|
|
server_ref(s);
|
|
chand->channel = channel;
|
|
chand->channel = channel;
|
|
|
|
+ chand->socket_uuid = socket_uuid;
|
|
|
|
|
|
size_t cq_idx;
|
|
size_t cq_idx;
|
|
for (cq_idx = 0; cq_idx < s->cq_count; cq_idx++) {
|
|
for (cq_idx = 0; cq_idx < s->cq_count; cq_idx++) {
|
|
@@ -1213,6 +1216,20 @@ void grpc_server_setup_transport(grpc_server* s, grpc_transport* transport,
|
|
grpc_transport_perform_op(transport, op);
|
|
grpc_transport_perform_op(transport, op);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void grpc_server_populate_server_sockets(
|
|
|
|
+ grpc_server* s, grpc_core::channelz::ChildRefsList* server_sockets,
|
|
|
|
+ intptr_t start_idx) {
|
|
|
|
+ gpr_mu_lock(&s->mu_global);
|
|
|
|
+ channel_data* c = nullptr;
|
|
|
|
+ for (c = s->root_channel_data.next; c != &s->root_channel_data; c = c->next) {
|
|
|
|
+ intptr_t socket_uuid = c->socket_uuid;
|
|
|
|
+ if (socket_uuid >= start_idx) {
|
|
|
|
+ server_sockets->push_back(socket_uuid);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ gpr_mu_unlock(&s->mu_global);
|
|
|
|
+}
|
|
|
|
+
|
|
void done_published_shutdown(void* done_arg, grpc_cq_completion* storage) {
|
|
void done_published_shutdown(void* done_arg, grpc_cq_completion* storage) {
|
|
(void)done_arg;
|
|
(void)done_arg;
|
|
gpr_free(storage);
|
|
gpr_free(storage);
|