couchbase 3.4.2 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|