Couchbase C++ SDK 1.2.0 (rev. c2439a4)
Loading...
Searching...
No Matches
cluster_options.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright 2020-Present Couchbase, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#pragma once
19
26#include <couchbase/error.hxx>
35
36#include <functional>
37#include <stdexcept>
38#include <string>
39#include <system_error>
40#include <vector>
41
42namespace couchbase
43{
44#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
45namespace crypto
46{
47class manager;
48} // namespace crypto
49#endif
51{
52public:
61 cluster_options(std::string username, std::string password)
62 : username_{ std::move(username) }
63 , password_{ std::move(password) }
64 {
65 }
66
75 : username_{ std::move(authenticator.username_) }
76 , password_{ std::move(authenticator.password_) }
77 {
78 if (authenticator.ldap_compatible_) {
79 sasl_mechanisms_ = { { "PLAIN" } };
80 }
81 }
82
91 : certificate_path_{ std::move(authenticator.certificate_path_) }
92 , key_path_{ std::move(authenticator.key_path_) }
93 {
94 }
95
109 void apply_profile(const std::string& profile_name)
110 {
112 }
113
122 [[nodiscard]] auto compression() -> compression_options&
123 {
124 return compression_;
125 }
126
135 [[nodiscard]] auto timeouts() -> timeout_options&
136 {
137 return timeouts_;
138 }
139
148 [[nodiscard]] auto dns() -> dns_options&
149 {
150 return dns_;
151 }
152
161 [[nodiscard]] auto security() -> security_options&
162 {
163 return security_;
164 }
165
174 [[nodiscard]] auto network() -> network_options&
175 {
176 return network_;
177 }
178
187 [[nodiscard]] auto metrics() -> metrics_options&
188 {
189 return metrics_;
190 }
191
200 [[nodiscard]] auto tracing() -> tracing_options&
201 {
202 return tracing_;
203 }
204
213 [[nodiscard]] auto behavior() -> behavior_options&
214 {
215 return behavior_;
216 }
217
227 {
228 return transactions_;
229 }
230
240 {
241 return application_telemetry_;
242 }
243
252 auto default_retry_strategy(std::shared_ptr<retry_strategy> strategy) -> cluster_options&
253 {
254 if (strategy == nullptr) {
255 throw std::invalid_argument("retry strategy cannot be null");
256 }
257 default_retry_strategy_ = std::move(strategy);
258 return *this;
259 }
260
261 auto crypto_manager(std::shared_ptr<crypto::manager> crypto_manager) -> cluster_options&
262 {
263 if (crypto_manager == nullptr) {
264 throw std::invalid_argument("crypto manager cannot be null");
265 }
266 crypto_manager_ = std::move(crypto_manager);
267 return *this;
268 }
269
289
290 [[nodiscard]] auto build() const -> built
291 {
292 return {
293 username_,
294 password_,
295 certificate_path_,
296 key_path_,
297 sasl_mechanisms_,
298 compression_.build(),
299 timeouts_.build(),
300 dns_.build(),
301 security_.build(),
302 network_.build(),
303 metrics_.build(),
304 tracing_.build(),
305 behavior_.build(),
306 transactions_.build(),
307 default_retry_strategy_,
308 application_telemetry_.build(),
309 crypto_manager_,
310 };
311 }
312
313private:
314 std::string username_{};
315 std::string password_{};
316 std::string certificate_path_{};
317 std::string key_path_{};
318 std::optional<std::vector<std::string>> sasl_mechanisms_{};
319
320 compression_options compression_{};
321 timeout_options timeouts_{};
322 dns_options dns_{};
323 security_options security_{};
324 network_options network_{};
325 metrics_options metrics_{};
326 tracing_options tracing_{};
327 behavior_options behavior_{};
328 transactions::transactions_config transactions_{};
329 std::shared_ptr<retry_strategy> default_retry_strategy_{ nullptr };
330 application_telemetry_options application_telemetry_{};
331 std::shared_ptr<crypto::manager> crypto_manager_{};
332};
333
334#ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
335class cluster;
336#endif
337
344using cluster_connect_handler = std::function<void(error, cluster)>;
345} // namespace couchbase
Definition application_telemetry_options.hxx:27
Definition behavior_options.hxx:25
Definition certificate_authenticator.hxx:25
auto behavior() -> behavior_options &
Returns misc options that affects cluster behavior.
Definition cluster_options.hxx:213
cluster_options(password_authenticator authenticator)
Definition cluster_options.hxx:74
cluster_options(certificate_authenticator authenticator)
Definition cluster_options.hxx:90
cluster_options(std::string username, std::string password)
Definition cluster_options.hxx:61
auto application_telemetry() -> application_telemetry_options &
Returns the Application Telemetry options.
Definition cluster_options.hxx:239
auto tracing() -> tracing_options &
Returns tracing options.
Definition cluster_options.hxx:200
auto build() const -> built
Definition cluster_options.hxx:290
auto default_retry_strategy(std::shared_ptr< retry_strategy > strategy) -> cluster_options &
Override default retry strategy.
Definition cluster_options.hxx:252
auto security() -> security_options &
Returns security options (including TLS)
Definition cluster_options.hxx:161
void apply_profile(const std::string &profile_name)
Apply settings profile by name.
Definition cluster_options.hxx:109
auto network() -> network_options &
Returns network options.
Definition cluster_options.hxx:174
auto dns() -> dns_options &
Returns options for DNS-SRV bootstrap.
Definition cluster_options.hxx:148
auto compression() -> compression_options &
Returns compression options.
Definition cluster_options.hxx:122
auto crypto_manager(std::shared_ptr< crypto::manager > crypto_manager) -> cluster_options &
Definition cluster_options.hxx:261
auto timeouts() -> timeout_options &
Returns various timeout options.
Definition cluster_options.hxx:135
auto transactions() -> transactions::transactions_config &
Returns the transactions options which effect the transactions behavior.
Definition cluster_options.hxx:226
auto metrics() -> metrics_options &
Returns metrics and observability options.
Definition cluster_options.hxx:187
The cluster is the main entry point when connecting to a Couchbase cluster.
Definition cluster.hxx:60
Definition compression_options.hxx:25
static void apply_profile(const std::string &name, couchbase::cluster_options &options)
Apply a profile to an instance of cluster_options.
Definition dns_options.hxx:28
Definition error.hxx:30
Definition metrics_options.hxx:29
Definition network_options.hxx:30
Definition password_authenticator.hxx:25
Definition security_options.hxx:28
Definition timeout_options.hxx:26
Definition tracing_options.hxx:29
Configuration parameters for transactions.
Definition transactions_config.hxx:43
Definition internal.hxx:27
Represents a single item from the result of scan()
Definition allow_querying_search_index_options.hxx:28
std::function< void(error, cluster)> cluster_connect_handler
The signature for the handler of the connect()
Definition cluster_options.hxx:344
Definition application_telemetry_options.hxx:102
Definition behavior_options.hxx:76
Definition cluster_options.hxx:270
std::string password
Definition cluster_options.hxx:272
metrics_options::built metrics
Definition cluster_options.hxx:281
network_options::built network
Definition cluster_options.hxx:280
compression_options::built compression
Definition cluster_options.hxx:276
std::shared_ptr< retry_strategy > default_retry_strategy
Definition cluster_options.hxx:285
security_options::built security
Definition cluster_options.hxx:279
std::string username
Definition cluster_options.hxx:271
timeout_options::built timeouts
Definition cluster_options.hxx:277
transactions::transactions_config::built transactions
Definition cluster_options.hxx:284
std::optional< std::vector< std::string > > allowed_sasl_mechanisms
Definition cluster_options.hxx:275
std::string certificate_path
Definition cluster_options.hxx:273
std::string key_path
Definition cluster_options.hxx:274
tracing_options::built tracing
Definition cluster_options.hxx:282
std::shared_ptr< crypto::manager > crypto_manager
Definition cluster_options.hxx:287
behavior_options::built behavior
Definition cluster_options.hxx:283
dns_options::built dns
Definition cluster_options.hxx:278
application_telemetry_options::built application_telemetry
Definition cluster_options.hxx:286
Definition compression_options.hxx:45
Definition dns_options.hxx:45
Definition metrics_options.hxx:51
Definition network_options.hxx:117
Definition security_options.hxx:54
Definition timeout_options.hxx:119
Definition tracing_options.hxx:127