Skip to content

Commit 47782b7

Browse files
authored
refactor(bigtable): use EndpointOption (#8069)
1 parent e671bf5 commit 47782b7

File tree

7 files changed

+59
-28
lines changed

7 files changed

+59
-28
lines changed

google/cloud/bigtable/admin_client.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -394,21 +394,15 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
394394
return impl_.BackgroundThreadsFactory();
395395
}
396396

397-
struct Traits {
398-
static std::string const& Endpoint(Options const& options) {
399-
return options.get<AdminEndpointOption>();
400-
}
401-
};
402-
403397
std::string project_;
404-
internal::CommonClient<Traits, btadmin::BigtableTableAdmin> impl_;
398+
internal::CommonClient<btadmin::BigtableTableAdmin> impl_;
405399
};
406400

407401
} // namespace
408402

409403
std::shared_ptr<AdminClient> MakeAdminClient(std::string project,
410404
Options options) {
411-
options = internal::DefaultOptions(std::move(options));
405+
options = internal::DefaultTableAdminOptions(std::move(options));
412406
bool tracing_enabled = google::cloud::internal::Contains(
413407
options.get<TracingComponentsOption>(), "rpc");
414408
auto tracing_options = options.get<GrpcTracingOptionsOption>();

google/cloud/bigtable/data_client.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,23 +169,17 @@ class DefaultDataClient : public DataClient {
169169
return impl_.BackgroundThreadsFactory();
170170
}
171171

172-
struct Traits {
173-
static std::string const& Endpoint(Options const& options) {
174-
return options.get<DataEndpointOption>();
175-
}
176-
};
177-
178172
std::string project_;
179173
std::string instance_;
180-
internal::CommonClient<Traits, btproto::Bigtable> impl_;
174+
internal::CommonClient<btproto::Bigtable> impl_;
181175
};
182176

183177
} // namespace
184178

185179
std::shared_ptr<DataClient> MakeDataClient(std::string project_id,
186180
std::string instance_id,
187181
Options options) {
188-
options = internal::DefaultOptions(std::move(options));
182+
options = internal::DefaultDataOptions(std::move(options));
189183
bool tracing_enabled = google::cloud::internal::Contains(
190184
options.get<TracingComponentsOption>(), "rpc");
191185
auto tracing_options = options.get<GrpcTracingOptionsOption>();

google/cloud/bigtable/instance_admin_client.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,21 +327,15 @@ class DefaultInstanceAdminClient : public InstanceAdminClient {
327327
return impl_.BackgroundThreadsFactory();
328328
}
329329

330-
struct Traits {
331-
static std::string const& Endpoint(Options const& options) {
332-
return options.get<InstanceAdminEndpointOption>();
333-
}
334-
};
335-
336330
std::string project_;
337-
internal::CommonClient<Traits, btadmin::BigtableInstanceAdmin> impl_;
331+
internal::CommonClient<btadmin::BigtableInstanceAdmin> impl_;
338332
};
339333

340334
} // anonymous namespace
341335

