couchbase 3.4.2 → 3.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/couchbase/CMakeLists.txt +57 -7
- data/ext/couchbase/cmake/Documentation.cmake +0 -1
- data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
- data/ext/couchbase/cmake/Testing.cmake +12 -4
- data/ext/couchbase/cmake/build_config.hxx.in +3 -0
- data/ext/couchbase/core/bucket.cxx +3 -2
- data/ext/couchbase/core/bucket.hxx +9 -0
- data/ext/couchbase/core/cluster.hxx +17 -0
- data/ext/couchbase/core/cluster_options.cxx +2 -2
- data/ext/couchbase/core/cluster_options.hxx +4 -6
- data/ext/couchbase/core/cluster_options_fwd.hxx +26 -0
- data/ext/couchbase/core/config_profile.hxx +1 -54
- data/ext/couchbase/core/config_profiles.cxx +79 -0
- data/ext/couchbase/core/config_profiles.hxx +56 -0
- data/ext/couchbase/core/error_context/search.hxx +1 -1
- data/ext/couchbase/core/impl/analytics.cxx +1 -0
- data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
- data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
- data/ext/couchbase/core/impl/cluster.cxx +2 -0
- data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/date_range.cxx +89 -0
- data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
- data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
- data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
- data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
- data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
- data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
- data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
- data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
- data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
- data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
- data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
- data/ext/couchbase/core/impl/match_query.cxx +59 -0
- data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
- data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
- data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
- data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
- data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
- data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
- data/ext/couchbase/core/impl/search.cxx +191 -0
- data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
- data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
- data/ext/couchbase/core/impl/search_result.cxx +66 -0
- data/ext/couchbase/core/impl/search_row.cxx +74 -0
- data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
- data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
- data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
- data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
- data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
- data/ext/couchbase/core/impl/term_facet.cxx +36 -0
- data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/term_query.cxx +56 -0
- data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
- data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
- data/ext/couchbase/core/io/http_context.hxx +1 -1
- data/ext/couchbase/core/io/http_session.hxx +10 -0
- data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
- data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
- data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
- data/ext/couchbase/core/json_string.hxx +5 -0
- data/ext/couchbase/core/meta/version.cxx +18 -4
- data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
- data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
- data/ext/couchbase/core/operations/document_append.hxx +1 -1
- data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
- data/ext/couchbase/core/operations/document_exists.hxx +1 -1
- data/ext/couchbase/core/operations/document_get.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/core/operations/document_increment.hxx +1 -1
- data/ext/couchbase/core/operations/document_insert.hxx +1 -1
- data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
- data/ext/couchbase/core/operations/document_query.cxx +2 -0
- data/ext/couchbase/core/operations/document_query.hxx +6 -0
- data/ext/couchbase/core/operations/document_remove.hxx +1 -1
- data/ext/couchbase/core/operations/document_replace.hxx +1 -1
- data/ext/couchbase/core/operations/document_search.cxx +4 -1
- data/ext/couchbase/core/operations/document_search.hxx +2 -1
- data/ext/couchbase/core/operations/document_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
- data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
- data/ext/couchbase/core/operations/document_view.hxx +1 -0
- data/ext/couchbase/core/protocol/client_request.hxx +11 -2
- data/ext/couchbase/core/public_fwd.hxx +21 -0
- data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
- data/ext/couchbase/core/topology/configuration.cxx +15 -2
- data/ext/couchbase/core/topology/configuration.hxx +5 -1
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
- data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
- data/ext/couchbase/core/utils/connection_string.cxx +17 -0
- data/ext/couchbase/core/utils/json.cxx +4 -1
- data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
- data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
- data/ext/couchbase/couchbase/cluster.hxx +42 -1
- data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
- data/ext/couchbase/couchbase/date_range.hxx +69 -0
- data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
- data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
- data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
- data/ext/couchbase/couchbase/error_context.hxx +7 -6
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
- data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
- data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
- data/ext/couchbase/couchbase/geo_point.hxx +32 -0
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
- data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
- data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_operator.hxx +45 -0
- data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
- data/ext/couchbase/couchbase/match_query.hxx +163 -0
- data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
- data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
- data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
- data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
- data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
- data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
- data/ext/couchbase/couchbase/scope.hxx +40 -0
- data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
- data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
- data/ext/couchbase/couchbase/search_facet.hxx +60 -0
- data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
- data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
- data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
- data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
- data/ext/couchbase/couchbase/search_options.hxx +509 -0
- data/ext/couchbase/couchbase/search_query.hxx +69 -0
- data/ext/couchbase/couchbase/search_result.hxx +77 -0
- data/ext/couchbase/couchbase/search_row.hxx +104 -0
- data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
- data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
- data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
- data/ext/couchbase/couchbase/search_sort.hxx +58 -0
- data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
- data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
- data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
- data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
- data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
- data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
- data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
- data/ext/couchbase/couchbase/security_options.hxx +3 -0
- data/ext/couchbase/couchbase/term_facet.hxx +48 -0
- data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/term_query.hxx +151 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
- data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
- data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
- data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
- data/ext/couchbase/couchbase/transactions/attempt_context.hxx +67 -0
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
- data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
- data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
- data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
- data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
- data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
- data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
- data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
- data/ext/couchbase/couchbase/transactions.hxx +34 -1
- data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
- data/ext/couchbase/test/CMakeLists.txt +7 -5
- data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
- data/ext/couchbase/test/test_helper.hxx +5 -5
- data/ext/couchbase/test/test_integration_analytics.cxx +28 -6
- data/ext/couchbase/test/test_integration_collections.cxx +7 -3
- data/ext/couchbase/test/test_integration_connect.cxx +7 -3
- data/ext/couchbase/test/test_integration_crud.cxx +13 -3
- data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
- data/ext/couchbase/test/test_integration_durability.cxx +12 -7
- data/ext/couchbase/test/test_integration_examples.cxx +283 -11
- data/ext/couchbase/test/test_integration_management.cxx +147 -91
- data/ext/couchbase/test/test_integration_query.cxx +68 -10
- data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
- data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
- data/ext/couchbase/test/test_integration_search.cxx +22 -2
- data/ext/couchbase/test/test_integration_subdoc.cxx +62 -11
- data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
- data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
- data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
- data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
- data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +17 -5
- data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
- data/ext/couchbase/test/test_unit_config_profiles.cxx +1 -1
- data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
- data/ext/couchbase/test/test_unit_search.cxx +427 -0
- data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
- data/ext/couchbase/test/test_unit_utils.cxx +8 -4
- data/ext/couchbase.cxx +58 -16
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/authenticator.rb +0 -1
- data/lib/couchbase/cluster.rb +0 -4
- data/lib/couchbase/config_profiles.rb +1 -1
- data/lib/couchbase/json_transcoder.rb +12 -5
- data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
- data/lib/couchbase/management/query_index_manager.rb +70 -5
- data/lib/couchbase/raw_binary_transcoder.rb +37 -0
- data/lib/couchbase/raw_json_transcoder.rb +38 -0
- data/lib/couchbase/raw_string_transcoder.rb +40 -0
- data/lib/couchbase/search_options.rb +5 -0
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/version.rb +1 -1
- metadata +139 -11
- data/ext/couchbase/core/config_profile.cxx +0 -47
- /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 573df37049b91d6dc00b674904dbda7883a4a20e7078191fc01f3b29f139df13
|
4
|
+
data.tar.gz: ec07bdbe1a3cdd5caab78b7bc4af3e525d0dba25e54e8bfb13b5d07203c0361a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b945f9a1942520c04fb22810049bda99e4daecccbadab60c9df474ec9d606a92f253f56e815739e3d64c927727d83d74265973fa72a6493ab38cc27df5f0913
|
7
|
+
data.tar.gz: 7cfa5628c2dc3a4c43741e139e064ac20f1085fd446f3b10cc480fc622464d0396cfa31d470cdca9c7c8323bb37d6b38ef1200c4b8d4b511fea0642a56f699d5
|
data/README.md
CHANGED
@@ -80,6 +80,7 @@ add_subdirectory(core/tracing)
|
|
80
80
|
add_subdirectory(core/metrics)
|
81
81
|
|
82
82
|
set(couchbase_cxx_client_FILES
|
83
|
+
${CMAKE_CURRENT_BINARY_DIR}/generated/mozilla_ca_bundle.cxx
|
83
84
|
core/agent.cxx
|
84
85
|
core/agent_config.cxx
|
85
86
|
core/agent_group.cxx
|
@@ -91,7 +92,7 @@ set(couchbase_cxx_client_FILES
|
|
91
92
|
core/cluster_agent_config.cxx
|
92
93
|
core/cluster_options.cxx
|
93
94
|
core/collections_component.cxx
|
94
|
-
core/
|
95
|
+
core/config_profiles.cxx
|
95
96
|
core/core_sdk_shim.cxx
|
96
97
|
core/crud_component.cxx
|
97
98
|
core/dispatcher.cxx
|
@@ -256,41 +257,73 @@ set(couchbase_cxx_client_FILES
|
|
256
257
|
core/utils/split_string.cxx
|
257
258
|
core/utils/url_codec.cxx
|
258
259
|
core/impl/analytics.cxx
|
260
|
+
core/impl/search.cxx
|
259
261
|
core/impl/analytics_error_category.cxx
|
260
262
|
core/impl/append.cxx
|
261
263
|
core/impl/best_effort_retry_strategy.cxx
|
264
|
+
core/impl/boolean_field_query.cxx
|
265
|
+
core/impl/boolean_query.cxx
|
262
266
|
core/impl/build_deferred_query_indexes.cxx
|
263
|
-
core/impl/collection_query_index_manager.cxx
|
264
267
|
core/impl/cluster.cxx
|
268
|
+
core/impl/collection_query_index_manager.cxx
|
265
269
|
core/impl/common_error_category.cxx
|
266
270
|
core/impl/configuration_profiles_registry.cxx
|
271
|
+
core/impl/conjunction_query.cxx
|
267
272
|
core/impl/create_query_index.cxx
|
273
|
+
core/impl/date_range.cxx
|
274
|
+
core/impl/date_range_facet.cxx
|
275
|
+
core/impl/date_range_facet_result.cxx
|
276
|
+
core/impl/date_range_query.cxx
|
268
277
|
core/impl/decrement.cxx
|
278
|
+
core/impl/disjunction_query.cxx
|
269
279
|
core/impl/dns_srv_tracker.cxx
|
270
280
|
core/impl/drop_query_index.cxx
|
271
281
|
core/impl/exists.cxx
|
272
282
|
core/impl/expiry.cxx
|
273
283
|
core/impl/fail_fast_retry_strategy.cxx
|
274
284
|
core/impl/field_level_encryption_error_category.cxx
|
285
|
+
core/impl/geo_bounding_box_query.cxx
|
286
|
+
core/impl/geo_distance_query.cxx
|
287
|
+
core/impl/geo_polygon_query.cxx
|
275
288
|
core/impl/get.cxx
|
289
|
+
core/impl/get_all_query_indexes.cxx
|
276
290
|
core/impl/get_all_replicas.cxx
|
277
291
|
core/impl/get_and_lock.cxx
|
278
292
|
core/impl/get_and_touch.cxx
|
279
|
-
core/impl/get_all_query_indexes.cxx
|
280
293
|
core/impl/get_any_replica.cxx
|
281
294
|
core/impl/get_replica.cxx
|
282
295
|
core/impl/increment.cxx
|
283
296
|
core/impl/insert.cxx
|
297
|
+
core/impl/internal_date_range_facet_result.cxx
|
298
|
+
core/impl/internal_numeric_range_facet_result.cxx
|
299
|
+
core/impl/internal_search_error_context.cxx
|
300
|
+
core/impl/internal_search_meta_data.cxx
|
301
|
+
core/impl/internal_search_result.cxx
|
302
|
+
core/impl/internal_search_row.cxx
|
303
|
+
core/impl/internal_search_row_locations.cxx
|
304
|
+
core/impl/internal_term_facet_result.cxx
|
284
305
|
core/impl/key_value_error_category.cxx
|
285
306
|
core/impl/lookup_in.cxx
|
286
307
|
core/impl/management_error_category.cxx
|
308
|
+
core/impl/match_all_query.cxx
|
309
|
+
core/impl/match_none_query.cxx
|
310
|
+
core/impl/match_phrase_query.cxx
|
311
|
+
core/impl/match_query.cxx
|
287
312
|
core/impl/mutate_in.cxx
|
288
313
|
core/impl/network_error_category.cxx
|
314
|
+
core/impl/numeric_range.cxx
|
315
|
+
core/impl/numeric_range_facet.cxx
|
316
|
+
core/impl/numeric_range_facet_result.cxx
|
317
|
+
core/impl/numeric_range_query.cxx
|
289
318
|
core/impl/observe_poll.cxx
|
290
319
|
core/impl/observe_seqno.cxx
|
320
|
+
core/impl/phrase_query.cxx
|
321
|
+
core/impl/prefix_query.cxx
|
291
322
|
core/impl/prepend.cxx
|
292
323
|
core/impl/query.cxx
|
293
324
|
core/impl/query_error_category.cxx
|
325
|
+
core/impl/query_string_query.cxx
|
326
|
+
core/impl/regexp_query.cxx
|
294
327
|
core/impl/remove.cxx
|
295
328
|
core/impl/replace.cxx
|
296
329
|
core/impl/retry_action.cxx
|
@@ -314,6 +347,20 @@ set(couchbase_cxx_client_FILES
|
|
314
347
|
core/impl/subdoc/remove.cxx
|
315
348
|
core/impl/subdoc/replace.cxx
|
316
349
|
core/impl/subdoc/upsert.cxx
|
350
|
+
core/impl/search.cxx
|
351
|
+
core/impl/search_error_context.cxx
|
352
|
+
core/impl/search_meta_data.cxx
|
353
|
+
core/impl/search_result.cxx
|
354
|
+
core/impl/search_row.cxx
|
355
|
+
core/impl/search_row_location.cxx
|
356
|
+
core/impl/search_row_locations.cxx
|
357
|
+
core/impl/search_sort_field.cxx
|
358
|
+
core/impl/search_sort_id.cxx
|
359
|
+
core/impl/search_sort_score.cxx
|
360
|
+
core/impl/term_facet.cxx
|
361
|
+
core/impl/term_facet_result.cxx
|
362
|
+
core/impl/term_query.cxx
|
363
|
+
core/impl/term_range_query.cxx
|
317
364
|
core/impl/touch.cxx
|
318
365
|
core/impl/transaction_error_category.cxx
|
319
366
|
core/impl/transaction_get_result.cxx
|
@@ -322,6 +369,7 @@ set(couchbase_cxx_client_FILES
|
|
322
369
|
core/impl/upsert.cxx
|
323
370
|
core/impl/view_error_category.cxx
|
324
371
|
core/impl/watch_query_indexes.cxx
|
372
|
+
core/impl/wildcard_query.cxx
|
325
373
|
core/io/dns_client.cxx
|
326
374
|
core/io/dns_config.cxx
|
327
375
|
core/io/http_parser.cxx
|
@@ -331,11 +379,12 @@ set(couchbase_cxx_client_FILES
|
|
331
379
|
core/transactions/atr_cleanup_entry.cxx
|
332
380
|
core/transactions/atr_ids.cxx
|
333
381
|
core/transactions/attempt_context_impl.cxx
|
382
|
+
core/transactions/attempt_context_testing_hooks.cxx
|
334
383
|
core/transactions/binary.cxx
|
384
|
+
core/transactions/cleanup_testing_hooks.cxx
|
335
385
|
core/transactions/exceptions.cxx
|
336
386
|
core/transactions/result.cxx
|
337
387
|
core/transactions/staged_mutation.cxx
|
338
|
-
core/transactions/utils.cxx
|
339
388
|
core/transactions/transaction_attempt.cxx
|
340
389
|
core/transactions/transaction_context.cxx
|
341
390
|
core/transactions/transaction_get_result.cxx
|
@@ -344,7 +393,8 @@ set(couchbase_cxx_client_FILES
|
|
344
393
|
core/transactions/transactions.cxx
|
345
394
|
core/transactions/transactions_cleanup.cxx
|
346
395
|
core/transactions/transactions_config.cxx
|
347
|
-
core/transactions/uid_generator.cxx
|
396
|
+
core/transactions/uid_generator.cxx
|
397
|
+
core/transactions/utils.cxx)
|
348
398
|
|
349
399
|
if (COUCHBASE_CXX_CLIENT_BUILD_SHARED)
|
350
400
|
add_library(couchbase_cxx_client SHARED ${couchbase_cxx_client_FILES})
|
@@ -403,9 +453,9 @@ endif ()
|
|
403
453
|
if (NOT COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL)
|
404
454
|
if (TARGET PkgConfig::PKG_CONFIG_OPENSSL)
|
405
455
|
target_link_libraries(couchbase_cxx_client PUBLIC PkgConfig::PKG_CONFIG_OPENSSL)
|
406
|
-
else()
|
456
|
+
else ()
|
407
457
|
target_link_libraries(couchbase_cxx_client PUBLIC OpenSSL::SSL OpenSSL::Crypto)
|
408
|
-
endif()
|
458
|
+
endif ()
|
409
459
|
endif ()
|
410
460
|
|
411
461
|
option(COUCHBASE_CXX_CLIENT_BUILD_TESTS "Build test programs" TRUE)
|
@@ -20,7 +20,6 @@ if(DOXYGEN_FOUND AND DOT)
|
|
20
20
|
set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/html/index.html)
|
21
21
|
set(DOXYGEN_CONFIG_TEMPLATE ${PROJECT_SOURCE_DIR}/docs/Doxyfile.in)
|
22
22
|
set(DOXYGEN_CONFIG ${PROJECT_BINARY_DIR}/Doxyfile)
|
23
|
-
file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR})
|
24
23
|
configure_file(${DOXYGEN_CONFIG_TEMPLATE} ${DOXYGEN_CONFIG})
|
25
24
|
add_custom_command(
|
26
25
|
OUTPUT ${DOXYGEN_INDEX_FILE}
|
@@ -49,7 +49,7 @@ else()
|
|
49
49
|
OPENSSL_USABLE ${CMAKE_CURRENT_BINARY_DIR}
|
50
50
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/test_openssl.cxx
|
51
51
|
LINK_LIBRARIES OpenSSL::SSL CXX_STANDARD 17)
|
52
|
-
if(
|
52
|
+
if(OPENSSL_USABLE)
|
53
53
|
message(STATUS "OPENSSL_VERSION: ${OPENSSL_VERSION}")
|
54
54
|
message(STATUS "OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}")
|
55
55
|
message(STATUS "OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")
|
@@ -60,7 +60,12 @@ else()
|
|
60
60
|
"Cannot use OpenSSL ${OPENSSL_VERSION} at \"${OPENSSL_INCLUDE_DIR}\" and \"${OPENSSL_LIBRARIES}\". Will try to use from pkg-config."
|
61
61
|
)
|
62
62
|
find_package(PkgConfig REQUIRED)
|
63
|
-
pkg_check_modules(
|
63
|
+
pkg_check_modules(
|
64
|
+
PKG_CONFIG_OPENSSL
|
65
|
+
REQUIRED
|
66
|
+
IMPORTED_TARGET
|
67
|
+
GLOBAL
|
68
|
+
openssl11)
|
64
69
|
if(PKG_CONFIG_OPENSSL_FOUND)
|
65
70
|
message(STATUS "PKG_CONFIG_OPENSSL_VERSION: ${PKG_CONFIG_OPENSSL_VERSION}")
|
66
71
|
message(STATUS "PKG_CONFIG_OPENSSL_INCLUDE_DIRS: ${PKG_CONFIG_OPENSSL_INCLUDE_DIRS}")
|
@@ -74,7 +79,12 @@ else()
|
|
74
79
|
endif()
|
75
80
|
elseif(UNIX)
|
76
81
|
find_package(PkgConfig REQUIRED)
|
77
|
-
pkg_check_modules(
|
82
|
+
pkg_check_modules(
|
83
|
+
PKG_CONFIG_OPENSSL
|
84
|
+
REQUIRED
|
85
|
+
IMPORTED_TARGET
|
86
|
+
GLOBAL
|
87
|
+
openssl11)
|
78
88
|
if(PKG_CONFIG_OPENSSL_FOUND)
|
79
89
|
message(STATUS "PKG_CONFIG_OPENSSL_VERSION: ${PKG_CONFIG_OPENSSL_VERSION}")
|
80
90
|
message(STATUS "PKG_CONFIG_OPENSSL_INCLUDE_DIRS: ${PKG_CONFIG_OPENSSL_INCLUDE_DIRS}")
|
@@ -90,3 +100,88 @@ endif()
|
|
90
100
|
# Read more at https://wiki.wireshark.org/TLS
|
91
101
|
option(COUCHBASE_CXX_CLIENT_TLS_KEY_LOG_FILE
|
92
102
|
"Path to file to write per-session secrets (Useful for Wireshark SSL/TLS dissection)")
|
103
|
+
|
104
|
+
option(COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE
|
105
|
+
"Download and embed Mozilla certificates from https://curl.se/ca/cacert.pem" TRUE)
|
106
|
+
|
107
|
+
if(COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE)
|
108
|
+
file(DOWNLOAD "https://curl.se/ca/cacert.pem.sha256" "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.sha256"
|
109
|
+
TLS_VERIFY ON)
|
110
|
+
file(READ "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.sha256" HASH_FILE_CONTENT)
|
111
|
+
string(
|
112
|
+
REGEX MATCH
|
113
|
+
"^([0-9a-f]+)"
|
114
|
+
COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256
|
115
|
+
${HASH_FILE_CONTENT})
|
116
|
+
if(NOT COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256)
|
117
|
+
message(FATAL_ERROR "Failed to extract expected hash from file")
|
118
|
+
endif()
|
119
|
+
file(
|
120
|
+
DOWNLOAD "https://curl.se/ca/cacert.pem" "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.crt"
|
121
|
+
TLS_VERIFY ON
|
122
|
+
EXPECTED_HASH SHA256=${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256})
|
123
|
+
|
124
|
+
file(READ "${CMAKE_CURRENT_BINARY_DIR}/mozilla-ca-bundle.crt" CA_BUNDLE_CONTENT)
|
125
|
+
string(
|
126
|
+
REGEX MATCH
|
127
|
+
"Certificate data from Mozilla as of: ([^\n]*)"
|
128
|
+
CA_BUNDLE_DATE_LINE
|
129
|
+
${CA_BUNDLE_CONTENT})
|
130
|
+
set(COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "${CMAKE_MATCH_1}")
|
131
|
+
else()
|
132
|
+
set(CA_BUNDLE_CONTENT "")
|
133
|
+
endif()
|
134
|
+
|
135
|
+
set(CA_BUNDLE_CPP_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/mozilla_ca_bundle.cxx")
|
136
|
+
|
137
|
+
# We parse CRT file because C++ does not allow string literals over 64k, and turning everything into bytes does not
|
138
|
+
# seems to be cross-platform and fast.
|
139
|
+
string(
|
140
|
+
REGEX MATCHALL
|
141
|
+
"[^=#]+=+\n-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----"
|
142
|
+
CERTIFICATES
|
143
|
+
"${CA_BUNDLE_CONTENT}")
|
144
|
+
list(LENGTH CERTIFICATES NUMBER_OF_CERTIFICATES)
|
145
|
+
file(
|
146
|
+
WRITE ${CA_BUNDLE_CPP_FILE}
|
147
|
+
"
|
148
|
+
#include \"core/mozilla_ca_bundle.hxx\"
|
149
|
+
|
150
|
+
namespace couchbase::core::default_ca
|
151
|
+
{
|
152
|
+
constexpr inline std::size_t number_of_certificates{ ${NUMBER_OF_CERTIFICATES} };
|
153
|
+
constexpr inline certificate certificates[]{
|
154
|
+
")
|
155
|
+
foreach(CERTIFICATE ${CERTIFICATES})
|
156
|
+
string(
|
157
|
+
REGEX MATCH
|
158
|
+
"[ \t\r\n]*([^=\n]+)[ \t\r\n]*=+\n(-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----)"
|
159
|
+
PARTS
|
160
|
+
${CERTIFICATE})
|
161
|
+
file(APPEND ${CA_BUNDLE_CPP_FILE} " { R\"(${CMAKE_MATCH_1})\",\n R\"(${CMAKE_MATCH_2})\" },\n\n")
|
162
|
+
endforeach()
|
163
|
+
|
164
|
+
file(
|
165
|
+
APPEND ${CA_BUNDLE_CPP_FILE}
|
166
|
+
" { \"\", \"\" },
|
167
|
+
};
|
168
|
+
|
169
|
+
auto
|
170
|
+
mozilla_ca_certs() -> gsl::span<const certificate>
|
171
|
+
{
|
172
|
+
return { certificates, number_of_certificates };
|
173
|
+
}
|
174
|
+
|
175
|
+
auto
|
176
|
+
mozilla_ca_certs_date() -> std::string_view
|
177
|
+
{
|
178
|
+
return \"${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE}\";
|
179
|
+
}
|
180
|
+
|
181
|
+
auto
|
182
|
+
mozilla_ca_certs_sha256() -> std::string_view
|
183
|
+
{
|
184
|
+
return \"${COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256}\";
|
185
|
+
}
|
186
|
+
} // namespace couchbase::core::default_ca
|
187
|
+
")
|
@@ -17,7 +17,7 @@ macro(integration_test name)
|
|
17
17
|
test_integration_${name}
|
18
18
|
project_options
|
19
19
|
project_warnings
|
20
|
-
Catch2::
|
20
|
+
Catch2::Catch2WithMain
|
21
21
|
Threads::Threads
|
22
22
|
snappy
|
23
23
|
couchbase_cxx_client
|
@@ -25,6 +25,8 @@ macro(integration_test name)
|
|
25
25
|
catch_discover_tests(
|
26
26
|
test_integration_${name}
|
27
27
|
PROPERTIES
|
28
|
+
SKIP_REGULAR_EXPRESSION
|
29
|
+
"SKIP"
|
28
30
|
LABELS
|
29
31
|
"integration")
|
30
32
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_INTEGRATION_TESTS "test_integration_${name}")
|
@@ -44,7 +46,7 @@ macro(transaction_test name)
|
|
44
46
|
test_transaction_${name}
|
45
47
|
project_options
|
46
48
|
project_warnings
|
47
|
-
Catch2::
|
49
|
+
Catch2::Catch2WithMain
|
48
50
|
Threads::Threads
|
49
51
|
snappy
|
50
52
|
couchbase_cxx_client
|
@@ -52,6 +54,8 @@ macro(transaction_test name)
|
|
52
54
|
catch_discover_tests(
|
53
55
|
test_transaction_${name}
|
54
56
|
PROPERTIES
|
57
|
+
SKIP_REGULAR_EXPRESSION
|
58
|
+
"SKIP"
|
55
59
|
LABELS
|
56
60
|
"transaction")
|
57
61
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_TRANSACTION_TESTS "test_transaction_${name}")
|
@@ -70,7 +74,7 @@ macro(unit_test name)
|
|
70
74
|
test_unit_${name}
|
71
75
|
project_options
|
72
76
|
project_warnings
|
73
|
-
Catch2::
|
77
|
+
Catch2::Catch2WithMain
|
74
78
|
Threads::Threads
|
75
79
|
snappy
|
76
80
|
couchbase_cxx_client
|
@@ -78,6 +82,8 @@ macro(unit_test name)
|
|
78
82
|
catch_discover_tests(
|
79
83
|
test_unit_${name}
|
80
84
|
PROPERTIES
|
85
|
+
SKIP_REGULAR_EXPRESSION
|
86
|
+
"SKIP"
|
81
87
|
LABELS
|
82
88
|
"unit")
|
83
89
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_UNIT_TESTS "test_unit_${name}")
|
@@ -96,7 +102,7 @@ macro(integration_benchmark name)
|
|
96
102
|
benchmark_integration_${name}
|
97
103
|
project_options
|
98
104
|
project_warnings
|
99
|
-
Catch2::
|
105
|
+
Catch2::Catch2WithMain
|
100
106
|
Threads::Threads
|
101
107
|
snappy
|
102
108
|
couchbase_cxx_client
|
@@ -104,6 +110,8 @@ macro(integration_benchmark name)
|
|
104
110
|
catch_discover_tests(
|
105
111
|
benchmark_integration_${name}
|
106
112
|
PROPERTIES
|
113
|
+
SKIP_REGULAR_EXPRESSION
|
114
|
+
"SKIP"
|
107
115
|
LABELS
|
108
116
|
"benchmark")
|
109
117
|
set_property(GLOBAL APPEND PROPERTY COUCHBASE_BENCHMARKS "benchmark_integration_${name}")
|
@@ -18,3 +18,6 @@
|
|
18
18
|
#pragma once
|
19
19
|
|
20
20
|
#cmakedefine TLS_KEY_LOG_FILE "@TLS_KEY_LOG_FILE@"
|
21
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_EMBED_MOZILLA_CA_BUNDLE
|
22
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE "@COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_DATE@"
|
23
|
+
#cmakedefine COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256 "@COUCHBASE_CXX_CLIENT_MOZILLA_CA_BUNDLE_SHA256@"
|
@@ -315,11 +315,12 @@ class bucket_impl
|
|
315
315
|
}
|
316
316
|
{
|
317
317
|
std::scoped_lock lock(config_mutex_);
|
318
|
-
if (!config_->
|
318
|
+
if (!config_->has_node(origin_.options().network, service_type::key_value, origin_.options().enable_tls, hostname, port)) {
|
319
319
|
CB_LOG_TRACE(
|
320
|
-
R"({} requested to restart session, but the node has been ejected from current configuration already. idx={}, address="{}:{}")",
|
320
|
+
R"({} requested to restart session, but the node has been ejected from current configuration already. idx={}, network={}, address="{}:{}")",
|
321
321
|
log_prefix_,
|
322
322
|
index,
|
323
|
+
origin_.options().network,
|
323
324
|
hostname,
|
324
325
|
port);
|
325
326
|
return;
|
@@ -106,6 +106,8 @@ class bucket
|
|
106
106
|
} else {
|
107
107
|
auto [partition, server] = map_id(cmd->request.id);
|
108
108
|
if (!server.has_value()) {
|
109
|
+
CB_LOG_TRACE(
|
110
|
+
R"({} unable to map key=\"{}\" to the node, id={}, partition={})", log_prefix(), cmd->request.id, cmd->id_, partition);
|
109
111
|
return io::retry_orchestrator::maybe_retry(
|
110
112
|
cmd->manager_, cmd, retry_reason::node_not_available, errc::common::request_canceled);
|
111
113
|
}
|
@@ -114,9 +116,16 @@ class bucket
|
|
114
116
|
}
|
115
117
|
auto session = find_session_by_index(index);
|
116
118
|
if (!session || !session->has_config()) {
|
119
|
+
CB_LOG_TRACE(R"({} defer operation id={}, session={}, has_config={})",
|
120
|
+
log_prefix(),
|
121
|
+
cmd->id_,
|
122
|
+
session.has_value(),
|
123
|
+
session.has_value() && session->has_config());
|
117
124
|
return defer_command([self = shared_from_this(), cmd]() { self->map_and_send(cmd); });
|
118
125
|
}
|
119
126
|
if (session->is_stopped()) {
|
127
|
+
CB_LOG_TRACE(
|
128
|
+
R"({} the session has been found, but it is stopped, retrying id={}, session={})", log_prefix(), cmd->id_, session->id());
|
120
129
|
return io::retry_orchestrator::maybe_retry(
|
121
130
|
cmd->manager_, cmd, retry_reason::node_not_available, errc::common::request_canceled);
|
122
131
|
}
|
@@ -33,6 +33,7 @@
|
|
33
33
|
#include "diagnostics.hxx"
|
34
34
|
#include "dispatcher.hxx"
|
35
35
|
#include "impl/dns_srv_tracker.hxx"
|
36
|
+
#include "mozilla_ca_bundle.hxx"
|
36
37
|
#include "operations.hxx"
|
37
38
|
#include "origin.hxx"
|
38
39
|
|
@@ -394,6 +395,21 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
394
395
|
CB_LOG_WARNING("[{}]: unable to load default CAs: {}", id_, ec.message());
|
395
396
|
// we don't consider this fatal and try to continue without it
|
396
397
|
}
|
398
|
+
|
399
|
+
if (const auto certificates = default_ca::mozilla_ca_certs();
|
400
|
+
!origin_.options().disable_mozilla_ca_certificates && !certificates.empty()) {
|
401
|
+
CB_LOG_DEBUG("[{}]: loading {} CA certificates from Mozilla bundle. Update date: \"{}\", SHA256: \"{}\"",
|
402
|
+
id_,
|
403
|
+
certificates.size(),
|
404
|
+
default_ca::mozilla_ca_certs_date(),
|
405
|
+
default_ca::mozilla_ca_certs_sha256());
|
406
|
+
for (const auto& cert : certificates) {
|
407
|
+
tls_.add_certificate_authority(asio::const_buffer(cert.body.data(), cert.body.size()), ec);
|
408
|
+
if (ec) {
|
409
|
+
CB_LOG_WARNING("[{}]: unable to load CA \"{}\" from Mozilla bundle: {}", id_, cert.authority, ec.message());
|
410
|
+
}
|
411
|
+
}
|
412
|
+
}
|
397
413
|
} else { // trust certificate is explicitly specified
|
398
414
|
std::error_code ec{};
|
399
415
|
// load only the explicit certificate
|
@@ -430,6 +446,7 @@ class cluster : public std::enable_shared_from_this<cluster>
|
|
430
446
|
return close([ec, handler = std::forward<Handler>(handler)]() mutable { return handler(ec); });
|
431
447
|
}
|
432
448
|
}
|
449
|
+
|
433
450
|
session_ = io::mcbp_session(id_, ctx_, tls_, origin_, dns_srv_tracker_);
|
434
451
|
} else {
|
435
452
|
session_ = io::mcbp_session(id_, ctx_, origin_, dns_srv_tracker_);
|
@@ -16,7 +16,7 @@
|
|
16
16
|
*/
|
17
17
|
|
18
18
|
#include "cluster_options.hxx"
|
19
|
-
#include "
|
19
|
+
#include "config_profiles.hxx"
|
20
20
|
#include <stdexcept>
|
21
21
|
|
22
22
|
namespace couchbase::core
|
@@ -45,6 +45,6 @@ cluster_options::default_timeout_for(service_type type) const
|
|
45
45
|
void
|
46
46
|
cluster_options::apply_profile(std::string profile_name)
|
47
47
|
{
|
48
|
-
|
48
|
+
known_profiles().apply(profile_name, *this);
|
49
49
|
}
|
50
50
|
} // namespace couchbase::core
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "core/transactions/cleanup_testing_hooks.hxx"
|
26
26
|
#include "service_type.hxx"
|
27
27
|
#include "timeout_defaults.hxx"
|
28
|
+
#include "tls_verify_mode.hxx"
|
28
29
|
|
29
30
|
#include <couchbase/best_effort_retry_strategy.hxx>
|
30
31
|
#include <couchbase/metrics/meter.hxx>
|
@@ -32,16 +33,10 @@
|
|
32
33
|
#include <couchbase/transactions/transactions_config.hxx>
|
33
34
|
|
34
35
|
#include <chrono>
|
35
|
-
#include <list>
|
36
36
|
#include <string>
|
37
37
|
|
38
38
|
namespace couchbase::core
|
39
39
|
{
|
40
|
-
enum class tls_verify_mode {
|
41
|
-
none,
|
42
|
-
peer,
|
43
|
-
};
|
44
|
-
|
45
40
|
struct cluster_options {
|
46
41
|
std::chrono::milliseconds bootstrap_timeout = timeout_defaults::bootstrap_timeout;
|
47
42
|
std::chrono::milliseconds resolve_timeout = timeout_defaults::resolve_timeout;
|
@@ -86,6 +81,9 @@ struct cluster_options {
|
|
86
81
|
couchbase::transactions::transactions_config::built transactions{};
|
87
82
|
|
88
83
|
[[nodiscard]] std::chrono::milliseconds default_timeout_for(service_type type) const;
|
84
|
+
|
85
|
+
bool dump_configuration{ false };
|
86
|
+
bool disable_mozilla_ca_certificates{ false };
|
89
87
|
void apply_profile(std::string profile_name);
|
90
88
|
};
|
91
89
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
2
|
+
/*
|
3
|
+
* Copyright 2020-2021 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
|
+
|
20
|
+
namespace couchbase
|
21
|
+
{
|
22
|
+
namespace core
|
23
|
+
{
|
24
|
+
struct cluster_options;
|
25
|
+
} // namespace core
|
26
|
+
} // namespace couchbase
|
@@ -16,13 +16,7 @@
|
|
16
16
|
*/
|
17
17
|
#pragma once
|
18
18
|
|
19
|
-
#include "
|
20
|
-
#include <chrono>
|
21
|
-
#include <fmt/core.h>
|
22
|
-
#include <map>
|
23
|
-
#include <mutex>
|
24
|
-
#include <stdexcept>
|
25
|
-
#include <string>
|
19
|
+
#include "cluster_options_fwd.hxx"
|
26
20
|
|
27
21
|
namespace couchbase::core
|
28
22
|
{
|
@@ -32,51 +26,4 @@ class config_profile
|
|
32
26
|
virtual ~config_profile() = default;
|
33
27
|
virtual void apply(cluster_options&) = 0;
|
34
28
|
};
|
35
|
-
|
36
|
-
class development_profile : public config_profile
|
37
|
-
{
|
38
|
-
public:
|
39
|
-
void apply(couchbase::core::cluster_options& opts) override;
|
40
|
-
};
|
41
|
-
|
42
|
-
// this class just registers the known profiles defined above, and allows access to them.
|
43
|
-
class config_profiles
|
44
|
-
{
|
45
|
-
private:
|
46
|
-
std::map<std::string, std::shared_ptr<couchbase::core::config_profile>> profiles_;
|
47
|
-
std::mutex mut_;
|
48
|
-
|
49
|
-
public:
|
50
|
-
config_profiles() noexcept
|
51
|
-
{
|
52
|
-
// add all known profiles (above) to the map
|
53
|
-
register_profile<development_profile>("wan_development");
|
54
|
-
}
|
55
|
-
|
56
|
-
void apply(const std::string& profile_name, couchbase::core::cluster_options& opts)
|
57
|
-
{
|
58
|
-
std::lock_guard<std::mutex> lock(mut_);
|
59
|
-
auto it = profiles_.find(profile_name);
|
60
|
-
if (it != profiles_.end()) {
|
61
|
-
it->second->apply(opts);
|
62
|
-
} else {
|
63
|
-
throw std::invalid_argument(fmt::format("unknown profile '{}'", profile_name));
|
64
|
-
}
|
65
|
-
}
|
66
|
-
|
67
|
-
template<typename T, typename... Args>
|
68
|
-
void register_profile(const std::string& name, Args... args)
|
69
|
-
{
|
70
|
-
// This will just add it, doesn't look to see if it is overwriting an existing profile.
|
71
|
-
// TODO: perhaps add a template Args param?
|
72
|
-
// TODO: should we make this thread-safe? Easy enough here, but we'd need to make the
|
73
|
-
// singleton thread-safe too.
|
74
|
-
std::lock_guard<std::mutex> lock(mut_);
|
75
|
-
profiles_.emplace(std::make_pair(name, std::make_shared<T>(args...)));
|
76
|
-
}
|
77
|
-
};
|
78
|
-
|
79
|
-
config_profiles&
|
80
|
-
known_profiles();
|
81
|
-
|
82
29
|
} // namespace couchbase::core
|