aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ext/filters/client_channel/client_channel_channelz.cc29
-rw-r--r--src/core/ext/filters/client_channel/client_channel_channelz.h5
-rw-r--r--src/core/ext/filters/client_channel/subchannel.cc16
-rw-r--r--src/core/ext/filters/client_channel/subchannel.h4
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.cc9
-rw-r--r--src/core/ext/transport/cronet/transport/cronet_transport.cc5
-rw-r--r--src/core/ext/transport/inproc/inproc_transport.cc5
-rw-r--r--src/core/lib/transport/transport.cc5
-rw-r--r--src/core/lib/transport/transport.h10
-rw-r--r--src/core/lib/transport/transport_impl.h3
10 files changed, 40 insertions, 51 deletions
diff --git a/src/core/ext/filters/client_channel/client_channel_channelz.cc b/src/core/ext/filters/client_channel/client_channel_channelz.cc
index 4fedcbcbb6..8d02304d19 100644
--- a/src/core/ext/filters/client_channel/client_channel_channelz.cc
+++ b/src/core/ext/filters/client_channel/client_channel_channelz.cc
@@ -136,23 +136,6 @@ void SubchannelNode::PopulateConnectivityState(grpc_json* json) {
false);
}
-void SubchannelNode::PopulateChildSockets(grpc_json* json) {
- ChildRefsList child_sockets;
- grpc_json* json_iterator = nullptr;
- grpc_subchannel_populate_child_sockets(subchannel_, &child_sockets);
- if (!child_sockets.empty()) {
- grpc_json* array_parent = grpc_json_create_child(
- nullptr, json, "socketRef", nullptr, GRPC_JSON_ARRAY, false);
- for (size_t i = 0; i < child_sockets.size(); ++i) {
- json_iterator =
- grpc_json_create_child(json_iterator, array_parent, nullptr, nullptr,
- GRPC_JSON_OBJECT, false);
- grpc_json_add_number_string_child(json_iterator, nullptr, "socketId",
- child_sockets[i]);
- }
- }
-}
-
grpc_json* SubchannelNode::RenderJson() {
grpc_json* top_level_json = grpc_json_create(GRPC_JSON_OBJECT);
grpc_json* json = top_level_json;
@@ -184,7 +167,17 @@ grpc_json* SubchannelNode::RenderJson() {
// ask CallCountingHelper to populate trace and call count data.
call_counter_.PopulateCallCounts(json);
json = top_level_json;
- PopulateChildSockets(json);
+ // populate the child socket.
+ intptr_t socket_uuid = grpc_subchannel_get_child_socket_uuid(subchannel_);
+ if (socket_uuid != 0) {
+ grpc_json* array_parent = grpc_json_create_child(
+ nullptr, json, "socketRef", nullptr, GRPC_JSON_ARRAY, false);
+ json_iterator =
+ grpc_json_create_child(json_iterator, array_parent, nullptr, nullptr,
+ GRPC_JSON_OBJECT, false);
+ grpc_json_add_number_string_child(json_iterator, nullptr, "socketId",
+ socket_uuid);
+ }
return top_level_json;
}
diff --git a/src/core/ext/filters/client_channel/client_channel_channelz.h b/src/core/ext/filters/client_channel/client_channel_channelz.h
index a63df00f9f..a6dae16522 100644
--- a/src/core/ext/filters/client_channel/client_channel_channelz.h
+++ b/src/core/ext/filters/client_channel/client_channel_channelz.h
@@ -31,6 +31,11 @@ typedef struct grpc_subchannel grpc_subchannel;
namespace grpc_core {
+// TODO(ncteisen), this only contains the uuids of the children for now,
+// since that is all that is strictly needed. In a future enhancement we will
+// add human readable names as in the channelz.proto
+typedef InlinedVector<intptr_t, 10> ChildRefsList;
+
namespace channelz {
// Subtype of ChannelNode that overrides and provides client_channel specific
diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc
index 29aeb06e7b..4c33636646 100644
--- a/src/core/ext/filters/client_channel/subchannel.cc
+++ b/src/core/ext/filters/client_channel/subchannel.cc
@@ -97,7 +97,9 @@ struct grpc_subchannel {
/** set during connection */
grpc_connect_out_args connecting_result;
- grpc_transport* transport;
+ /** uuid of this subchannel's socket. 0 if this subchannel is not
+ connected */
+ intptr_t socket_uuid;
/** callback for connection finishing */
grpc_closure on_connected;
@@ -256,6 +258,7 @@ static void disconnect(grpc_subchannel* c) {
c->disconnected = true;
grpc_connector_shutdown(c->connector, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Subchannel disconnected"));
+ c->socket_uuid = 0;
c->connected_subchannel.reset();
gpr_mu_unlock(&c->mu);
}
@@ -413,11 +416,9 @@ grpc_core::channelz::SubchannelNode* grpc_subchannel_get_channelz_node(
return subchannel->channelz_subchannel.get();
}
-void grpc_subchannel_populate_child_sockets(
- grpc_subchannel* subchannel, grpc_core::ChildRefsList* child_sockets) {
- if (subchannel->transport != nullptr) {
- grpc_transport_populate_sockets(subchannel->transport, child_sockets);
- }
+intptr_t grpc_subchannel_get_child_socket_uuid(
+ grpc_subchannel* subchannel) {
+ return subchannel->socket_uuid;
}
static void continue_connect_locked(grpc_subchannel* c) {
@@ -578,6 +579,7 @@ static void on_connected_subchannel_connectivity_changed(void* p,
grpc_connectivity_state_name(
connected_subchannel_watcher->connectivity_state));
}
+ c->socket_uuid = 0;
c->connected_subchannel.reset();
grpc_connectivity_state_set(&c->state_tracker,
GRPC_CHANNEL_TRANSIENT_FAILURE,
@@ -630,7 +632,7 @@ static bool publish_transport_locked(grpc_subchannel* c) {
GRPC_ERROR_UNREF(error);
return false;
}
- c->transport = c->connecting_result.transport;
+ c->socket_uuid = grpc_transport_get_socket_uuid(c->connecting_result.transport);
memset(&c->connecting_result, 0, sizeof(c->connecting_result));
/* initialize state watcher */
diff --git a/src/core/ext/filters/client_channel/subchannel.h b/src/core/ext/filters/client_channel/subchannel.h
index 2cf5067fc2..67a2d49711 100644
--- a/src/core/ext/filters/client_channel/subchannel.h
+++ b/src/core/ext/filters/client_channel/subchannel.h
@@ -126,8 +126,8 @@ void grpc_subchannel_call_unref(
grpc_core::channelz::SubchannelNode* grpc_subchannel_get_channelz_node(
grpc_subchannel* subchannel);
-void grpc_subchannel_populate_child_sockets(
- grpc_subchannel* subchannel, grpc_core::ChildRefsList* child_sockets);
+intptr_t grpc_subchannel_get_child_socket_uuid(
+ grpc_subchannel* subchannel);
/** Returns a pointer to the parent data associated with \a subchannel_call.
The data will be of the size specified in \a parent_data_size
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
index 202da652de..45ef4161f7 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
@@ -3157,12 +3157,13 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
return (reinterpret_cast<grpc_chttp2_transport*>(t))->ep;
}
-static void populate_sockets(grpc_transport* transport,
- grpc_core::ChildRefsList* child_sockets) {
+static intptr_t get_socket_uuid(grpc_transport* transport) {
grpc_chttp2_transport* t =
reinterpret_cast<grpc_chttp2_transport*>(transport);
if (t->channelz_socket != nullptr) {
- child_sockets->push_back(t->channelz_socket->uuid());
+ return t->channelz_socket->uuid();
+ } else {
+ return 0;
}
}
@@ -3176,7 +3177,7 @@ static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
destroy_stream,
destroy_transport,
chttp2_get_endpoint,
- populate_sockets};
+ get_socket_uuid};
static const grpc_transport_vtable* get_vtable(void) { return &vtable; }
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc
index f3826a78de..bb20d9db08 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.cc
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc
@@ -1439,8 +1439,7 @@ static grpc_endpoint* get_endpoint(grpc_transport* gt) { return nullptr; }
static void perform_op(grpc_transport* gt, grpc_transport_op* op) {}
-static void populate_sockets(grpc_transport* t,
- grpc_core::ChildRefsList* child_sockets) {}
+static intptr_t get_socket_uuid(grpc_transport* t) { return 0; }
static const grpc_transport_vtable grpc_cronet_vtable = {
sizeof(stream_obj),
@@ -1453,7 +1452,7 @@ static const grpc_transport_vtable grpc_cronet_vtable = {
destroy_stream,
destroy_transport,
get_endpoint,
- populate_sockets};
+ get_socket_uuid};
grpc_transport* grpc_create_cronet_transport(void* engine, const char* target,
const grpc_channel_args* args,
diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc
index 2deaacb2e0..56951f8338 100644
--- a/src/core/ext/transport/inproc/inproc_transport.cc
+++ b/src/core/ext/transport/inproc/inproc_transport.cc
@@ -1170,8 +1170,7 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* gs,
static grpc_endpoint* get_endpoint(grpc_transport* t) { return nullptr; }
-static void populate_sockets(grpc_transport* t,
- grpc_core::ChildRefsList* child_sockets) {}
+static intptr_t get_socket_uuid(grpc_transport* t) { return 0; }
/*******************************************************************************
* GLOBAL INIT AND DESTROY
@@ -1197,7 +1196,7 @@ static const grpc_transport_vtable inproc_vtable = {
sizeof(inproc_stream), "inproc", init_stream,
set_pollset, set_pollset_set, perform_stream_op,
perform_transport_op, destroy_stream, destroy_transport,
- get_endpoint, populate_sockets};
+ get_endpoint, get_socket_uuid};
/*******************************************************************************
* Main inproc transport functions
diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc
index 2e7c40dda4..c8fdbb4de2 100644
--- a/src/core/lib/transport/transport.cc
+++ b/src/core/lib/transport/transport.cc
@@ -199,9 +199,8 @@ grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport) {
return transport->vtable->get_endpoint(transport);
}
-void grpc_transport_populate_sockets(grpc_transport* transport,
- grpc_core::ChildRefsList* child_sockets) {
- return transport->vtable->populate_sockets(transport, child_sockets);
+intptr_t grpc_transport_get_socket_uuid(grpc_transport* transport) {
+ return transport->vtable->get_socket_uuid(transport);
}
// This comment should be sung to the tune of
diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h
index 93445ebd05..aad133f6c3 100644
--- a/src/core/lib/transport/transport.h
+++ b/src/core/lib/transport/transport.h
@@ -39,13 +39,6 @@
#define GRPC_PROTOCOL_VERSION_MIN_MAJOR 2
#define GRPC_PROTOCOL_VERSION_MIN_MINOR 1
-namespace grpc_core {
-// TODO(ncteisen), this only contains the uuids of the children for now,
-// since that is all that is strictly needed. In a future enhancement we will
-// add human readable names as in the channelz.proto
-typedef InlinedVector<intptr_t, 10> ChildRefsList;
-} // namespace grpc_core
-
/* forward declarations */
typedef struct grpc_transport grpc_transport;
@@ -373,8 +366,7 @@ void grpc_transport_destroy(grpc_transport* transport);
/* Get the endpoint used by \a transport */
grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport);
-void grpc_transport_populate_sockets(grpc_transport* transport,
- grpc_core::ChildRefsList* child_sockets);
+intptr_t grpc_transport_get_socket_uuid(grpc_transport* transport);
/* Allocate a grpc_transport_op, and preconfigure the on_consumed closure to
\a on_consumed and then delete the returned transport op */
diff --git a/src/core/lib/transport/transport_impl.h b/src/core/lib/transport/transport_impl.h
index 7ae59a1d17..d609470ef0 100644
--- a/src/core/lib/transport/transport_impl.h
+++ b/src/core/lib/transport/transport_impl.h
@@ -61,8 +61,7 @@ typedef struct grpc_transport_vtable {
/* implementation of grpc_transport_get_endpoint */
grpc_endpoint* (*get_endpoint)(grpc_transport* self);
- void (*populate_sockets)(grpc_transport* self,
- grpc_core::ChildRefsList* child_sockets);
+ intptr_t (*get_socket_uuid)(grpc_transport* self);
} grpc_transport_vtable;
/* an instance of a grpc transport */