342336
std::shared_ptr<InstanceAdminClient> MakeInstanceAdminClient(
343337
std::string project, Options options) {
344-
options = internal::DefaultOptions(std::move(options));
338+
options = internal::DefaultInstanceAdminOptions(std::move(options));
345339
bool tracing_enabled = google::cloud::internal::Contains(
346340
options.get<TracingComponentsOption>(), "rpc");
347341
auto tracing_options = options.get<GrpcTracingOptionsOption>();

google/cloud/bigtable/internal/common_client.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,9 @@ void ScheduleChannelRefresh(
110110
* The class exposes the channels because they are needed for clients that
111111
* use more than one type of Stub.
112112
*
113-
* @tparam Traits encapsulates variations between the clients. Currently, which
114-
* `*_endpoint()` member function is used.
115113
* @tparam Interface the gRPC object returned by `Stub()`.
116114
*/
117-
template <typename Traits, typename Interface>
115+
template <typename Interface>
118116
class CommonClient {
119117
public:
120118
//@{
@@ -216,7 +214,7 @@ class CommonClient {
216214
auto args = google::cloud::internal::MakeChannelArguments(opts_);
217215
args.SetInt(GRPC_ARG_CHANNEL_ID, idx);
218216
auto res = grpc::CreateCustomChannel(
219-
Traits::Endpoint(opts_), opts_.get<GrpcCredentialOption>(), args);
217+
opts_.get<EndpointOption>(), opts_.get<GrpcCredentialOption>(), args);
220218
if (opts_.get<MaxConnectionRefreshOption>().count() == 0) {
221219
return res;
222220
}

google/cloud/bigtable/internal/defaults.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,21 @@ Options DefaultOptions(Options opts) {
156156
return opts;
157157
}
158158

159+
Options DefaultDataOptions(Options opts) {
160+
opts = DefaultOptions(std::move(opts));
161+
return opts.set<EndpointOption>(opts.get<DataEndpointOption>());
162+
}
163+
164+
Options DefaultInstanceAdminOptions(Options opts) {
165+
opts = DefaultOptions(std::move(opts));
166+
return opts.set<EndpointOption>(opts.get<InstanceAdminEndpointOption>());
167+
}
168+
169+
Options DefaultTableAdminOptions(Options opts) {
170+
opts = DefaultOptions(std::move(opts));
171+
return opts.set<EndpointOption>(opts.get<AdminEndpointOption>());
172+
}
173+
159174
} // namespace internal
160175
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
161176
} // namespace bigtable

google/cloud/bigtable/internal/defaults.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ int DefaultConnectionPoolSize();
4141
*/
4242
Options DefaultOptions(Options opts = {});
4343

44+
Options DefaultDataOptions(Options opts);
45+
46+
Options DefaultInstanceAdminOptions(Options opts);
47+
48+
Options DefaultTableAdminOptions(Options opts);
49+
4450
} // namespace internal
4551
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
4652
} // namespace bigtable

google/cloud/bigtable/internal/defaults_test.cc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,36 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) {
118118
EXPECT_THAT(*s, HasSubstr("test-prefix"));
119119
}
120120

121+
TEST(OptionsTest, DefaultDataOptions) {
122+
auto options =
123+
Options{}
124+
.set<DataEndpointOption>("data.googleapis.com")
125+
.set<AdminEndpointOption>("tableadmin.googleapis.com")
126+
.set<InstanceAdminEndpointOption>("instanceadmin.googleapis.com");
127+
options = DefaultDataOptions(std::move(options));
128+
EXPECT_EQ("data.googleapis.com", options.get<EndpointOption>());
129+
}
130+
131+
TEST(OptionsTest, DefaultInstanceAdminOptions) {
132+
auto options =
133+
Options{}
134+
.set<DataEndpointOption>("data.googleapis.com")
135+
.set<AdminEndpointOption>("tableadmin.googleapis.com")
136+
.set<InstanceAdminEndpointOption>("instanceadmin.googleapis.com");
137+
options = DefaultInstanceAdminOptions(std::move(options));
138+
EXPECT_EQ("instanceadmin.googleapis.com", options.get<EndpointOption>());
139+
}
140+
141+
TEST(OptionsTest, DefaultTableAdminOptions) {
142+
auto options =
143+
Options{}
144+
.set<DataEndpointOption>("data.googleapis.com")
145+
.set<AdminEndpointOption>("tableadmin.googleapis.com")
146+
.set<InstanceAdminEndpointOption>("instanceadmin.googleapis.com");
147+
options = DefaultTableAdminOptions(std::move(options));
148+
EXPECT_EQ("tableadmin.googleapis.com", options.get<EndpointOption>());
149+
}
150+
121151
TEST(EndpointEnvTest, EmulatorEnvOnly) {
122152
ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", "emulator-host:8000");
123153

0 commit comments

Comments
 (0)