aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/filters
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-06-29 12:32:45 -0700
committerGravatar Noah Eisen <ncteisen@google.com>2018-07-06 15:34:54 -0700
commitc9c1feffca295ea9b6232c40d6ac09c5b82343d5 (patch)
tree61f750c0148527d05d6afcc5cfad64f3efaa2c45 /src/core/ext/filters
parent230035180fef721ae80ce7c35b574938040f4f80 (diff)
Write ClientChannelNode in terms of client_channel
Diffstat (limited to 'src/core/ext/filters')
-rw-r--r--src/core/ext/filters/client_channel/client_channel_channelz.cc17
-rw-r--r--src/core/ext/filters/client_channel/client_channel_channelz.h6
2 files changed, 18 insertions, 5 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 c9bdce1604..e9534f2207 100644
--- a/src/core/ext/filters/client_channel/client_channel_channelz.cc
+++ b/src/core/ext/filters/client_channel/client_channel_channelz.cc
@@ -18,8 +18,10 @@
#include <grpc/support/port_platform.h>
+#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -37,12 +39,21 @@ static const grpc_arg_pointer_vtable client_channel_channelz_vtable = {
client_channel_channelz_copy, client_channel_channelz_destroy,
client_channel_channelz_cmp};
+ClientChannelNode::ClientChannelNode(grpc_channel* channel,
+ size_t channel_tracer_max_nodes)
+ : ChannelNode(channel, channel_tracer_max_nodes) {
+ client_channel_ =
+ grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
+ GPR_ASSERT(client_channel_->filter == &grpc_client_channel_filter);
+}
+
void ClientChannelNode::PopulateConnectivityState(grpc_json* json) {
grpc_connectivity_state state;
- if (channel() != nullptr) {
- state = grpc_channel_check_connectivity_state(channel(), false);
- } else {
+ if (ChannelIsDestroyed()) {
state = GRPC_CHANNEL_SHUTDOWN;
+ } else {
+ state =
+ grpc_client_channel_check_connectivity_state(client_channel_, false);
}
json = grpc_json_create_child(nullptr, json, "state", nullptr,
GRPC_JSON_OBJECT, false);
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 d339b4e9f6..a3f8b07fd6 100644
--- a/src/core/ext/filters/client_channel/client_channel_channelz.h
+++ b/src/core/ext/filters/client_channel/client_channel_channelz.h
@@ -31,8 +31,7 @@ namespace channelz {
// functionality like querying for connectivity_state and subchannel data.
class ClientChannelNode : public ChannelNode {
public:
- ClientChannelNode(grpc_channel* channel, size_t channel_tracer_max_nodes)
- : ChannelNode(channel, channel_tracer_max_nodes) {}
+ ClientChannelNode(grpc_channel* channel, size_t channel_tracer_max_nodes);
virtual ~ClientChannelNode() {}
// Override this functionality since client_channels have a notion of
@@ -42,6 +41,9 @@ class ClientChannelNode : public ChannelNode {
// Helper to create a channel arg to ensure this type of ChannelNode is
// created.
static grpc_arg CreateArg();
+
+ private:
+ grpc_channel_element* client_channel_;
};
RefCountedPtr<ChannelNode> MakeClientChannelNode(