aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/client/channel_cc.cc
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2017-01-11 10:24:15 +0000
committerGravatar Muxi Yan <mxyan@google.com>2017-01-11 10:24:15 +0000
commite91344a36f5647c877474eb875471d814cc6f03f (patch)
tree47050dd2b9eed0eafd397dd0eefbc3797453608a /src/cpp/client/channel_cc.cc
parent123d0dbd614f6d6626295dec93764549e0e650ff (diff)
parent88a352cd0b4236b5e7483adb2ff2c68582d7cfbb (diff)
Merge remote-tracking branch 'upstream/master' into advance-cronet-version
Diffstat (limited to 'src/cpp/client/channel_cc.cc')
-rw-r--r--src/cpp/client/channel_cc.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/cpp/client/channel_cc.cc b/src/cpp/client/channel_cc.cc
index 5f1d00d2b4..357d8317ad 100644
--- a/src/cpp/client/channel_cc.cc
+++ b/src/cpp/client/channel_cc.cc
@@ -48,6 +48,7 @@
#include <grpc++/support/time.h>
#include <grpc/grpc.h>
#include <grpc/slice.h>
+#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/lib/profiling/timers.h"
@@ -61,6 +62,35 @@ Channel::Channel(const grpc::string& host, grpc_channel* channel)
Channel::~Channel() { grpc_channel_destroy(c_channel_); }
+namespace {
+
+grpc::string GetChannelInfoField(grpc_channel* channel,
+ grpc_channel_info* channel_info,
+ char*** channel_info_field) {
+ char* value = NULL;
+ memset(channel_info, 0, sizeof(*channel_info));
+ *channel_info_field = &value;
+ grpc_channel_get_info(channel, channel_info);
+ if (value == NULL) return "";
+ grpc::string result = value;
+ gpr_free(value);
+ return result;
+}
+
+} // namespace
+
+grpc::string Channel::GetLoadBalancingPolicyName() const {
+ grpc_channel_info channel_info;
+ return GetChannelInfoField(c_channel_, &channel_info,
+ &channel_info.lb_policy_name);
+}
+
+grpc::string Channel::GetServiceConfigJSON() const {
+ grpc_channel_info channel_info;
+ return GetChannelInfoField(c_channel_, &channel_info,
+ &channel_info.service_config_json);
+}
+
Call Channel::CreateCall(const RpcMethod& method, ClientContext* context,
CompletionQueue* cq) {
const bool kRegistered = method.channel_tag() && context->authority().empty();