Check env variable
diff --git a/src/cpp/client/channel_cc.cc b/src/cpp/client/channel_cc.cc
index f06d25b..7b473d3 100644
--- a/src/cpp/client/channel_cc.cc
+++ b/src/cpp/client/channel_cc.cc
@@ -60,17 +60,19 @@
void* tag_;
};
-} // namespace
-
// Constantly watches channel connectivity status to reconnect a transiently
// disconnected channel. This is a temporary work-around before we have retry
// support.
class ChannelConnectivityWatcher {
public:
- ChannelConnectivityWatcher() {
- gpr_thd_options options = gpr_thd_options_default();
- gpr_thd_options_set_joinable(&options);
- gpr_thd_new(&thd_id_, &WatchStateChange, this, &options);
+ ChannelConnectivityWatcher() : thd_id_(0) {
+ const char* disabled_str =
+ std::getenv("GRPC_DISABLE_CHANNEL_CONNECTIVITY_WATCHER");
+ if (disabled_str == nullptr || strcmp(disabled_str, "1")) {
+ gpr_thd_options options = gpr_thd_options_default();
+ gpr_thd_options_set_joinable(&options);
+ gpr_thd_new(&thd_id_, &WatchStateChange, this, &options);
+ }
}
~ChannelConnectivityWatcher() {
@@ -114,9 +116,7 @@
}
void StartWatching(grpc_channel* channel) {
- const char* disabled_str =
- std::getenv("GRPC_DISABLE_CHANNEL_CONNECTIVITY_WATCHER");
- if (disabled_str == nullptr || strcmp(disabled_str, "1")) {
+ if (thd_id_ != 0) {
ChannelState* channel_state = new ChannelState(channel);
// The first grpc_channel_watch_connectivity_state() is not used to
// monitor the channel state change, but to hold a reference of the
@@ -146,7 +146,6 @@
CompletionQueue shutdown_cq_;
};
-namespace {
void WatchStateChange(void* arg) {
ChannelConnectivityWatcher* watcher =
static_cast<ChannelConnectivityWatcher*>(arg);