aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/filters/client_channel/subchannel.cc
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-09-26 17:19:39 -0700
committerGravatar ncteisen <ncteisen@gmail.com>2018-09-26 17:19:39 -0700
commitf13a74312672aaf7c72e984f59dbd351dcda4e8a (patch)
tree840716a1eb06ae803131e116db3e7f4dcd8109df /src/core/ext/filters/client_channel/subchannel.cc
parentc3db7d21ce1dfbd6f25bde500af62fd1c197928f (diff)
Implement child socket support
Diffstat (limited to 'src/core/ext/filters/client_channel/subchannel.cc')
-rw-r--r--src/core/ext/filters/client_channel/subchannel.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc
index 57d0b3759f..29aeb06e7b 100644
--- a/src/core/ext/filters/client_channel/subchannel.cc
+++ b/src/core/ext/filters/client_channel/subchannel.cc
@@ -97,6 +97,8 @@ struct grpc_subchannel {
/** set during connection */
grpc_connect_out_args connecting_result;
+ grpc_transport* transport;
+
/** callback for connection finishing */
grpc_closure on_connected;
@@ -411,6 +413,13 @@ 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);
+ }
+}
+
static void continue_connect_locked(grpc_subchannel* c) {
grpc_connect_in_args args;
args.interested_parties = c->pollset_set;
@@ -621,6 +630,7 @@ static bool publish_transport_locked(grpc_subchannel* c) {
GRPC_ERROR_UNREF(error);
return false;
}
+ c->transport = c->connecting_result.transport;
memset(&c->connecting_result, 0, sizeof(c->connecting_result));
/* initialize state watcher */