couchbase 4.3.1 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1091) hide show
  1. package/deps/couchbase-cxx-client/CMakeLists.txt +16 -9
  2. package/deps/couchbase-cxx-client/README.md +39 -44
  3. package/deps/couchbase-cxx-client/cmake/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +3 -4
  4. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +2 -1
  5. package/deps/couchbase-cxx-client/cmake/Packaging.cmake +41 -0
  6. package/deps/couchbase-cxx-client/cmake/Sanitizers.cmake +1 -0
  7. package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +5 -5
  8. package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
  9. package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.pc.in +10 -0
  10. package/deps/couchbase-cxx-client/cmake/test_boringssl.cxx +1 -1
  11. package/deps/couchbase-cxx-client/cmake/test_openssl.cxx +1 -1
  12. package/deps/couchbase-cxx-client/core/agent.cxx +353 -304
  13. package/deps/couchbase-cxx-client/core/agent.hxx +94 -76
  14. package/deps/couchbase-cxx-client/core/agent_config.cxx +9 -8
  15. package/deps/couchbase-cxx-client/core/agent_config.hxx +7 -7
  16. package/deps/couchbase-cxx-client/core/agent_group.cxx +132 -120
  17. package/deps/couchbase-cxx-client/core/agent_group.hxx +26 -22
  18. package/deps/couchbase-cxx-client/core/agent_group_config.cxx +8 -7
  19. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +6 -6
  20. package/deps/couchbase-cxx-client/core/agent_unit_test_api.hxx +6 -6
  21. package/deps/couchbase-cxx-client/core/analytics_query_options.cxx +21 -21
  22. package/deps/couchbase-cxx-client/core/analytics_query_options.hxx +19 -18
  23. package/deps/couchbase-cxx-client/core/analytics_scan_consistency.hxx +2 -2
  24. package/deps/couchbase-cxx-client/core/bucket.cxx +848 -776
  25. package/deps/couchbase-cxx-client/core/bucket.hxx +151 -139
  26. package/deps/couchbase-cxx-client/core/capella_ca.hxx +20 -19
  27. package/deps/couchbase-cxx-client/core/cluster.cxx +1240 -927
  28. package/deps/couchbase-cxx-client/core/cluster.hxx +254 -167
  29. package/deps/couchbase-cxx-client/core/cluster_agent.cxx +7 -7
  30. package/deps/couchbase-cxx-client/core/cluster_agent.hxx +4 -4
  31. package/deps/couchbase-cxx-client/core/cluster_agent_config.cxx +8 -7
  32. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +6 -6
  33. package/deps/couchbase-cxx-client/core/cluster_options.cxx +17 -17
  34. package/deps/couchbase-cxx-client/core/cluster_options.hxx +50 -47
  35. package/deps/couchbase-cxx-client/core/cluster_state.hxx +3 -3
  36. package/deps/couchbase-cxx-client/core/collection_id_cache_entry.hxx +5 -4
  37. package/deps/couchbase-cxx-client/core/collections_component.cxx +372 -329
  38. package/deps/couchbase-cxx-client/core/collections_component.hxx +17 -13
  39. package/deps/couchbase-cxx-client/core/collections_component_unit_test_api.hxx +6 -6
  40. package/deps/couchbase-cxx-client/core/collections_options.hxx +29 -27
  41. package/deps/couchbase-cxx-client/core/config_listener.hxx +3 -3
  42. package/deps/couchbase-cxx-client/core/config_profile.hxx +3 -3
  43. package/deps/couchbase-cxx-client/core/config_profiles.cxx +31 -31
  44. package/deps/couchbase-cxx-client/core/config_profiles.hxx +19 -19
  45. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +2 -1
  46. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +2 -2
  47. package/deps/couchbase-cxx-client/core/crud_component.cxx +310 -276
  48. package/deps/couchbase-cxx-client/core/crud_component.hxx +21 -15
  49. package/deps/couchbase-cxx-client/core/crud_options.hxx +361 -354
  50. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.cc +732 -627
  51. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.h +12 -3
  52. package/deps/couchbase-cxx-client/core/design_document_namespace.hxx +2 -2
  53. package/deps/couchbase-cxx-client/core/design_document_namespace_fmt.hxx +18 -18
  54. package/deps/couchbase-cxx-client/core/diagnostics.hxx +44 -44
  55. package/deps/couchbase-cxx-client/core/diagnostics_fmt.hxx +76 -76
  56. package/deps/couchbase-cxx-client/core/diagnostics_json.hxx +61 -60
  57. package/deps/couchbase-cxx-client/core/diagntostics_options.hxx +14 -14
  58. package/deps/couchbase-cxx-client/core/dispatcher.cxx +4 -3
  59. package/deps/couchbase-cxx-client/core/dispatcher.hxx +8 -7
  60. package/deps/couchbase-cxx-client/core/document_id.cxx +37 -34
  61. package/deps/couchbase-cxx-client/core/document_id.hxx +87 -86
  62. package/deps/couchbase-cxx-client/core/document_id_fmt.hxx +10 -10
  63. package/deps/couchbase-cxx-client/core/durability_options.hxx +50 -49
  64. package/deps/couchbase-cxx-client/core/error_context/analytics.hxx +18 -18
  65. package/deps/couchbase-cxx-client/core/error_context/analytics_json.hxx +115 -0
  66. package/deps/couchbase-cxx-client/core/error_context/base_error_context.hxx +184 -0
  67. package/deps/couchbase-cxx-client/core/error_context/http.hxx +14 -14
  68. package/deps/couchbase-cxx-client/core/error_context/http_json.hxx +90 -0
  69. package/deps/couchbase-cxx-client/core/error_context/internal_tof_metadata_json.hxx +36 -0
  70. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +27 -27
  71. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +41 -38
  72. package/deps/couchbase-cxx-client/core/error_context/key_value_error_context.hxx +235 -0
  73. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_attribute.hxx +142 -0
  74. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_info.hxx +139 -0
  75. package/deps/couchbase-cxx-client/core/error_context/key_value_extended_error_info.hxx +86 -0
  76. package/deps/couchbase-cxx-client/core/error_context/key_value_json.hxx +83 -0
  77. package/deps/couchbase-cxx-client/core/error_context/key_value_status_code.hxx +109 -0
  78. package/deps/couchbase-cxx-client/core/error_context/query.hxx +18 -18
  79. package/deps/couchbase-cxx-client/core/error_context/query_error_context.hxx +150 -0
  80. package/deps/couchbase-cxx-client/core/error_context/query_json.hxx +114 -0
  81. package/deps/couchbase-cxx-client/core/error_context/query_public_json.hxx +84 -0
  82. package/deps/couchbase-cxx-client/core/error_context/search.hxx +17 -17
  83. package/deps/couchbase-cxx-client/core/error_context/search_json.hxx +101 -0
  84. package/deps/couchbase-cxx-client/core/error_context/subdocument_error_context.hxx +147 -0
  85. package/deps/couchbase-cxx-client/core/error_context/subdocument_json.hxx +48 -0
  86. package/deps/couchbase-cxx-client/{couchbase → core/error_context}/transaction_error_context.hxx +22 -22
  87. package/deps/couchbase-cxx-client/core/error_context/transaction_op_error_context.hxx +79 -0
  88. package/deps/couchbase-cxx-client/core/error_context/view.hxx +17 -17
  89. package/deps/couchbase-cxx-client/core/fmt/key_value_error_map_attribute.hxx +100 -0
  90. package/deps/couchbase-cxx-client/{couchbase → core}/fmt/key_value_extended_error_info.hxx +20 -20
  91. package/deps/couchbase-cxx-client/core/fmt/key_value_status_code.hxx +269 -0
  92. package/deps/couchbase-cxx-client/core/free_form_http_request.cxx +26 -26
  93. package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +34 -33
  94. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +111 -131
  95. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +5 -7
  96. package/deps/couchbase-cxx-client/core/impl/analytics_error_category.cxx +29 -28
  97. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +615 -516
  98. package/deps/couchbase-cxx-client/core/impl/best_effort_retry_strategy.cxx +53 -50
  99. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +346 -285
  100. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +10 -10
  101. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +27 -27
  102. package/deps/couchbase-cxx-client/core/impl/bootstrap_state_listener.hxx +6 -6
  103. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +39 -34
  104. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +354 -313
  105. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +430 -325
  106. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1033 -1187
  107. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +201 -170
  108. package/deps/couchbase-cxx-client/core/impl/common_error_category.cxx +58 -55
  109. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +46 -32
  110. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +17 -17
  111. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +24 -20
  112. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +22 -22
  113. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +6 -6
  114. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +50 -48
  115. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +211 -198
  116. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +7 -6
  117. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +18 -17
  118. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +92 -75
  119. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.hxx +24 -20
  120. package/deps/couchbase-cxx-client/core/impl/doc_id_query.cxx +9 -9
  121. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +2 -2
  122. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +2 -2
  123. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +2 -2
  124. package/deps/couchbase-cxx-client/core/impl/error.cxx +171 -0
  125. package/deps/couchbase-cxx-client/core/impl/error.hxx +64 -0
  126. package/deps/couchbase-cxx-client/core/impl/error_context.cxx +56 -0
  127. package/deps/couchbase-cxx-client/core/impl/expiry.cxx +66 -53
  128. package/deps/couchbase-cxx-client/core/impl/fail_fast_retry_strategy.cxx +5 -4
  129. package/deps/couchbase-cxx-client/core/impl/field_level_encryption_error_category.cxx +30 -28
  130. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +17 -17
  131. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +14 -14
  132. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +17 -17
  133. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +26 -22
  134. package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +25 -23
  135. package/deps/couchbase-cxx-client/core/impl/get_replica.cxx +18 -15
  136. package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +23 -18
  137. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +16 -14
  138. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +16 -15
  139. package/deps/couchbase-cxx-client/core/impl/internal_error_context.cxx +79 -0
  140. package/deps/couchbase-cxx-client/core/impl/internal_error_context.hxx +52 -0
  141. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +18 -15
  142. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +16 -15
  143. package/deps/couchbase-cxx-client/core/impl/internal_scan_result.hxx +7 -7
  144. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +25 -22
  145. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +32 -31
  146. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +15 -13
  147. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +10 -9
  148. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +30 -22
  149. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +10 -9
  150. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +10 -10
  151. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +16 -16
  152. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +2 -2
  153. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +68 -65
  154. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +16 -13
  155. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +16 -14
  156. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +15 -15
  157. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +73 -72
  158. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +65 -65
  159. package/deps/couchbase-cxx-client/core/impl/logger.cxx +91 -0
  160. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +32 -29
  161. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +33 -29
  162. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.cxx +75 -68
  163. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +30 -26
  164. package/deps/couchbase-cxx-client/core/impl/management_error_category.cxx +41 -40
  165. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +6 -6
  166. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +6 -6
  167. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +13 -13
  168. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +28 -28
  169. package/deps/couchbase-cxx-client/core/impl/network_error_category.cxx +39 -38
  170. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +6 -6
  171. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +22 -22
  172. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +6 -6
  173. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +22 -22
  174. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +294 -277
  175. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  176. package/deps/couchbase-cxx-client/core/impl/observe_seqno.cxx +21 -18
  177. package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +31 -26
  178. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +10 -10
  179. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +10 -10
  180. package/deps/couchbase-cxx-client/core/impl/query.cxx +163 -154
  181. package/deps/couchbase-cxx-client/core/impl/query.hxx +6 -7
  182. package/deps/couchbase-cxx-client/core/impl/query_error_category.cxx +22 -21
  183. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +45 -45
  184. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +488 -408
  185. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +7 -7
  186. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +10 -10
  187. package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +66 -0
  188. package/deps/couchbase-cxx-client/core/impl/replica_utils.hxx +48 -0
  189. package/deps/couchbase-cxx-client/core/impl/retry_action.cxx +3 -3
  190. package/deps/couchbase-cxx-client/core/impl/retry_reason.cxx +129 -56
  191. package/deps/couchbase-cxx-client/core/impl/retry_reason.hxx +28 -0
  192. package/deps/couchbase-cxx-client/core/impl/scan_result.cxx +53 -49
  193. package/deps/couchbase-cxx-client/core/impl/scope.cxx +103 -94
  194. package/deps/couchbase-cxx-client/core/impl/search.cxx +139 -130
  195. package/deps/couchbase-cxx-client/core/impl/search.hxx +4 -4
  196. package/deps/couchbase-cxx-client/core/impl/search_error_category.cxx +18 -17
  197. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +492 -390
  198. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +3 -3
  199. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +78 -78
  200. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +5 -5
  201. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +7 -7
  202. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +9 -8
  203. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +8 -7
  204. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +53 -53
  205. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +49 -48
  206. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +10 -10
  207. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +10 -10
  208. package/deps/couchbase-cxx-client/core/impl/streaming_json_lexer_error_category.cxx +70 -68
  209. package/deps/couchbase-cxx-client/core/impl/subdoc/array_add_unique.cxx +6 -6
  210. package/deps/couchbase-cxx-client/core/impl/subdoc/array_append.cxx +6 -6
  211. package/deps/couchbase-cxx-client/core/impl/subdoc/array_insert.cxx +6 -6
  212. package/deps/couchbase-cxx-client/core/impl/subdoc/array_prepend.cxx +6 -6
  213. package/deps/couchbase-cxx-client/core/impl/subdoc/command.hxx +5 -5
  214. package/deps/couchbase-cxx-client/core/impl/subdoc/command_bundle.hxx +11 -11
  215. package/deps/couchbase-cxx-client/core/impl/subdoc/count.cxx +6 -6
  216. package/deps/couchbase-cxx-client/core/impl/subdoc/counter.cxx +6 -6
  217. package/deps/couchbase-cxx-client/core/impl/subdoc/exists.cxx +6 -6
  218. package/deps/couchbase-cxx-client/core/impl/subdoc/get.cxx +6 -6
  219. package/deps/couchbase-cxx-client/core/impl/subdoc/insert.cxx +6 -6
  220. package/deps/couchbase-cxx-client/core/impl/subdoc/join_values.cxx +25 -25
  221. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_macro.cxx +61 -60
  222. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_specs.cxx +9 -9
  223. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_macro.cxx +48 -39
  224. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_specs.cxx +9 -9
  225. package/deps/couchbase-cxx-client/core/impl/subdoc/opcode.hxx +16 -16
  226. package/deps/couchbase-cxx-client/core/impl/subdoc/path_flags.hxx +40 -17
  227. package/deps/couchbase-cxx-client/core/impl/subdoc/remove.cxx +6 -6
  228. package/deps/couchbase-cxx-client/core/impl/subdoc/replace.cxx +6 -6
  229. package/deps/couchbase-cxx-client/core/impl/subdoc/upsert.cxx +6 -6
  230. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +8 -8
  231. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +6 -6
  232. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +25 -25
  233. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +22 -22
  234. package/deps/couchbase-cxx-client/core/impl/transaction_error_category.cxx +21 -20
  235. package/deps/couchbase-cxx-client/core/impl/transaction_get_result.cxx +41 -30
  236. package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +55 -56
  237. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +15 -10
  238. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +9 -9
  239. package/deps/couchbase-cxx-client/core/impl/view_error_category.cxx +17 -16
  240. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +10 -10
  241. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +30 -29
  242. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +257 -232
  243. package/deps/couchbase-cxx-client/core/io/dns_client.hxx +19 -18
  244. package/deps/couchbase-cxx-client/core/io/dns_codec.hxx +156 -154
  245. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +114 -109
  246. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +15 -13
  247. package/deps/couchbase-cxx-client/core/io/dns_message.hxx +365 -342
  248. package/deps/couchbase-cxx-client/core/io/http_command.hxx +155 -134
  249. package/deps/couchbase-cxx-client/core/io/http_context.hxx +5 -5
  250. package/deps/couchbase-cxx-client/core/io/http_message.hxx +75 -71
  251. package/deps/couchbase-cxx-client/core/io/http_parser.cxx +70 -67
  252. package/deps/couchbase-cxx-client/core/io/http_parser.hxx +18 -18
  253. package/deps/couchbase-cxx-client/core/io/http_session.hxx +620 -520
  254. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +406 -315
  255. package/deps/couchbase-cxx-client/core/io/http_traits.hxx +7 -0
  256. package/deps/couchbase-cxx-client/core/io/ip_protocol.hxx +3 -3
  257. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +298 -278
  258. package/deps/couchbase-cxx-client/core/io/mcbp_context.hxx +7 -6
  259. package/deps/couchbase-cxx-client/core/io/mcbp_message.cxx +8 -8
  260. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +19 -19
  261. package/deps/couchbase-cxx-client/core/io/mcbp_parser.cxx +60 -51
  262. package/deps/couchbase-cxx-client/core/io/mcbp_parser.hxx +21 -17
  263. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +1769 -1616
  264. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +63 -57
  265. package/deps/couchbase-cxx-client/core/io/query_cache.hxx +34 -34
  266. package/deps/couchbase-cxx-client/core/io/retry_context.hxx +45 -45
  267. package/deps/couchbase-cxx-client/core/io/retry_orchestrator.hxx +52 -42
  268. package/deps/couchbase-cxx-client/core/io/streams.hxx +210 -193
  269. package/deps/couchbase-cxx-client/core/json_string.hxx +47 -47
  270. package/deps/couchbase-cxx-client/core/key_value_config.cxx +8 -8
  271. package/deps/couchbase-cxx-client/core/key_value_config.hxx +12 -11
  272. package/deps/couchbase-cxx-client/core/logger/configuration.hxx +35 -35
  273. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.cxx +73 -72
  274. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.hxx +20 -18
  275. package/deps/couchbase-cxx-client/core/logger/level.hxx +9 -1
  276. package/deps/couchbase-cxx-client/core/logger/logger.cxx +279 -252
  277. package/deps/couchbase-cxx-client/core/logger/logger.hxx +110 -58
  278. package/deps/couchbase-cxx-client/core/management/analytics_dataset.hxx +4 -4
  279. package/deps/couchbase-cxx-client/core/management/analytics_index.hxx +4 -4
  280. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.cxx +35 -33
  281. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.hxx +36 -35
  282. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external_json.hxx +24 -20
  283. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.cxx +66 -65
  284. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.hxx +77 -70
  285. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote_json.hxx +38 -32
  286. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.cxx +26 -25
  287. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.hxx +30 -30
  288. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external_json.hxx +18 -16
  289. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +109 -91
  290. package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +112 -94
  291. package/deps/couchbase-cxx-client/core/management/design_document.hxx +9 -9
  292. package/deps/couchbase-cxx-client/core/management/eventing_function.hxx +124 -121
  293. package/deps/couchbase-cxx-client/core/management/eventing_function_json.hxx +228 -184
  294. package/deps/couchbase-cxx-client/core/management/eventing_status.hxx +41 -41
  295. package/deps/couchbase-cxx-client/core/management/eventing_status_json.hxx +53 -45
  296. package/deps/couchbase-cxx-client/core/management/rbac.hxx +33 -28
  297. package/deps/couchbase-cxx-client/core/management/rbac_fmt.hxx +21 -21
  298. package/deps/couchbase-cxx-client/core/management/rbac_json.hxx +132 -125
  299. package/deps/couchbase-cxx-client/core/management/search_index.cxx +79 -0
  300. package/deps/couchbase-cxx-client/core/management/search_index.hxx +11 -10
  301. package/deps/couchbase-cxx-client/core/management/search_index_json.hxx +27 -26
  302. package/deps/couchbase-cxx-client/core/mcbp/barrier_frame.hxx +4 -3
  303. package/deps/couchbase-cxx-client/core/mcbp/big_endian.cxx +22 -22
  304. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.cxx +22 -19
  305. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.hxx +9 -9
  306. package/deps/couchbase-cxx-client/core/mcbp/codec.cxx +419 -397
  307. package/deps/couchbase-cxx-client/core/mcbp/codec.hxx +14 -12
  308. package/deps/couchbase-cxx-client/core/mcbp/command_code.cxx +48 -48
  309. package/deps/couchbase-cxx-client/core/mcbp/completion_token.hxx +33 -33
  310. package/deps/couchbase-cxx-client/core/mcbp/datatype.hxx +3 -3
  311. package/deps/couchbase-cxx-client/core/mcbp/durability_level.hxx +8 -7
  312. package/deps/couchbase-cxx-client/core/mcbp/durability_level_frame.hxx +3 -2
  313. package/deps/couchbase-cxx-client/core/mcbp/durability_timeout_frame.hxx +4 -3
  314. package/deps/couchbase-cxx-client/core/mcbp/open_tracing_frame.hxx +3 -2
  315. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.cxx +3 -3
  316. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.hxx +9 -9
  317. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +76 -70
  318. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.hxx +18 -17
  319. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +65 -51
  320. package/deps/couchbase-cxx-client/core/mcbp/packet.hxx +25 -25
  321. package/deps/couchbase-cxx-client/core/mcbp/preserve_expiry_frame.hxx +4 -2
  322. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +3 -2
  323. package/deps/couchbase-cxx-client/core/mcbp/queue_request.cxx +65 -62
  324. package/deps/couchbase-cxx-client/core/mcbp/queue_request.hxx +54 -52
  325. package/deps/couchbase-cxx-client/core/mcbp/queue_request_connection_info.hxx +3 -3
  326. package/deps/couchbase-cxx-client/core/mcbp/queue_response.hxx +7 -7
  327. package/deps/couchbase-cxx-client/core/mcbp/read_units_frame.hxx +3 -2
  328. package/deps/couchbase-cxx-client/core/mcbp/server_duration.cxx +7 -7
  329. package/deps/couchbase-cxx-client/core/mcbp/server_duration_frame.hxx +3 -2
  330. package/deps/couchbase-cxx-client/core/mcbp/stream_id_frame.hxx +3 -2
  331. package/deps/couchbase-cxx-client/core/mcbp/unsupported_frame.hxx +4 -3
  332. package/deps/couchbase-cxx-client/core/mcbp/user_impersonation_frame.hxx +1 -1
  333. package/deps/couchbase-cxx-client/core/mcbp/write_units_frame.hxx +3 -2
  334. package/deps/couchbase-cxx-client/core/meta/features.hxx +58 -0
  335. package/deps/couchbase-cxx-client/core/meta/version.cxx +255 -204
  336. package/deps/couchbase-cxx-client/core/meta/version.hxx +31 -20
  337. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +160 -154
  338. package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +16 -15
  339. package/deps/couchbase-cxx-client/core/metrics/logging_meter_options.hxx +1 -1
  340. package/deps/couchbase-cxx-client/core/metrics/noop_meter.hxx +14 -13
  341. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +2 -2
  342. package/deps/couchbase-cxx-client/core/n1ql_query_options.cxx +31 -31
  343. package/deps/couchbase-cxx-client/core/n1ql_query_options.hxx +22 -21
  344. package/deps/couchbase-cxx-client/core/operation_map.hxx +3 -3
  345. package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +187 -176
  346. package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +79 -71
  347. package/deps/couchbase-cxx-client/core/operations/document_append.cxx +18 -15
  348. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +18 -16
  349. package/deps/couchbase-cxx-client/core/operations/document_decrement.cxx +26 -23
  350. package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +24 -20
  351. package/deps/couchbase-cxx-client/core/operations/document_exists.cxx +23 -21
  352. package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +25 -23
  353. package/deps/couchbase-cxx-client/core/operations/document_get.cxx +17 -15
  354. package/deps/couchbase-cxx-client/core/operations/document_get.hxx +17 -15
  355. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +121 -92
  356. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.cxx +19 -16
  357. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +21 -17
  358. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.cxx +19 -16
  359. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +22 -18
  360. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +111 -82
  361. package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +193 -184
  362. package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +25 -21
  363. package/deps/couchbase-cxx-client/core/operations/document_increment.cxx +26 -23
  364. package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +24 -20
  365. package/deps/couchbase-cxx-client/core/operations/document_insert.cxx +23 -20
  366. package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +20 -18
  367. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +80 -67
  368. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +31 -27
  369. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +187 -149
  370. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +190 -145
  371. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +98 -80
  372. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +38 -33
  373. package/deps/couchbase-cxx-client/core/operations/document_prepend.cxx +18 -15
  374. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +18 -16
  375. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +367 -356
  376. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +83 -79
  377. package/deps/couchbase-cxx-client/core/operations/document_remove.cxx +18 -15
  378. package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +18 -16
  379. package/deps/couchbase-cxx-client/core/operations/document_replace.cxx +27 -24
  380. package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +22 -20
  381. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +322 -308
  382. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +125 -121
  383. package/deps/couchbase-cxx-client/core/operations/document_touch.cxx +16 -14
  384. package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +19 -17
  385. package/deps/couchbase-cxx-client/core/operations/document_unlock.cxx +16 -14
  386. package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +19 -17
  387. package/deps/couchbase-cxx-client/core/operations/document_upsert.cxx +26 -23
  388. package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +21 -19
  389. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +169 -159
  390. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +68 -65
  391. package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +38 -35
  392. package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +12 -10
  393. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +58 -56
  394. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +20 -17
  395. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +49 -44
  396. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +18 -15
  397. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.cxx +46 -43
  398. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +16 -13
  399. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +48 -43
  400. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +17 -14
  401. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +48 -43
  402. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +17 -14
  403. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +38 -35
  404. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +16 -14
  405. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.cxx +68 -66
  406. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +20 -17
  407. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +56 -51
  408. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +19 -16
  409. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.cxx +44 -42
  410. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +16 -13
  411. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +49 -43
  412. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +23 -20
  413. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.cxx +52 -51
  414. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +33 -30
  415. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +46 -42
  416. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +22 -19
  417. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +70 -67
  418. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +22 -19
  419. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +92 -85
  420. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +27 -24
  421. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.cxx +52 -51
  422. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +33 -30
  423. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_utils.hxx +6 -4
  424. package/deps/couchbase-cxx-client/core/operations/management/analytics_problem.hxx +2 -2
  425. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +158 -149
  426. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +14 -12
  427. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +118 -42
  428. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +47 -22
  429. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +19 -18
  430. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +13 -11
  431. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +25 -24
  432. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +13 -11
  433. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +24 -22
  434. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +14 -12
  435. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.cxx +25 -23
  436. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +13 -11
  437. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +112 -107
  438. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +15 -13
  439. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +22 -20
  440. package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +13 -11
  441. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.cxx +52 -50
  442. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +31 -29
  443. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.cxx +14 -12
  444. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +13 -11
  445. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +48 -46
  446. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +19 -16
  447. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +37 -35
  448. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +16 -14
  449. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +49 -47
  450. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +19 -16
  451. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.cxx +11 -9
  452. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +17 -13
  453. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +210 -198
  454. package/deps/couchbase-cxx-client/core/operations/management/error_utils.hxx +3 -1
  455. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +30 -28
  456. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +17 -14
  457. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +31 -29
  458. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +17 -14
  459. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.cxx +49 -43
  460. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +17 -14
  461. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +29 -27
  462. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +18 -15
  463. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.cxx +45 -39
  464. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +17 -14
  465. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +30 -28
  466. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +17 -14
  467. package/deps/couchbase-cxx-client/core/operations/management/eventing_problem.hxx +3 -3
  468. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +30 -28
  469. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +17 -14
  470. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +30 -28
  471. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +17 -14
  472. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +328 -318
  473. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +17 -14
  474. package/deps/couchbase-cxx-client/core/operations/management/freeform.cxx +23 -22
  475. package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +19 -17
  476. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +18 -17
  477. package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +13 -11
  478. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +25 -23
  479. package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +14 -12
  480. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +23 -22
  481. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +13 -11
  482. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.cxx +58 -55
  483. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +14 -12
  484. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +53 -48
  485. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +25 -22
  486. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +75 -67
  487. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +128 -122
  488. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +31 -28
  489. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +95 -93
  490. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +26 -24
  491. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +97 -93
  492. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +24 -21
  493. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +66 -62
  494. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +24 -22
  495. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.cxx +24 -22
  496. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +13 -11
  497. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +38 -36
  498. package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +15 -13
  499. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +33 -32
  500. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +15 -13
  501. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +27 -25
  502. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +14 -12
  503. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +12 -10
  504. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +13 -11
  505. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +72 -67
  506. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +20 -18
  507. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +62 -59
  508. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +19 -16
  509. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +62 -59
  510. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +19 -17
  511. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +62 -59
  512. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +19 -16
  513. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +58 -55
  514. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +18 -15
  515. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +59 -56
  516. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +18 -16
  517. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +51 -46
  518. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +18 -15
  519. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +66 -61
  520. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +19 -17
  521. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +38 -36
  522. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +17 -14
  523. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +98 -95
  524. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +20 -17
  525. package/deps/couchbase-cxx-client/core/operations/management/user_drop.cxx +18 -17
  526. package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +16 -12
  527. package/deps/couchbase-cxx-client/core/operations/management/user_get.cxx +25 -23
  528. package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +17 -13
  529. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.cxx +24 -22
  530. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +16 -12
  531. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.cxx +63 -60
  532. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +17 -13
  533. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +16 -12
  534. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +15 -13
  535. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +40 -35
  536. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +16 -14
  537. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +73 -69
  538. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +16 -13
  539. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +39 -35
  540. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +15 -12
  541. package/deps/couchbase-cxx-client/core/origin.cxx +259 -249
  542. package/deps/couchbase-cxx-client/core/origin.hxx +55 -49
  543. package/deps/couchbase-cxx-client/core/pending_operation.hxx +3 -3
  544. package/deps/couchbase-cxx-client/core/ping_collector.hxx +3 -3
  545. package/deps/couchbase-cxx-client/core/ping_options.hxx +30 -30
  546. package/deps/couchbase-cxx-client/core/ping_reporter.hxx +3 -3
  547. package/deps/couchbase-cxx-client/core/platform/backtrace.c +100 -91
  548. package/deps/couchbase-cxx-client/core/platform/base64.cc +135 -134
  549. package/deps/couchbase-cxx-client/core/platform/dirutils.cc +66 -63
  550. package/deps/couchbase-cxx-client/core/platform/random.cc +43 -42
  551. package/deps/couchbase-cxx-client/core/platform/random.h +4 -4
  552. package/deps/couchbase-cxx-client/core/platform/string_hex.cc +42 -40
  553. package/deps/couchbase-cxx-client/core/platform/terminate_handler.cc +54 -52
  554. package/deps/couchbase-cxx-client/core/platform/uuid.cc +47 -47
  555. package/deps/couchbase-cxx-client/core/protocol/client_opcode.hxx +336 -327
  556. package/deps/couchbase-cxx-client/core/protocol/client_opcode_fmt.hxx +291 -291
  557. package/deps/couchbase-cxx-client/core/protocol/client_request.cxx +13 -10
  558. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +133 -130
  559. package/deps/couchbase-cxx-client/core/protocol/client_response.cxx +40 -40
  560. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +153 -150
  561. package/deps/couchbase-cxx-client/core/protocol/cmd_append.cxx +24 -23
  562. package/deps/couchbase-cxx-client/core/protocol/cmd_append.hxx +65 -65
  563. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.cxx +25 -21
  564. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +33 -25
  565. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.cxx +38 -38
  566. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.hxx +87 -87
  567. package/deps/couchbase-cxx-client/core/protocol/cmd_get.cxx +17 -17
  568. package/deps/couchbase-cxx-client/core/protocol/cmd_get.hxx +59 -59
  569. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.cxx +20 -20
  570. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.hxx +72 -72
  571. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.cxx +20 -20
  572. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.hxx +72 -72
  573. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.cxx +46 -39
  574. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.hxx +57 -49
  575. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.cxx +17 -17
  576. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.hxx +59 -59
  577. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.cxx +16 -14
  578. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.hxx +39 -39
  579. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.cxx +18 -17
  580. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.hxx +62 -62
  581. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.cxx +24 -23
  582. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.hxx +81 -79
  583. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.cxx +23 -23
  584. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.hxx +44 -44
  585. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.cxx +28 -27
  586. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +106 -105
  587. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.cxx +38 -38
  588. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.hxx +87 -87
  589. package/deps/couchbase-cxx-client/core/protocol/cmd_info.hxx +3 -3
  590. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.cxx +27 -27
  591. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.hxx +81 -81
  592. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.cxx +54 -51
  593. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.hxx +90 -90
  594. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.cxx +54 -51
  595. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.hxx +88 -88
  596. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.cxx +105 -97
  597. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +161 -153
  598. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.cxx +4 -4
  599. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.hxx +32 -32
  600. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.cxx +36 -34
  601. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +89 -89
  602. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.cxx +22 -22
  603. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.hxx +63 -63
  604. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.cxx +23 -23
  605. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.hxx +54 -54
  606. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.cxx +28 -28
  607. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.hxx +88 -88
  608. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.cxx +17 -15
  609. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.hxx +56 -56
  610. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.cxx +24 -19
  611. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.hxx +39 -39
  612. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.cxx +17 -15
  613. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.hxx +56 -56
  614. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.cxx +6 -6
  615. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.hxx +36 -36
  616. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.cxx +8 -8
  617. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.hxx +38 -38
  618. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.cxx +5 -5
  619. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.hxx +36 -36
  620. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.cxx +28 -28
  621. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.hxx +83 -83
  622. package/deps/couchbase-cxx-client/core/protocol/datatype.hxx +19 -18
  623. package/deps/couchbase-cxx-client/core/protocol/frame_info_id.hxx +108 -103
  624. package/deps/couchbase-cxx-client/core/protocol/frame_info_id_fmt.hxx +45 -45
  625. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.cxx +24 -21
  626. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.hxx +3 -1
  627. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +211 -175
  628. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +93 -90
  629. package/deps/couchbase-cxx-client/core/protocol/magic.hxx +24 -24
  630. package/deps/couchbase-cxx-client/core/protocol/magic_fmt.hxx +30 -30
  631. package/deps/couchbase-cxx-client/core/protocol/server_opcode.hxx +11 -11
  632. package/deps/couchbase-cxx-client/core/protocol/server_opcode_fmt.hxx +18 -18
  633. package/deps/couchbase-cxx-client/core/protocol/server_request.hxx +90 -86
  634. package/deps/couchbase-cxx-client/core/protocol/status.cxx +138 -138
  635. package/deps/couchbase-cxx-client/core/protocol/status.hxx +86 -86
  636. package/deps/couchbase-cxx-client/core/query_context.hxx +44 -43
  637. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.cxx +51 -50
  638. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.hxx +26 -25
  639. package/deps/couchbase-cxx-client/core/range_scan_options.cxx +2 -2
  640. package/deps/couchbase-cxx-client/core/range_scan_options.hxx +62 -59
  641. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +515 -470
  642. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +23 -18
  643. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +10 -10
  644. package/deps/couchbase-cxx-client/core/resource_units.hxx +2 -2
  645. package/deps/couchbase-cxx-client/core/response_handler.hxx +8 -8
  646. package/deps/couchbase-cxx-client/core/retry_orchestrator.cxx +27 -19
  647. package/deps/couchbase-cxx-client/core/retry_orchestrator.hxx +3 -2
  648. package/deps/couchbase-cxx-client/core/sasl/client.cc +22 -18
  649. package/deps/couchbase-cxx-client/core/sasl/client.h +66 -62
  650. package/deps/couchbase-cxx-client/core/sasl/context.cc +4 -4
  651. package/deps/couchbase-cxx-client/core/sasl/context.h +19 -19
  652. package/deps/couchbase-cxx-client/core/sasl/error.h +12 -1
  653. package/deps/couchbase-cxx-client/core/sasl/error_fmt.h +42 -42
  654. package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +13 -10
  655. package/deps/couchbase-cxx-client/core/sasl/mechanism.h +8 -3
  656. package/deps/couchbase-cxx-client/core/sasl/plain/plain.cc +8 -8
  657. package/deps/couchbase-cxx-client/core/sasl/plain/plain.h +25 -24
  658. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.cc +225 -218
  659. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.h +133 -115
  660. package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.cc +20 -20
  661. package/deps/couchbase-cxx-client/core/scan_result.cxx +38 -38
  662. package/deps/couchbase-cxx-client/core/scan_result.hxx +16 -16
  663. package/deps/couchbase-cxx-client/core/search_highlight_style.hxx +4 -1
  664. package/deps/couchbase-cxx-client/core/search_query_options.cxx +21 -21
  665. package/deps/couchbase-cxx-client/core/search_query_options.hxx +19 -18
  666. package/deps/couchbase-cxx-client/core/search_scan_consistency.hxx +3 -1
  667. package/deps/couchbase-cxx-client/core/seed_config.cxx +10 -7
  668. package/deps/couchbase-cxx-client/core/seed_config.hxx +8 -8
  669. package/deps/couchbase-cxx-client/core/service_type.hxx +7 -7
  670. package/deps/couchbase-cxx-client/core/service_type_fmt.hxx +33 -33
  671. package/deps/couchbase-cxx-client/core/stats_options.hxx +13 -13
  672. package/deps/couchbase-cxx-client/core/subdoc_options.hxx +60 -58
  673. package/deps/couchbase-cxx-client/core/tls_verify_mode.hxx +2 -2
  674. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +83 -83
  675. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +111 -111
  676. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +14 -14
  677. package/deps/couchbase-cxx-client/core/topology/collections_manifest_fmt.hxx +23 -21
  678. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +26 -25
  679. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +213 -192
  680. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +104 -91
  681. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +131 -128
  682. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +276 -242
  683. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +5 -5
  684. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +65 -60
  685. package/deps/couchbase-cxx-client/core/tracing/constants.hxx +153 -153
  686. package/deps/couchbase-cxx-client/core/tracing/noop_tracer.hxx +29 -28
  687. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +30 -30
  688. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +354 -344
  689. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +12 -12
  690. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +153 -33
  691. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +30 -118
  692. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +8 -2
  693. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +163 -127
  694. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +358 -334
  695. package/deps/couchbase-cxx-client/core/transactions/atr_ids.cxx +270 -185
  696. package/deps/couchbase-cxx-client/core/transactions/atr_ids.hxx +4 -4
  697. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +9 -5
  698. package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +194 -154
  699. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +3278 -2159
  700. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +446 -573
  701. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +15 -10
  702. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +58 -49
  703. package/deps/couchbase-cxx-client/core/transactions/attempt_state.hxx +72 -72
  704. package/deps/couchbase-cxx-client/core/transactions/binary.cxx +3 -3
  705. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +2 -2
  706. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +28 -24
  707. package/deps/couchbase-cxx-client/core/transactions/document_metadata.hxx +68 -68
  708. package/deps/couchbase-cxx-client/core/transactions/durability_level.hxx +53 -53
  709. package/deps/couchbase-cxx-client/core/transactions/error_class.hxx +12 -12
  710. package/deps/couchbase-cxx-client/core/transactions/error_list.hxx +22 -22
  711. package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +167 -114
  712. package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +170 -139
  713. package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +105 -0
  714. package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +220 -0
  715. package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +63 -207
  716. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +110 -102
  717. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +144 -144
  718. package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +53 -50
  719. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +5 -5
  720. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +38 -35
  721. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +17 -16
  722. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +238 -281
  723. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal_fmt.hxx +103 -0
  724. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +52 -29
  725. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_attempt.hxx +3 -3
  726. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +136 -120
  727. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +2 -1
  728. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +127 -122
  729. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +244 -219
  730. package/deps/couchbase-cxx-client/core/transactions/result.cxx +41 -40
  731. package/deps/couchbase-cxx-client/core/transactions/result.hxx +143 -141
  732. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +21 -20
  733. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +759 -627
  734. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +175 -156
  735. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +231 -179
  736. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.cxx +185 -198
  737. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +207 -222
  738. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +15 -11
  739. package/deps/couchbase-cxx-client/core/transactions/transaction_links.cxx +11 -7
  740. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +222 -201
  741. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +44 -41
  742. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +167 -125
  743. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +491 -424
  744. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +25 -19
  745. package/deps/couchbase-cxx-client/core/transactions/uid_generator.cxx +3 -3
  746. package/deps/couchbase-cxx-client/core/transactions/uid_generator.hxx +2 -2
  747. package/deps/couchbase-cxx-client/core/transactions/utils.cxx +82 -69
  748. package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +154 -140
  749. package/deps/couchbase-cxx-client/core/transactions.hxx +184 -180
  750. package/deps/couchbase-cxx-client/core/utils/binary.cxx +3 -3
  751. package/deps/couchbase-cxx-client/core/utils/binary.hxx +19 -15
  752. package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +17 -17
  753. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +395 -328
  754. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +37 -36
  755. package/deps/couchbase-cxx-client/core/utils/crc32.hxx +42 -34
  756. package/deps/couchbase-cxx-client/core/utils/duration_parser.cxx +142 -133
  757. package/deps/couchbase-cxx-client/core/utils/duration_parser.hxx +9 -9
  758. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +24 -24
  759. package/deps/couchbase-cxx-client/core/utils/json.cxx +234 -228
  760. package/deps/couchbase-cxx-client/core/utils/json.hxx +12 -12
  761. package/deps/couchbase-cxx-client/core/utils/json_stream_control.hxx +8 -8
  762. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.cxx +288 -263
  763. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.hxx +20 -17
  764. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +22 -21
  765. package/deps/couchbase-cxx-client/core/utils/movable_function.hxx +78 -76
  766. package/deps/couchbase-cxx-client/core/utils/mutation_token.cxx +7 -3
  767. package/deps/couchbase-cxx-client/core/utils/mutation_token.hxx +3 -1
  768. package/deps/couchbase-cxx-client/core/utils/name_codec.hxx +13 -13
  769. package/deps/couchbase-cxx-client/core/utils/split_string.cxx +9 -9
  770. package/deps/couchbase-cxx-client/core/utils/split_string.hxx +2 -2
  771. package/deps/couchbase-cxx-client/core/utils/unsigned_leb128.hxx +92 -88
  772. package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +301 -297
  773. package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +35 -35
  774. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +4 -1
  775. package/deps/couchbase-cxx-client/core/view_on_error.hxx +4 -3
  776. package/deps/couchbase-cxx-client/core/view_query_options.cxx +21 -21
  777. package/deps/couchbase-cxx-client/core/view_query_options.hxx +23 -22
  778. package/deps/couchbase-cxx-client/core/view_scan_consistency.hxx +3 -3
  779. package/deps/couchbase-cxx-client/core/view_sort_order.hxx +4 -1
  780. package/deps/couchbase-cxx-client/core/wait_until_ready_options.hxx +11 -10
  781. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +11 -11
  782. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +423 -405
  783. package/deps/couchbase-cxx-client/couchbase/analytics_meta_data.hxx +105 -105
  784. package/deps/couchbase-cxx-client/couchbase/analytics_metrics.hxx +120 -118
  785. package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +318 -292
  786. package/deps/couchbase-cxx-client/couchbase/analytics_result.hxx +56 -55
  787. package/deps/couchbase-cxx-client/couchbase/analytics_scan_consistency.hxx +24 -21
  788. package/deps/couchbase-cxx-client/couchbase/analytics_status.hxx +10 -10
  789. package/deps/couchbase-cxx-client/couchbase/analytics_warning.hxx +44 -43
  790. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +9 -9
  791. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +51 -47
  792. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +75 -69
  793. package/deps/couchbase-cxx-client/couchbase/best_effort_retry_strategy.hxx +12 -10
  794. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +213 -183
  795. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +38 -38
  796. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +166 -157
  797. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +69 -68
  798. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +97 -88
  799. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +22 -21
  800. package/deps/couchbase-cxx-client/couchbase/cas.hxx +74 -73
  801. package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +10 -10
  802. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +266 -310
  803. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +235 -241
  804. package/deps/couchbase-cxx-client/couchbase/codec/binary_noop_serializer.hxx +11 -11
  805. package/deps/couchbase-cxx-client/couchbase/codec/codec_flags.hxx +39 -35
  806. package/deps/couchbase-cxx-client/couchbase/codec/encoded_value.hxx +15 -2
  807. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +17 -15
  808. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +19 -17
  809. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +31 -24
  810. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +20 -18
  811. package/deps/couchbase-cxx-client/couchbase/codec/tao_json_serializer.hxx +38 -30
  812. package/deps/couchbase-cxx-client/couchbase/collection.hxx +1007 -902
  813. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +115 -107
  814. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +200 -188
  815. package/deps/couchbase-cxx-client/couchbase/common_durability_options.hxx +68 -62
  816. package/deps/couchbase-cxx-client/couchbase/common_options.hxx +67 -67
  817. package/deps/couchbase-cxx-client/couchbase/compression_options.hxx +33 -33
  818. package/deps/couchbase-cxx-client/couchbase/configuration_profile.hxx +12 -11
  819. package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +24 -22
  820. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +47 -45
  821. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +74 -72
  822. package/deps/couchbase-cxx-client/couchbase/counter_result.hxx +32 -32
  823. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +9 -10
  824. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +35 -34
  825. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +76 -76
  826. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +44 -44
  827. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +60 -60
  828. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +25 -25
  829. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +95 -94
  830. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +97 -96
  831. package/deps/couchbase-cxx-client/couchbase/create_scope_options.hxx +9 -9
  832. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +29 -27
  833. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +20 -20
  834. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +14 -14
  835. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +219 -205
  836. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +93 -91
  837. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +42 -41
  838. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +82 -83
  839. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +11 -10
  840. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +62 -62
  841. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +61 -60
  842. package/deps/couchbase-cxx-client/couchbase/dns_options.hxx +30 -30
  843. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +69 -69
  844. package/deps/couchbase-cxx-client/couchbase/drop_bucket_options.hxx +9 -9
  845. package/deps/couchbase-cxx-client/couchbase/drop_collection_options.hxx +9 -9
  846. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +60 -60
  847. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +44 -44
  848. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +60 -60
  849. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +25 -25
  850. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +58 -58
  851. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +44 -44
  852. package/deps/couchbase-cxx-client/couchbase/drop_scope_options.hxx +9 -9
  853. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +9 -9
  854. package/deps/couchbase-cxx-client/couchbase/durability_level.hxx +32 -29
  855. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +171 -171
  856. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +166 -169
  857. package/deps/couchbase-cxx-client/couchbase/error.hxx +51 -0
  858. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +975 -940
  859. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +19 -152
  860. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +25 -24
  861. package/deps/couchbase-cxx-client/couchbase/exists_result.hxx +32 -32
  862. package/deps/couchbase-cxx-client/couchbase/fail_fast_retry_strategy.hxx +4 -4
  863. package/deps/couchbase-cxx-client/couchbase/flush_bucket_options.hxx +9 -9
  864. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +18 -18
  865. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_status.hxx +42 -42
  866. package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +10 -10
  867. package/deps/couchbase-cxx-client/couchbase/fmt/durability_level.hxx +24 -24
  868. package/deps/couchbase-cxx-client/couchbase/fmt/error.hxx +53 -0
  869. package/deps/couchbase-cxx-client/couchbase/fmt/error_context.hxx +43 -0
  870. package/deps/couchbase-cxx-client/couchbase/fmt/mutation_token.hxx +15 -11
  871. package/deps/couchbase-cxx-client/couchbase/fmt/query_profile.hxx +21 -21
  872. package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +18 -18
  873. package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +42 -42
  874. package/deps/couchbase-cxx-client/couchbase/fmt/retry_reason.hxx +75 -75
  875. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +15 -15
  876. package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +18 -18
  877. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +15 -11
  878. package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +12 -12
  879. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +9 -9
  880. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +71 -64
  881. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +73 -66
  882. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +2 -2
  883. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +40 -39
  884. package/deps/couchbase-cxx-client/couchbase/get_all_buckets_options.hxx +9 -9
  885. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +25 -25
  886. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +26 -25
  887. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +27 -25
  888. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +49 -26
  889. package/deps/couchbase-cxx-client/couchbase/get_all_scopes_options.hxx +9 -9
  890. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +9 -9
  891. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +25 -24
  892. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +25 -24
  893. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +49 -26
  894. package/deps/couchbase-cxx-client/couchbase/get_bucket_options.hxx +9 -9
  895. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +9 -9
  896. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +74 -74
  897. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +63 -60
  898. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +30 -28
  899. package/deps/couchbase-cxx-client/couchbase/get_replica_result.hxx +79 -75
  900. package/deps/couchbase-cxx-client/couchbase/get_result.hxx +86 -80
  901. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +9 -9
  902. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +14 -14
  903. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +94 -91
  904. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +62 -59
  905. package/deps/couchbase-cxx-client/couchbase/ip_protocol.hxx +3 -3
  906. package/deps/couchbase-cxx-client/couchbase/logger.hxx +51 -0
  907. package/deps/couchbase-cxx-client/couchbase/lookup_in_all_replicas_options.hxx +54 -43
  908. package/deps/couchbase-cxx-client/couchbase/lookup_in_any_replica_options.hxx +54 -44
  909. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +40 -40
  910. package/deps/couchbase-cxx-client/couchbase/lookup_in_replica_result.hxx +38 -35
  911. package/deps/couchbase-cxx-client/couchbase/lookup_in_result.hxx +222 -216
  912. package/deps/couchbase-cxx-client/couchbase/lookup_in_specs.hxx +101 -101
  913. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +16 -16
  914. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +16 -16
  915. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +193 -189
  916. package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +91 -75
  917. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +4 -4
  918. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +10 -10
  919. package/deps/couchbase-cxx-client/couchbase/management/scope_spec.hxx +2 -2
  920. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +9 -9
  921. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +10 -9
  922. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +10 -9
  923. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +15 -14
  924. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +70 -65
  925. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +115 -114
  926. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +33 -30
  927. package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +86 -74
  928. package/deps/couchbase-cxx-client/couchbase/metrics_options.hxx +34 -34
  929. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +160 -149
  930. package/deps/couchbase-cxx-client/couchbase/mutate_in_result.hxx +130 -123
  931. package/deps/couchbase-cxx-client/couchbase/mutate_in_specs.hxx +473 -454
  932. package/deps/couchbase-cxx-client/couchbase/mutation_result.hxx +32 -32
  933. package/deps/couchbase-cxx-client/couchbase/mutation_state.hxx +35 -34
  934. package/deps/couchbase-cxx-client/couchbase/mutation_token.hxx +78 -78
  935. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +101 -72
  936. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +26 -26
  937. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +20 -20
  938. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +14 -14
  939. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +97 -95
  940. package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +17 -17
  941. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +11 -10
  942. package/deps/couchbase-cxx-client/couchbase/persist_to.hxx +45 -44
  943. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +69 -65
  944. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +55 -54
  945. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +79 -77
  946. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +43 -40
  947. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +51 -47
  948. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +207 -199
  949. package/deps/couchbase-cxx-client/couchbase/query_meta_data.hxx +120 -120
  950. package/deps/couchbase-cxx-client/couchbase/query_metrics.hxx +135 -133
  951. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +518 -493
  952. package/deps/couchbase-cxx-client/couchbase/query_profile.hxx +29 -26
  953. package/deps/couchbase-cxx-client/couchbase/query_result.hxx +56 -55
  954. package/deps/couchbase-cxx-client/couchbase/query_scan_consistency.hxx +24 -21
  955. package/deps/couchbase-cxx-client/couchbase/query_status.hxx +10 -10
  956. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +34 -29
  957. package/deps/couchbase-cxx-client/couchbase/query_warning.hxx +75 -71
  958. package/deps/couchbase-cxx-client/couchbase/read_preference.hxx +58 -0
  959. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +40 -39
  960. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +51 -47
  961. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +25 -25
  962. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +112 -104
  963. package/deps/couchbase-cxx-client/couchbase/replicate_to.hxx +28 -28
  964. package/deps/couchbase-cxx-client/couchbase/result.hxx +28 -28
  965. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +11 -10
  966. package/deps/couchbase-cxx-client/couchbase/retry_action.hxx +10 -10
  967. package/deps/couchbase-cxx-client/couchbase/retry_reason.hxx +53 -51
  968. package/deps/couchbase-cxx-client/couchbase/retry_request.hxx +7 -7
  969. package/deps/couchbase-cxx-client/couchbase/retry_strategy.hxx +4 -4
  970. package/deps/couchbase-cxx-client/couchbase/scan_options.hxx +114 -108
  971. package/deps/couchbase-cxx-client/couchbase/scan_result.hxx +97 -96
  972. package/deps/couchbase-cxx-client/couchbase/scan_result_item.hxx +120 -118
  973. package/deps/couchbase-cxx-client/couchbase/scan_type.hxx +237 -232
  974. package/deps/couchbase-cxx-client/couchbase/scope.hxx +164 -157
  975. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +263 -238
  976. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +32 -29
  977. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +25 -25
  978. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +11 -11
  979. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +11 -1
  980. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +261 -238
  981. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +37 -37
  982. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +84 -83
  983. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +32 -32
  984. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +449 -435
  985. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +32 -30
  986. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +69 -68
  987. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +29 -26
  988. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +52 -52
  989. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +20 -20
  990. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +39 -38
  991. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +11 -10
  992. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +20 -20
  993. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +77 -71
  994. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +2 -2
  995. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +3 -3
  996. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +4 -4
  997. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +41 -41
  998. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +23 -23
  999. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +23 -23
  1000. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +17 -17
  1001. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +50 -50
  1002. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +34 -34
  1003. package/deps/couchbase-cxx-client/couchbase/store_semantics.hxx +28 -28
  1004. package/deps/couchbase-cxx-client/couchbase/subdoc/array_add_unique.hxx +54 -54
  1005. package/deps/couchbase-cxx-client/couchbase/subdoc/array_append.hxx +40 -40
  1006. package/deps/couchbase-cxx-client/couchbase/subdoc/array_insert.hxx +41 -41
  1007. package/deps/couchbase-cxx-client/couchbase/subdoc/array_prepend.hxx +41 -41
  1008. package/deps/couchbase-cxx-client/couchbase/subdoc/count.hxx +24 -24
  1009. package/deps/couchbase-cxx-client/couchbase/subdoc/counter.hxx +41 -41
  1010. package/deps/couchbase-cxx-client/couchbase/subdoc/exists.hxx +24 -24
  1011. package/deps/couchbase-cxx-client/couchbase/subdoc/get.hxx +45 -29
  1012. package/deps/couchbase-cxx-client/couchbase/subdoc/insert.hxx +70 -54
  1013. package/deps/couchbase-cxx-client/couchbase/subdoc/lookup_in_macro.hxx +13 -12
  1014. package/deps/couchbase-cxx-client/couchbase/subdoc/mutate_in_macro.hxx +7 -2
  1015. package/deps/couchbase-cxx-client/couchbase/subdoc/remove.hxx +24 -24
  1016. package/deps/couchbase-cxx-client/couchbase/subdoc/replace.hxx +55 -39
  1017. package/deps/couchbase-cxx-client/couchbase/subdoc/upsert.hxx +70 -54
  1018. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +16 -16
  1019. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +14 -14
  1020. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +107 -104
  1021. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +99 -96
  1022. package/deps/couchbase-cxx-client/couchbase/timeout_options.hxx +118 -112
  1023. package/deps/couchbase-cxx-client/couchbase/tls_verify_mode.hxx +2 -2
  1024. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +25 -24
  1025. package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +45 -44
  1026. package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +34 -34
  1027. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +27 -25
  1028. package/deps/couchbase-cxx-client/couchbase/tracing_options.hxx +147 -142
  1029. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +149 -115
  1030. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +146 -95
  1031. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_result.hxx +52 -80
  1032. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +33 -29
  1033. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +101 -96
  1034. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +228 -223
  1035. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_result.hxx +11 -12
  1036. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +2 -3
  1037. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +105 -104
  1038. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +191 -187
  1039. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_query_config.hxx +32 -32
  1040. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +56 -37
  1041. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +11 -10
  1042. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +25 -24
  1043. package/deps/couchbase-cxx-client/couchbase/update_bucket_options.hxx +9 -9
  1044. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +35 -34
  1045. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +85 -80
  1046. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +9 -9
  1047. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +82 -62
  1048. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +51 -47
  1049. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +45 -41
  1050. package/deps/couchbase-cxx-client/couchbase/wan_development_configuration_profile.hxx +13 -13
  1051. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +41 -41
  1052. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +42 -41
  1053. package/deps/couchbase-cxx-client/third_party/expected/include/tl/expected.hpp +1746 -1584
  1054. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.c +2664 -2638
  1055. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.h +359 -342
  1056. package/dist/binding.d.ts +39 -4
  1057. package/dist/binding.js +4 -1
  1058. package/dist/collection.js +0 -1
  1059. package/dist/diagnosticstypes.js +2 -2
  1060. package/dist/searchtypes.d.ts +0 -4
  1061. package/dist/searchtypes.js +0 -4
  1062. package/dist/transactions.d.ts +1 -0
  1063. package/dist/transactions.js +12 -2
  1064. package/dist/vectorsearch.d.ts +4 -19
  1065. package/dist/vectorsearch.js +24 -19
  1066. package/package.json +28 -28
  1067. package/src/constants.cpp +111 -75
  1068. package/src/jstocbpp_autogen.hpp +146 -15
  1069. package/src/jstocbpp_basic.hpp +23 -0
  1070. package/src/jstocbpp_errors.hpp +9 -9
  1071. package/src/jstocbpp_transactions.hpp +17 -12
  1072. package/src/transaction.cpp +10 -5
  1073. package/tools/gen-bindings-js.js +1 -0
  1074. package/tools/gen-bindings-json.py +5 -2
  1075. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.cxx +0 -113
  1076. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.hxx +0 -60
  1077. package/deps/couchbase-cxx-client/core/impl/manager_error_context.cxx +0 -100
  1078. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +0 -147
  1079. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +0 -143
  1080. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +0 -100
  1081. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +0 -269
  1082. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +0 -229
  1083. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +0 -136
  1084. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_info.hxx +0 -138
  1085. package/deps/couchbase-cxx-client/couchbase/key_value_extended_error_info.hxx +0 -86
  1086. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +0 -109
  1087. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -111
  1088. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +0 -145
  1089. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +0 -138
  1090. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +0 -147
  1091. package/deps/couchbase-cxx-client/couchbase/transaction_op_error_context.hxx +0 -76
@@ -22,12 +22,16 @@
22
22
  #include "core/operations/document_decrement.hxx"
23
23
  #include "core/operations/document_exists.hxx"
24
24
  #include "core/operations/document_get.hxx"
25
+ #include "core/operations/document_get_all_replicas.hxx"
25
26
  #include "core/operations/document_get_and_lock.hxx"
26
27
  #include "core/operations/document_get_and_touch.hxx"
28
+ #include "core/operations/document_get_any_replica.hxx"
27
29
  #include "core/operations/document_get_projected.hxx"
28
30
  #include "core/operations/document_increment.hxx"
29
31
  #include "core/operations/document_insert.hxx"
30
32
  #include "core/operations/document_lookup_in.hxx"
33
+ #include "core/operations/document_lookup_in_all_replicas.hxx"
34
+ #include "core/operations/document_lookup_in_any_replica.hxx"
31
35
  #include "core/operations/document_mutate_in.hxx"
32
36
  #include "core/operations/document_prepend.hxx"
33
37
  #include "core/operations/document_remove.hxx"
@@ -37,6 +41,7 @@
37
41
  #include "core/operations/document_upsert.hxx"
38
42
  #include "core/range_scan_options.hxx"
39
43
  #include "core/range_scan_orchestrator.hxx"
44
+ #include "error.hxx"
40
45
  #include "get_all_replicas.hxx"
41
46
  #include "get_any_replica.hxx"
42
47
  #include "get_replica.hxx"
@@ -54,1059 +59,827 @@ namespace couchbase
54
59
  {
55
60
  class collection_impl : public std::enable_shared_from_this<collection_impl>
56
61
  {
57
- public:
58
- collection_impl(core::cluster core, std::string_view bucket_name, std::string_view scope_name, std::string_view name)
59
- : core_{ std::move(core) }
60
- , bucket_name_{ bucket_name }
61
- , scope_name_{ scope_name }
62
- , name_{ name }
63
- {
62
+ public:
63
+ collection_impl(core::cluster core,
64
+ std::string_view bucket_name,
65
+ std::string_view scope_name,
66
+ std::string_view name)
67
+ : core_{ std::move(core) }
68
+ , bucket_name_{ bucket_name }
69
+ , scope_name_{ scope_name }
70
+ , name_{ name }
71
+ {
72
+ }
73
+
74
+ [[nodiscard]] auto bucket_name() const -> const std::string&
75
+ {
76
+ return bucket_name_;
77
+ }
78
+
79
+ [[nodiscard]] auto scope_name() const -> const std::string&
80
+ {
81
+ return scope_name_;
82
+ }
83
+
84
+ [[nodiscard]] auto name() const -> const std::string&
85
+ {
86
+ return name_;
87
+ }
88
+
89
+ [[nodiscard]] auto core() const -> const core::cluster&
90
+ {
91
+ return core_;
92
+ }
93
+
94
+ void get(std::string document_key, get_options::built options, get_handler&& handler) const
95
+ {
96
+ if (!options.with_expiry && options.projections.empty()) {
97
+ return core_.execute(
98
+ core::operations::get_request{
99
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
100
+ {},
101
+ {},
102
+ options.timeout,
103
+ { options.retry_strategy },
104
+ },
105
+ [handler = std::move(handler)](auto resp) mutable {
106
+ return handler(core::impl::make_error(std::move(resp.ctx)),
107
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
108
+ });
64
109
  }
65
-
66
- [[nodiscard]] auto bucket_name() const -> const std::string&
67
- {
68
- return bucket_name_;
69
- }
70
-
71
- [[nodiscard]] auto scope_name() const -> const std::string&
72
- {
73
- return scope_name_;
74
- }
75
-
76
- [[nodiscard]] auto name() const -> const std::string&
77
- {
78
- return name_;
79
- }
80
-
81
- [[nodiscard]] auto core() const -> const core::cluster&
82
- {
83
- return core_;
84
- }
85
-
86
- void get(std::string document_key, get_options::built options, get_handler&& handler) const
87
- {
88
- if (!options.with_expiry && options.projections.empty()) {
89
- return core_.execute(
90
- core::operations::get_request{
91
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
92
- {},
93
- {},
94
- options.timeout,
95
- { options.retry_strategy },
96
- },
97
- [handler = std::move(handler)](auto resp) mutable {
98
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
99
- });
110
+ return core_.execute(
111
+ core::operations::get_projected_request{
112
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
113
+ {},
114
+ {},
115
+ options.projections,
116
+ options.with_expiry,
117
+ {},
118
+ false,
119
+ options.timeout,
120
+ { options.retry_strategy },
121
+ },
122
+ [handler = std::move(handler)](auto resp) mutable {
123
+ std::optional<std::chrono::system_clock::time_point> expiry_time{};
124
+ if (resp.expiry && resp.expiry.value() > 0) {
125
+ expiry_time.emplace(std::chrono::seconds{ resp.expiry.value() });
100
126
  }
101
- return core_.execute(
102
- core::operations::get_projected_request{
103
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
104
- {},
105
- {},
106
- options.projections,
107
- options.with_expiry,
108
- {},
109
- false,
110
- options.timeout,
111
- { options.retry_strategy },
112
- },
113
- [handler = std::move(handler)](auto resp) mutable {
114
- std::optional<std::chrono::system_clock::time_point> expiry_time{};
115
- if (resp.expiry && resp.expiry.value() > 0) {
116
- expiry_time.emplace(std::chrono::seconds{ resp.expiry.value() });
117
- }
118
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, expiry_time });
119
- });
120
- }
121
-
122
- void get_and_touch(std::string document_key,
123
- std::uint32_t expiry,
124
- get_and_touch_options::built options,
125
- get_and_touch_handler&& handler) const
126
- {
127
- return core_.execute(
128
- core::operations::get_and_touch_request{
129
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
130
- {},
131
- {},
132
- expiry,
133
- options.timeout,
134
- { options.retry_strategy },
135
- },
136
- [handler = std::move(handler)](auto resp) mutable {
137
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
138
- });
139
- }
140
-
141
- void touch(std::string document_key, std::uint32_t expiry, touch_options::built options, touch_handler&& handler) const
142
- {
143
- return core_.execute(
144
- core::operations::touch_request{
145
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
146
- {},
147
- {},
148
- expiry,
149
- options.timeout,
150
- { options.retry_strategy },
151
- },
152
- [handler = std::move(handler)](auto resp) mutable { return handler(std::move(resp.ctx), result{ resp.cas }); });
153
- }
154
-
155
- void get_any_replica(std::string document_key,
156
- const get_any_replica_options::built& options,
157
- core::impl::movable_get_any_replica_handler&& handler) const
158
- {
159
- auto request =
160
- std::make_shared<core::impl::get_any_replica_request>(bucket_name_, scope_name_, name_, std::move(document_key), options.timeout);
161
- core_.with_bucket_configuration(
162
- bucket_name_,
163
- [core = core_, r = std::move(request), h = std::move(handler)](std::error_code ec,
164
- const core::topology::configuration& config) mutable {
165
- if (ec) {
166
- return h(make_key_value_error_context(ec, r->id()), get_replica_result{});
167
- }
168
- struct replica_context {
169
- replica_context(core::impl::movable_get_any_replica_handler&& handler, std::uint32_t expected_responses)
170
- : handler_(std::move(handler))
171
- , expected_responses_(expected_responses)
172
- {
173
- }
174
-
175
- core::impl::movable_get_any_replica_handler handler_;
176
- std::uint32_t expected_responses_;
177
- bool done_{ false };
178
- std::mutex mutex_{};
179
- };
180
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
181
-
182
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
183
- core::document_id replica_id{ r->id() };
184
- replica_id.node_index(idx);
185
- core.execute(core::impl::get_replica_request{ std::move(replica_id), r->timeout() }, [ctx](auto&& resp) {
186
- core::impl::movable_get_any_replica_handler local_handler;
187
- {
188
- const std::scoped_lock lock(ctx->mutex_);
189
- if (ctx->done_) {
190
- return;
191
- }
192
- --ctx->expected_responses_;
193
- if (resp.ctx.ec()) {
194
- if (ctx->expected_responses_ > 0) {
195
- // just ignore the response
196
- return;
197
- }
198
- // consider document irretrievable and give up
199
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
200
- }
201
- ctx->done_ = true;
202
- std::swap(local_handler, ctx->handler_);
203
- }
204
- if (local_handler) {
205
- return local_handler(std::move(resp.ctx),
206
- get_replica_result{ resp.cas, true /* replica */, { std::move(resp.value), resp.flags } });
207
- }
208
- });
209
- }
210
-
211
- core::operations::get_request active{ core::document_id{ r->id() } };
212
- active.timeout = r->timeout();
213
- core.execute(active, [ctx](auto resp) {
214
- core::impl::movable_get_any_replica_handler local_handler{};
215
- {
216
- const std::scoped_lock lock(ctx->mutex_);
217
- if (ctx->done_) {
218
- return;
219
- }
220
- --ctx->expected_responses_;
221
- if (resp.ctx.ec()) {
222
- if (ctx->expected_responses_ > 0) {
223
- // just ignore the response
224
- return;
225
- }
226
- // consider document irretrievable and give up
227
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
228
- }
229
- ctx->done_ = true;
230
- std::swap(local_handler, ctx->handler_);
231
- }
232
- if (local_handler) {
233
- return local_handler(std::move(resp.ctx),
234
- get_replica_result{ resp.cas, false /* active */, { std::move(resp.value), resp.flags } });
235
- }
236
- });
127
+ return handler(core::impl::make_error(std::move(resp.ctx)),
128
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, expiry_time });
129
+ });
130
+ }
131
+
132
+ void get_and_touch(std::string document_key,
133
+ std::uint32_t expiry,
134
+ get_and_touch_options::built options,
135
+ get_and_touch_handler&& handler) const
136
+ {
137
+ return core_.execute(
138
+ core::operations::get_and_touch_request{
139
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
140
+ {},
141
+ {},
142
+ expiry,
143
+ options.timeout,
144
+ { options.retry_strategy },
145
+ },
146
+ [handler = std::move(handler)](auto resp) mutable {
147
+ return handler(core::impl::make_error(std::move(resp.ctx)),
148
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
149
+ });
150
+ }
151
+
152
+ void touch(std::string document_key,
153
+ std::uint32_t expiry,
154
+ touch_options::built options,
155
+ touch_handler&& handler) const
156
+ {
157
+ return core_.execute(
158
+ core::operations::touch_request{
159
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
160
+ {},
161
+ {},
162
+ expiry,
163
+ options.timeout,
164
+ { options.retry_strategy },
165
+ },
166
+ [handler = std::move(handler)](auto resp) mutable {
167
+ return handler(core::impl::make_error(std::move(resp.ctx)), result{ resp.cas });
168
+ });
169
+ }
170
+
171
+ void get_any_replica(std::string document_key,
172
+ const get_any_replica_options::built& options,
173
+ core::impl::movable_get_any_replica_handler&& handler) const
174
+ {
175
+ return core_.execute(
176
+ core::operations::get_any_replica_request{
177
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
178
+ options.timeout,
179
+ options.read_preference,
180
+ },
181
+ [handler = std::move(handler)](auto resp) mutable {
182
+ return handler(core::impl::make_error(std::move(resp.ctx)),
183
+ get_replica_result{
184
+ resp.cas,
185
+ resp.replica,
186
+ { std::move(resp.value), resp.flags },
187
+ });
188
+ });
189
+ }
190
+
191
+ void get_all_replicas(std::string document_key,
192
+ const get_all_replicas_options::built& options,
193
+ core::impl::movable_get_all_replicas_handler&& handler) const
194
+ {
195
+ return core_.execute(
196
+ core::operations::get_all_replicas_request{
197
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
198
+ options.timeout,
199
+ options.read_preference,
200
+ },
201
+ [handler = std::move(handler)](auto resp) mutable {
202
+ get_all_replicas_result result{};
203
+ for (auto& entry : resp.entries) {
204
+ result.emplace_back(get_replica_result{
205
+ entry.cas,
206
+ entry.replica,
207
+ { std::move(entry.value), entry.flags },
237
208
  });
209
+ }
210
+ return handler(core::impl::make_error(std::move(resp.ctx)), std::move(result));
211
+ });
212
+ }
213
+
214
+ void remove(std::string document_key,
215
+ remove_options::built options,
216
+ remove_handler&& handler) const
217
+ {
218
+ auto id = core::document_id{
219
+ bucket_name_,
220
+ scope_name_,
221
+ name_,
222
+ std::move(document_key),
223
+ };
224
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
225
+ return core_.execute(
226
+ core::operations::remove_request{
227
+ std::move(id),
228
+ {},
229
+ {},
230
+ options.cas,
231
+ options.durability_level,
232
+ options.timeout,
233
+ { options.retry_strategy },
234
+ },
235
+ [handler = std::move(handler)](auto resp) mutable {
236
+ if (resp.ctx.ec()) {
237
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
238
+ }
239
+ return handler(core::impl::make_error(std::move(resp.ctx)),
240
+ mutation_result{ resp.cas, std::move(resp.token) });
241
+ });
238
242
  }
239
243
 
240
- void get_all_replicas(std::string document_key,
241
- const get_all_replicas_options::built& options,
242
- core::impl::movable_get_all_replicas_handler&& handler) const
243
- {
244
- auto request = std::make_shared<core::impl::get_all_replicas_request>(
245
- bucket_name_, scope_name_, name_, std::move(document_key), options.timeout);
246
- core_.with_bucket_configuration(
244
+ core::operations::remove_request request{
245
+ id, {}, {}, options.cas, durability_level::none, options.timeout, { options.retry_strategy },
246
+ };
247
+ return core_.execute(std::move(request),
248
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
249
+ auto&& resp) mutable {
250
+ if (resp.ctx.ec()) {
251
+ return handler(core::impl::make_error(std::move(resp.ctx)),
252
+ mutation_result{ resp.cas, std::move(resp.token) });
253
+ }
254
+ auto token = resp.token;
255
+ core::impl::initiate_observe_poll(
256
+ core,
257
+ std::move(id),
258
+ token,
259
+ options.timeout,
260
+ options.persist_to,
261
+ options.replicate_to,
262
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
263
+ if (ec) {
264
+ resp.ctx.override_ec(ec);
265
+ return handler(core::impl::make_error(std::move(resp.ctx)),
266
+ mutation_result{});
267
+ }
268
+ return handler(core::impl::make_error(std::move(resp.ctx)),
269
+ mutation_result{ resp.cas, std::move(resp.token) });
270
+ });
271
+ });
272
+ }
273
+
274
+ void get_and_lock(std::string document_key,
275
+ std::chrono::seconds lock_duration,
276
+ get_and_lock_options::built options,
277
+ get_and_lock_handler&& handler) const
278
+ {
279
+ core_.execute(
280
+ core::operations::get_and_lock_request{
281
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
282
+ {},
283
+ {},
284
+ static_cast<uint32_t>(lock_duration.count()),
285
+ options.timeout,
286
+ { options.retry_strategy },
287
+ },
288
+ [handler = std::move(handler)](auto&& resp) mutable {
289
+ return handler(core::impl::make_error(std::move(resp.ctx)),
290
+ get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
291
+ });
292
+ }
293
+
294
+ void unlock(std::string document_key,
295
+ couchbase::cas cas,
296
+ unlock_options::built options,
297
+ unlock_handler&& handler) const
298
+ {
299
+ core_.execute(
300
+ core::operations::unlock_request{
301
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
302
+ {},
303
+ {},
304
+ cas,
305
+ options.timeout,
306
+ { options.retry_strategy },
307
+ },
308
+ [handler = std::move(handler)](auto&& resp) mutable {
309
+ return handler(core::impl::make_error(std::move(resp.ctx)));
310
+ });
311
+ }
312
+
313
+ void exists(std::string document_key,
314
+ exists_options::built options,
315
+ exists_handler&& handler) const
316
+ {
317
+ core_.execute(
318
+ core::operations::exists_request{
319
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
320
+ {},
321
+ {},
322
+ options.timeout,
323
+ { options.retry_strategy },
324
+ },
325
+ [handler = std::move(handler)](auto&& resp) mutable {
326
+ return handler(core::impl::make_error(std::move(resp.ctx)),
327
+ exists_result{ resp.cas, resp.exists() });
328
+ });
329
+ }
330
+
331
+ void lookup_in(std::string document_key,
332
+ const std::vector<core::impl::subdoc::command>& specs,
333
+ lookup_in_options::built options,
334
+ lookup_in_handler&& handler) const
335
+ {
336
+ return core_.execute(
337
+ core::operations::lookup_in_request{
338
+ core::document_id{
247
339
  bucket_name_,
248
- [core = core_, r = std::move(request), h = std::move(handler)](std::error_code ec,
249
- const core::topology::configuration& config) mutable {
250
- if (ec) {
251
- return h(make_key_value_error_context(ec, r->id()), get_all_replicas_result{});
252
- }
253
- struct replica_context {
254
- replica_context(core::impl::movable_get_all_replicas_handler handler, std::uint32_t expected_responses)
255
- : handler_(std::move(handler))
256
- , expected_responses_(expected_responses)
257
- {
258
- }
259
-
260
- core::impl::movable_get_all_replicas_handler handler_;
261
- std::uint32_t expected_responses_;
262
- bool done_{ false };
263
- std::mutex mutex_{};
264
- get_all_replicas_result result_{};
265
- };
266
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
267
-
268
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
269
- core::document_id replica_id{ r->id() };
270
- replica_id.node_index(idx);
271
- core.execute(core::impl::get_replica_request{ std::move(replica_id), r->timeout() }, [ctx](auto resp) {
272
- core::impl::movable_get_all_replicas_handler local_handler{};
273
- {
274
- const std::scoped_lock lock(ctx->mutex_);
275
- if (ctx->done_) {
276
- return;
277
- }
278
- --ctx->expected_responses_;
279
- if (resp.ctx.ec()) {
280
- if (ctx->expected_responses_ > 0) {
281
- // just ignore the response
282
- return;
283
- }
284
- } else {
285
- ctx->result_.emplace_back(
286
- get_replica_result{ resp.cas, true /* replica */, { std::move(resp.value), resp.flags } });
287
- }
288
- if (ctx->expected_responses_ == 0) {
289
- ctx->done_ = true;
290
- std::swap(local_handler, ctx->handler_);
291
- }
292
- }
293
- if (local_handler) {
294
- if (!ctx->result_.empty()) {
295
- resp.ctx.override_ec({});
296
- }
297
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
298
- }
299
- });
300
- }
301
-
302
- core::operations::get_request active{ core::document_id{ r->id() } };
303
- active.timeout = r->timeout();
304
- core.execute(active, [ctx](auto resp) {
305
- core::impl::movable_get_all_replicas_handler local_handler{};
306
- {
307
- const std::scoped_lock lock(ctx->mutex_);
308
- if (ctx->done_) {
309
- return;
310
- }
311
- --ctx->expected_responses_;
312
- if (resp.ctx.ec()) {
313
- if (ctx->expected_responses_ > 0) {
314
- // just ignore the response
315
- return;
316
- }
317
- } else {
318
- ctx->result_.emplace_back(
319
- get_replica_result{ resp.cas, false /* active */, { std::move(resp.value), resp.flags } });
320
- }
321
- if (ctx->expected_responses_ == 0) {
322
- ctx->done_ = true;
323
- std::swap(local_handler, ctx->handler_);
324
- }
325
- }
326
- if (local_handler) {
327
- if (!ctx->result_.empty()) {
328
- resp.ctx.override_ec({});
329
- }
330
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
331
- }
332
- });
333
- });
334
- }
335
-
336
- void remove(std::string document_key, remove_options::built options, remove_handler&& handler) const
337
- {
338
- auto id = core::document_id{
339
- bucket_name_,
340
- scope_name_,
341
- name_,
342
- std::move(document_key),
343
- };
344
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
345
- return core_.execute(
346
- core::operations::remove_request{
347
- std::move(id),
348
- {},
349
- {},
350
- options.cas,
351
- options.durability_level,
352
- options.timeout,
353
- { options.retry_strategy },
354
- },
355
- [handler = std::move(handler)](auto resp) mutable {
356
- if (resp.ctx.ec()) {
357
- return handler(std::move(resp.ctx), mutation_result{});
358
- }
359
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
360
- });
340
+ scope_name_,
341
+ name_,
342
+ std::move(document_key),
343
+ },
344
+ {},
345
+ {},
346
+ options.access_deleted,
347
+ specs,
348
+ options.timeout,
349
+ { options.retry_strategy },
350
+ },
351
+ [handler = std::move(handler)](auto resp) mutable {
352
+ if (resp.ctx.ec()) {
353
+ return handler(core::impl::make_error(std::move(resp.ctx)), lookup_in_result{});
361
354
  }
362
355
 
363
- core::operations::remove_request request{
364
- id, {}, {}, options.cas, durability_level::none, options.timeout, { options.retry_strategy },
365
- };
366
- return core_.execute(
367
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
368
- if (resp.ctx.ec()) {
369
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
370
- }
371
- auto token = resp.token;
372
- core::impl::initiate_observe_poll(core,
373
- std::move(id),
374
- token,
375
- options.timeout,
376
- options.persist_to,
377
- options.replicate_to,
378
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
379
- if (ec) {
380
- resp.ctx.override_ec(ec);
381
- return handler(std::move(resp.ctx), mutation_result{});
382
- }
383
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
384
- });
385
- });
386
- }
387
-
388
- void get_and_lock(std::string document_key,
389
- std::chrono::seconds lock_duration,
390
- get_and_lock_options::built options,
391
- get_and_lock_handler&& handler) const
392
- {
393
- core_.execute(
394
- core::operations::get_and_lock_request{
395
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
396
- {},
397
- {},
398
- static_cast<uint32_t>(lock_duration.count()),
399
- options.timeout,
400
- { options.retry_strategy },
401
- },
402
- [handler = std::move(handler)](auto&& resp) mutable {
403
- return handler(std::move(resp.ctx), get_result{ resp.cas, { std::move(resp.value), resp.flags }, {} });
356
+ std::vector<lookup_in_result::entry> entries{};
357
+ entries.reserve(resp.fields.size());
358
+ for (auto& entry : resp.fields) {
359
+ entries.emplace_back(lookup_in_result::entry{
360
+ std::move(entry.path),
361
+ std::move(entry.value),
362
+ entry.original_index,
363
+ entry.exists,
364
+ entry.ec,
404
365
  });
405
- }
406
-
407
- void unlock(std::string document_key, couchbase::cas cas, unlock_options::built options, unlock_handler&& handler) const
408
- {
409
- core_.execute(
410
- core::operations::unlock_request{
411
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
412
- {},
413
- {},
414
- cas,
415
- options.timeout,
416
- { options.retry_strategy },
417
- },
418
- [handler = std::move(handler)](auto&& resp) mutable { return handler(std::move(resp.ctx)); });
419
- }
420
-
421
- void exists(std::string document_key, exists_options::built options, exists_handler&& handler) const
422
- {
423
- core_.execute(
424
- core::operations::exists_request{
425
- core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
426
- {},
427
- {},
428
- options.timeout,
429
- { options.retry_strategy },
430
- },
431
- [handler = std::move(handler)](auto&& resp) mutable {
432
- return handler(std::move(resp.ctx), exists_result{ resp.cas, resp.exists() });
366
+ }
367
+ return handler(core::impl::make_error(std::move(resp.ctx)),
368
+ lookup_in_result{ resp.cas, std::move(entries), resp.deleted });
369
+ });
370
+ }
371
+
372
+ void lookup_in_all_replicas(std::string document_key,
373
+ const std::vector<core::impl::subdoc::command>& specs,
374
+ const lookup_in_all_replicas_options::built& options,
375
+ lookup_in_all_replicas_handler&& handler) const
376
+ {
377
+ return core_.execute(
378
+ core::operations::lookup_in_all_replicas_request{
379
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
380
+ specs,
381
+ options.timeout,
382
+ {},
383
+ options.read_preference,
384
+ },
385
+ [handler = std::move(handler)](auto resp) mutable {
386
+ lookup_in_all_replicas_result result{};
387
+ for (auto& res : resp.entries) {
388
+ std::vector<lookup_in_result::entry> entries;
389
+ entries.reserve(res.fields.size());
390
+ for (auto& field : res.fields) {
391
+ entries.emplace_back(lookup_in_result::entry{
392
+ std::move(field.path),
393
+ std::move(field.value),
394
+ field.original_index,
395
+ field.exists,
396
+ field.ec,
397
+ });
398
+ }
399
+ result.emplace_back(lookup_in_replica_result{
400
+ res.cas,
401
+ std::move(entries),
402
+ res.deleted,
403
+ res.is_replica,
433
404
  });
434
- }
435
-
436
- void lookup_in(std::string document_key,
437
- const std::vector<core::impl::subdoc::command>& specs,
438
- lookup_in_options::built options,
439
- lookup_in_handler&& handler) const
440
- {
441
- return core_.execute(
442
- core::operations::lookup_in_request{
443
- core::document_id{
444
- bucket_name_,
445
- scope_name_,
446
- name_,
447
- std::move(document_key),
448
- },
449
- {},
450
- {},
451
- options.access_deleted,
452
- specs,
453
- options.timeout,
454
- { options.retry_strategy },
455
- },
456
- [handler = std::move(handler)](auto resp) mutable {
457
- if (resp.ctx.ec()) {
458
- return handler(std::move(resp.ctx), lookup_in_result{});
459
- }
460
-
461
- std::vector<lookup_in_result::entry> entries{};
462
- entries.reserve(resp.fields.size());
463
- for (auto& entry : resp.fields) {
464
- entries.emplace_back(lookup_in_result::entry{
465
- std::move(entry.path),
466
- std::move(entry.value),
467
- entry.original_index,
468
- entry.exists,
469
- entry.ec,
470
- });
471
- }
472
- return handler(std::move(resp.ctx), lookup_in_result{ resp.cas, std::move(entries), resp.deleted });
405
+ }
406
+ return handler(core::impl::make_error(std::move(resp.ctx)), result);
407
+ });
408
+ }
409
+
410
+ void lookup_in_any_replica(std::string document_key,
411
+ const std::vector<core::impl::subdoc::command>& specs,
412
+ const lookup_in_any_replica_options::built& options,
413
+ lookup_in_any_replica_handler&& handler) const
414
+ {
415
+ return core_.execute(
416
+ core::operations::lookup_in_any_replica_request{
417
+ core::document_id{ bucket_name_, scope_name_, name_, std::move(document_key) },
418
+ specs,
419
+ options.timeout,
420
+ {},
421
+ options.read_preference,
422
+ },
423
+ [handler = std::move(handler)](auto resp) mutable {
424
+ std::vector<lookup_in_result::entry> entries;
425
+ for (auto& field : resp.fields) {
426
+ entries.emplace_back(lookup_in_result::entry{
427
+ std::move(field.path),
428
+ std::move(field.value),
429
+ field.original_index,
430
+ field.exists,
431
+ field.ec,
473
432
  });
433
+ }
434
+ entries.reserve(resp.fields.size());
435
+ return handler(
436
+ core::impl::make_error(std::move(resp.ctx)),
437
+ lookup_in_replica_result{ resp.cas, std::move(entries), resp.deleted, resp.is_replica });
438
+ });
439
+ }
440
+
441
+ void mutate_in(std::string document_key,
442
+ const std::vector<core::impl::subdoc::command>& specs,
443
+ mutate_in_options::built options,
444
+ mutate_in_handler&& handler) const
445
+ {
446
+ auto id = core::document_id{
447
+ bucket_name_,
448
+ scope_name_,
449
+ name_,
450
+ std::move(document_key),
451
+ };
452
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
453
+ return core_.execute(
454
+ core::operations::mutate_in_request{
455
+ std::move(id),
456
+ {},
457
+ {},
458
+ options.cas,
459
+ options.access_deleted,
460
+ options.create_as_deleted,
461
+ options.expiry,
462
+ options.store_semantics,
463
+ specs,
464
+ options.durability_level,
465
+ options.timeout,
466
+ { options.retry_strategy },
467
+ options.preserve_expiry,
468
+ },
469
+ [handler = std::move(handler)](auto resp) mutable {
470
+ if (resp.ctx.ec()) {
471
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
472
+ }
473
+ std::vector<mutate_in_result::entry> entries{};
474
+ entries.reserve(resp.fields.size());
475
+ for (auto& entry : resp.fields) {
476
+ entries.emplace_back(mutate_in_result::entry{
477
+ std::move(entry.path),
478
+ std::move(entry.value),
479
+ entry.original_index,
480
+ });
481
+ }
482
+ return handler(
483
+ core::impl::make_error(std::move(resp.ctx)),
484
+ mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
485
+ });
474
486
  }
475
487
 
476
- void lookup_in_all_replicas(std::string document_key,
477
- const std::vector<core::impl::subdoc::command>& specs,
478
- const lookup_in_all_replicas_options::built& options,
479
- lookup_in_all_replicas_handler&& handler) const
480
- {
481
- auto request = std::make_shared<couchbase::core::impl::lookup_in_all_replicas_request>(
482
- bucket_name_, scope_name_, name_, std::move(document_key), specs, options.timeout);
483
- core_.open_bucket(
484
- bucket_name_,
485
- [core = core_, bucket_name = bucket_name_, r = std::move(request), h = std::move(handler)](std::error_code ec) mutable {
486
- if (ec) {
487
- h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
488
- lookup_in_all_replicas_result{});
489
- return;
490
- }
491
-
492
- return core.with_bucket_configuration(
493
- bucket_name,
494
- [core = core, r = std::move(r), h = std::move(h)](std::error_code ec, const core::topology::configuration& config) mutable {
495
- if (!config.capabilities.supports_subdoc_read_replica()) {
496
- ec = errc::common::feature_not_available;
497
- }
498
-
499
- if (ec) {
500
- return h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
501
- lookup_in_all_replicas_result{});
502
- }
503
- struct replica_context {
504
- replica_context(core::impl::movable_lookup_in_all_replicas_handler handler, std::uint32_t expected_responses)
505
- : handler_(std::move(handler))
506
- , expected_responses_(expected_responses)
507
- {
508
- }
509
-
510
- core::impl::movable_lookup_in_all_replicas_handler handler_;
511
- std::uint32_t expected_responses_;
512
- bool done_{ false };
513
- std::mutex mutex_{};
514
- lookup_in_all_replicas_result result_{};
515
- };
516
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
517
-
518
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
519
- core::document_id replica_id{ r->id() };
520
- replica_id.node_index(idx);
521
- core.execute(core::impl::lookup_in_replica_request{ std::move(replica_id), r->specs(), r->timeout() },
522
- [ctx](core::impl::lookup_in_replica_response&& resp) {
523
- core::impl::movable_lookup_in_all_replicas_handler local_handler{};
524
- {
525
- const std::scoped_lock lock(ctx->mutex_);
526
- if (ctx->done_) {
527
- return;
528
- }
529
- --ctx->expected_responses_;
530
- if (resp.ctx.ec()) {
531
- if (ctx->expected_responses_ > 0) {
532
- // just ignore the response
533
- return;
534
- }
535
- } else {
536
- std::vector<lookup_in_replica_result::entry> entries{};
537
- for (const auto& field : resp.fields) {
538
- lookup_in_replica_result::entry lookup_in_entry{};
539
- lookup_in_entry.path = field.path;
540
- lookup_in_entry.value = field.value;
541
- lookup_in_entry.exists = field.exists;
542
- lookup_in_entry.original_index = field.original_index;
543
- lookup_in_entry.ec = field.ec;
544
- entries.emplace_back(lookup_in_entry);
545
- }
546
- ctx->result_.emplace_back(resp.cas, entries, resp.deleted, true /* replica */);
547
- }
548
- if (ctx->expected_responses_ == 0) {
549
- ctx->done_ = true;
550
- std::swap(local_handler, ctx->handler_);
551
- }
552
- }
553
- if (local_handler) {
554
- if (!ctx->result_.empty()) {
555
- resp.ctx.override_ec({});
556
- }
557
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
558
- }
559
- });
560
- }
561
-
562
- core::operations::lookup_in_request active{ core::document_id{ r->id() } };
563
- active.specs = r->specs();
564
- active.timeout = r->timeout();
565
- core.execute(active, [ctx](core::operations::lookup_in_response&& resp) {
566
- core::impl::movable_lookup_in_all_replicas_handler local_handler{};
567
- {
568
- const std::scoped_lock lock(ctx->mutex_);
569
- if (ctx->done_) {
570
- return;
571
- }
572
- --ctx->expected_responses_;
573
- if (resp.ctx.ec()) {
574
- if (ctx->expected_responses_ > 0) {
575
- // just ignore the response
576
- return;
577
- }
578
- } else {
579
- std::vector<lookup_in_replica_result::entry> entries{};
580
- for (const auto& field : resp.fields) {
581
- lookup_in_replica_result::entry lookup_in_entry{};
582
- lookup_in_entry.path = field.path;
583
- lookup_in_entry.value = field.value;
584
- lookup_in_entry.exists = field.exists;
585
- lookup_in_entry.original_index = field.original_index;
586
- lookup_in_entry.ec = field.ec;
587
- entries.emplace_back(lookup_in_entry);
588
- }
589
- ctx->result_.emplace_back(resp.cas, entries, resp.deleted, false /* active */);
590
- }
591
- if (ctx->expected_responses_ == 0) {
592
- ctx->done_ = true;
593
- std::swap(local_handler, ctx->handler_);
594
- }
595
- }
596
- if (local_handler) {
597
- if (!ctx->result_.empty()) {
598
- resp.ctx.override_ec({});
599
- }
600
- return local_handler(std::move(resp.ctx), std::move(ctx->result_));
601
- }
602
- });
603
- });
604
- });
488
+ core::operations::mutate_in_request request{
489
+ id,
490
+ {},
491
+ {},
492
+ options.cas,
493
+ options.access_deleted,
494
+ options.create_as_deleted,
495
+ options.expiry,
496
+ options.store_semantics,
497
+ specs,
498
+ durability_level::none,
499
+ options.timeout,
500
+ { options.retry_strategy },
501
+ options.preserve_expiry,
605
502
  };
503
+ return core_.execute(
504
+ std::move(request),
505
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
506
+ auto&& resp) mutable {
507
+ if (resp.ctx.ec()) {
508
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
509
+ }
606
510
 
607
- void lookup_in_any_replica(std::string document_key,
608
- const std::vector<core::impl::subdoc::command>& specs,
609
- const lookup_in_any_replica_options::built& options,
610
- lookup_in_any_replica_handler&& handler) const
611
- {
612
- auto request = std::make_shared<couchbase::core::impl::lookup_in_any_replica_request>(
613
- bucket_name_, scope_name_, name_, std::move(document_key), specs, options.timeout);
614
- core_.open_bucket(
615
- bucket_name_,
616
- [core = core_, bucket_name = bucket_name_, r = std::move(request), h = std::move(handler)](std::error_code ec) mutable {
617
- if (ec) {
618
- h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
619
- lookup_in_replica_result{});
620
- return;
621
- }
622
-
623
- return core.with_bucket_configuration(
624
- bucket_name,
625
- [core = core, r = std::move(r), h = std::move(h)](std::error_code ec, const core::topology::configuration& config) mutable {
626
- if (!config.capabilities.supports_subdoc_read_replica()) {
627
- ec = errc::common::feature_not_available;
628
- }
629
- if (ec) {
630
- return h(core::make_subdocument_error_context(make_key_value_error_context(ec, r->id()), ec, {}, {}, false),
631
- lookup_in_replica_result{});
632
- }
633
- struct replica_context {
634
- replica_context(core::impl::movable_lookup_in_any_replica_handler handler, std::uint32_t expected_responses)
635
- : handler_(std::move(handler))
636
- , expected_responses_(expected_responses)
637
- {
638
- }
639
-
640
- core::impl::movable_lookup_in_any_replica_handler handler_;
641
- std::uint32_t expected_responses_;
642
- bool done_{ false };
643
- std::mutex mutex_{};
644
- };
645
- auto ctx = std::make_shared<replica_context>(std::move(h), config.num_replicas.value_or(0U) + 1U);
646
-
647
- for (std::size_t idx = 1U; idx <= config.num_replicas.value_or(0U); ++idx) {
648
- core::document_id replica_id{ r->id() };
649
- replica_id.node_index(idx);
650
- core.execute(core::impl::lookup_in_replica_request{ std::move(replica_id), r->specs(), r->timeout() },
651
- [ctx](core::impl::lookup_in_replica_response&& resp) {
652
- core::impl::movable_lookup_in_any_replica_handler local_handler;
653
- {
654
- const std::scoped_lock lock(ctx->mutex_);
655
- if (ctx->done_) {
656
- return;
657
- }
658
- --ctx->expected_responses_;
659
- if (resp.ctx.ec()) {
660
- if (ctx->expected_responses_ > 0) {
661
- // just ignore the response
662
- return;
663
- }
664
- // consider document irretrievable and give up
665
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
666
- }
667
- ctx->done_ = true;
668
- std::swap(local_handler, ctx->handler_);
669
- }
670
- if (local_handler) {
671
- std::vector<lookup_in_replica_result::entry> entries;
672
- for (const auto& field : resp.fields) {
673
- lookup_in_replica_result::entry entry{};
674
- entry.path = field.path;
675
- entry.original_index = field.original_index;
676
- entry.exists = field.exists;
677
- entry.value = field.value;
678
- entry.ec = field.ec;
679
- entries.emplace_back(entry);
680
- }
681
- return local_handler(
682
- std::move(resp.ctx),
683
- lookup_in_replica_result{ resp.cas, entries, resp.deleted, true /* replica */ });
684
- }
685
- });
686
- }
687
-
688
- core::operations::lookup_in_request active{ core::document_id{ r->id() } };
689
- active.specs = r->specs();
690
- active.timeout = r->timeout();
691
- core.execute(active, [ctx](core::operations::lookup_in_response&& resp) {
692
- core::impl::movable_lookup_in_any_replica_handler local_handler{};
693
- {
694
- const std::scoped_lock lock(ctx->mutex_);
695
- if (ctx->done_) {
696
- return;
697
- }
698
- --ctx->expected_responses_;
699
- if (resp.ctx.ec()) {
700
- if (ctx->expected_responses_ > 0) {
701
- // just ignore the response
702
- return;
703
- }
704
- // consider document irretrievable and give up
705
- resp.ctx.override_ec(errc::key_value::document_irretrievable);
706
- }
707
- ctx->done_ = true;
708
- std::swap(local_handler, ctx->handler_);
709
- }
710
- if (local_handler) {
711
- std::vector<lookup_in_replica_result::entry> entries;
712
- for (const auto& field : resp.fields) {
713
- lookup_in_replica_result::entry entry{};
714
- entry.path = field.path;
715
- entry.original_index = field.original_index;
716
- entry.exists = field.exists;
717
- entry.value = field.value;
718
- entry.ec = field.ec;
719
- entries.emplace_back(entry);
720
- }
721
- return local_handler(std::move(resp.ctx),
722
- lookup_in_replica_result{ resp.cas, entries, resp.deleted, false /* active */ });
723
- }
724
- });
725
- });
511
+ auto token = resp.token;
512
+ core::impl::initiate_observe_poll(
513
+ core,
514
+ std::move(id),
515
+ token,
516
+ options.timeout,
517
+ options.persist_to,
518
+ options.replicate_to,
519
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
520
+ if (ec) {
521
+ resp.ctx.override_ec(ec);
522
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutate_in_result{});
523
+ }
524
+ std::vector<mutate_in_result::entry> entries{};
525
+ entries.reserve(resp.fields.size());
526
+ for (auto& entry : resp.fields) {
527
+ entries.emplace_back(mutate_in_result::entry{
528
+ std::move(entry.path),
529
+ std::move(entry.value),
530
+ entry.original_index,
531
+ });
532
+ }
533
+ return handler(core::impl::make_error(std::move(resp.ctx)),
534
+ mutate_in_result{
535
+ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
726
536
  });
537
+ });
538
+ }
539
+
540
+ void upsert(std::string document_key,
541
+ codec::encoded_value encoded,
542
+ upsert_options::built options,
543
+ upsert_handler&& handler) const
544
+ {
545
+ auto value = std::move(encoded);
546
+ auto id = core::document_id{
547
+ bucket_name_,
548
+ scope_name_,
549
+ name_,
550
+ std::move(document_key),
727
551
  };
552
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
553
+ return core_.execute(
554
+ core::operations::upsert_request{
555
+ std::move(id),
556
+ std::move(value.data),
557
+ {},
558
+ {},
559
+ value.flags,
560
+ options.expiry,
561
+ options.durability_level,
562
+ options.timeout,
563
+ { options.retry_strategy },
564
+ options.preserve_expiry,
565
+ },
566
+ [handler = std::move(handler)](auto resp) mutable {
567
+ return handler(core::impl::make_error(std::move(resp.ctx)),
568
+ mutation_result{ resp.cas, std::move(resp.token) });
569
+ });
570
+ }
728
571
 
729
- void mutate_in(std::string document_key,
730
- const std::vector<core::impl::subdoc::command>& specs,
731
- mutate_in_options::built options,
732
- mutate_in_handler&& handler) const
733
- {
734
- auto id = core::document_id{
735
- bucket_name_,
736
- scope_name_,
737
- name_,
738
- std::move(document_key),
739
- };
740
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
741
- return core_.execute(
742
- core::operations::mutate_in_request{
743
- std::move(id),
744
- {},
745
- {},
746
- options.cas,
747
- options.access_deleted,
748
- options.create_as_deleted,
749
- options.expiry,
750
- options.store_semantics,
751
- specs,
752
- options.durability_level,
753
- options.timeout,
754
- { options.retry_strategy },
755
- options.preserve_expiry,
756
- },
757
- [handler = std::move(handler)](auto resp) mutable {
758
- if (resp.ctx.ec()) {
759
- return handler(std::move(resp.ctx), mutate_in_result{});
760
- }
761
- std::vector<mutate_in_result::entry> entries{};
762
- entries.reserve(resp.fields.size());
763
- for (auto& entry : resp.fields) {
764
- entries.emplace_back(mutate_in_result::entry{
765
- std::move(entry.path),
766
- std::move(entry.value),
767
- entry.original_index,
768
- });
769
- }
770
- return handler(std::move(resp.ctx),
771
- mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
772
- });
572
+ core::operations::upsert_request request{
573
+ id,
574
+ std::move(value.data),
575
+ {},
576
+ {},
577
+ value.flags,
578
+ options.expiry,
579
+ durability_level::none,
580
+ options.timeout,
581
+ { options.retry_strategy },
582
+ options.preserve_expiry,
583
+ };
584
+ return core_.execute(
585
+ std::move(request),
586
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
587
+ if (resp.ctx.ec()) {
588
+ return handler(core::impl::make_error(std::move(resp.ctx)),
589
+ mutation_result{ resp.cas, std::move(resp.token) });
773
590
  }
774
591
 
775
- core::operations::mutate_in_request request{
776
- id,
777
- {},
778
- {},
779
- options.cas,
780
- options.access_deleted,
781
- options.create_as_deleted,
782
- options.expiry,
783
- options.store_semantics,
784
- specs,
785
- durability_level::none,
786
- options.timeout,
787
- { options.retry_strategy },
788
- options.preserve_expiry,
789
- };
790
- return core_.execute(
791
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
792
- if (resp.ctx.ec()) {
793
- return handler(std::move(resp.ctx), mutate_in_result{});
794
- }
795
-
796
- auto token = resp.token;
797
- core::impl::initiate_observe_poll(
798
- core,
799
- std::move(id),
800
- token,
801
- options.timeout,
802
- options.persist_to,
803
- options.replicate_to,
804
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
805
- if (ec) {
806
- resp.ctx.override_ec(ec);
807
- return handler(std::move(resp.ctx), mutate_in_result{});
808
- }
809
- std::vector<mutate_in_result::entry> entries{};
810
- entries.reserve(resp.fields.size());
811
- for (auto& entry : resp.fields) {
812
- entries.emplace_back(mutate_in_result::entry{
813
- std::move(entry.path),
814
- std::move(entry.value),
815
- entry.original_index,
816
- });
817
- }
818
- return handler(std::move(resp.ctx),
819
- mutate_in_result{ resp.cas, std::move(resp.token), std::move(entries), resp.deleted });
820
- });
592
+ auto token = resp.token;
593
+ core::impl::initiate_observe_poll(
594
+ core,
595
+ std::move(id),
596
+ token,
597
+ options.timeout,
598
+ options.persist_to,
599
+ options.replicate_to,
600
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
601
+ if (ec) {
602
+ resp.ctx.override_ec(ec);
603
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
604
+ }
605
+ return handler(core::impl::make_error(std::move(resp.ctx)),
606
+ mutation_result{ resp.cas, std::move(resp.token) });
821
607
  });
608
+ });
609
+ }
610
+
611
+ void insert(std::string document_key,
612
+ codec::encoded_value encoded,
613
+ insert_options::built options,
614
+ insert_handler&& handler) const
615
+ {
616
+ auto value = std::move(encoded);
617
+ auto id = core::document_id{
618
+ bucket_name_,
619
+ scope_name_,
620
+ name_,
621
+ std::move(document_key),
622
+ };
623
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
624
+ return core_.execute(
625
+ core::operations::insert_request{
626
+ std::move(id),
627
+ std::move(value.data),
628
+ {},
629
+ {},
630
+ value.flags,
631
+ options.expiry,
632
+ options.durability_level,
633
+ options.timeout,
634
+ { options.retry_strategy },
635
+ },
636
+ [handler = std::move(handler)](auto&& resp) mutable {
637
+ if (resp.ctx.ec()) {
638
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
639
+ }
640
+ return handler(core::impl::make_error(std::move(resp.ctx)),
641
+ mutation_result{ resp.cas, std::move(resp.token) });
642
+ });
822
643
  }
823
644
 
824
- void upsert(std::string document_key, codec::encoded_value encoded, upsert_options::built options, upsert_handler&& handler) const
825
- {
826
- auto value = std::move(encoded);
827
- auto id = core::document_id{
828
- bucket_name_,
829
- scope_name_,
830
- name_,
831
- std::move(document_key),
832
- };
833
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
834
- return core_.execute(
835
- core::operations::upsert_request{
836
- std::move(id),
837
- std::move(value.data),
838
- {},
839
- {},
840
- value.flags,
841
- options.expiry,
842
- options.durability_level,
843
- options.timeout,
844
- { options.retry_strategy },
845
- options.preserve_expiry,
846
- },
847
- [handler = std::move(handler)](auto resp) mutable {
848
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
849
- });
645
+ core::operations::insert_request request{
646
+ id,
647
+ std::move(value.data),
648
+ {},
649
+ {},
650
+ value.flags,
651
+ options.expiry,
652
+ durability_level::none,
653
+ options.timeout,
654
+ { options.retry_strategy },
655
+ };
656
+ return core_.execute(
657
+ std::move(request),
658
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
659
+ if (resp.ctx.ec()) {
660
+ return handler(core::impl::make_error(std::move(resp.ctx)),
661
+ mutation_result{ resp.cas, std::move(resp.token) });
850
662
  }
851
663
 
852
- core::operations::upsert_request request{
853
- id,
854
- std::move(value.data),
855
- {},
856
- {},
857
- value.flags,
858
- options.expiry,
859
- durability_level::none,
860
- options.timeout,
861
- { options.retry_strategy },
862
- options.preserve_expiry,
863
- };
864
- return core_.execute(
865
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
866
- if (resp.ctx.ec()) {
867
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
868
- }
869
-
870
- auto token = resp.token;
871
- core::impl::initiate_observe_poll(core,
872
- std::move(id),
873
- token,
874
- options.timeout,
875
- options.persist_to,
876
- options.replicate_to,
877
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
878
- if (ec) {
879
- resp.ctx.override_ec(ec);
880
- return handler(std::move(resp.ctx), mutation_result{});
881
- }
882
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
883
- });
664
+ auto token = resp.token;
665
+ core::impl::initiate_observe_poll(
666
+ core,
667
+ std::move(id),
668
+ token,
669
+ options.timeout,
670
+ options.persist_to,
671
+ options.replicate_to,
672
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
673
+ if (ec) {
674
+ resp.ctx.override_ec(ec);
675
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
676
+ }
677
+ return handler(core::impl::make_error(std::move(resp.ctx)),
678
+ mutation_result{ resp.cas, std::move(resp.token) });
884
679
  });
680
+ });
681
+ }
682
+ void replace(std::string document_key,
683
+ codec::encoded_value encoded,
684
+ replace_options::built options,
685
+ replace_handler&& handler) const
686
+ {
687
+ auto value = std::move(encoded);
688
+ auto id = core::document_id{
689
+ bucket_name_,
690
+ scope_name_,
691
+ name_,
692
+ std::move(document_key),
693
+ };
694
+ if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
695
+ return core_.execute(
696
+ core::operations::replace_request{
697
+ std::move(id),
698
+ std::move(value.data),
699
+ {},
700
+ {},
701
+ value.flags,
702
+ options.expiry,
703
+ options.cas,
704
+ options.durability_level,
705
+ options.timeout,
706
+ { options.retry_strategy },
707
+ options.preserve_expiry,
708
+ },
709
+ [handler = std::move(handler)](auto resp) mutable {
710
+ if (resp.ctx.ec()) {
711
+ return handler(core::impl::make_error(std::move(resp.ctx)), mutation_result{});
712
+ }
713
+ return handler(core::impl::make_error(std::move(resp.ctx)),
714
+ mutation_result{ resp.cas, std::move(resp.token) });
715
+ });
885
716
  }
886
717
 
887
- void insert(std::string document_key, codec::encoded_value encoded, insert_options::built options, insert_handler&& handler) const
888
- {
889
- auto value = std::move(encoded);
890
- auto id = core::document_id{
891
- bucket_name_,
892
- scope_name_,
893
- name_,
894
- std::move(document_key),
895
- };
896
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
897
- return core_.execute(
898
- core::operations::insert_request{
899
- std::move(id),
900
- std::move(value.data),
901
- {},
902
- {},
903
- value.flags,
904
- options.expiry,
905
- options.durability_level,
906
- options.timeout,
907
- { options.retry_strategy },
908
- },
909
- [handler = std::move(handler)](auto&& resp) mutable {
910
- if (resp.ctx.ec()) {
911
- return handler(std::move(resp.ctx), mutation_result{});
912
- }
913
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
914
- });
915
- }
718
+ core::operations::replace_request request{
719
+ id,
720
+ std::move(value.data),
721
+ {},
722
+ {},
723
+ value.flags,
724
+ options.expiry,
725
+ options.cas,
726
+ durability_level::none,
727
+ options.timeout,
728
+ { options.retry_strategy },
729
+ options.preserve_expiry,
730
+ };
731
+ return core_.execute(std::move(request),
732
+ [core = core_, id = std::move(id), options, handler = std::move(handler)](
733
+ auto&& resp) mutable {
734
+ if (resp.ctx.ec()) {
735
+ return handler(core::impl::make_error(std::move(resp.ctx)),
736
+ mutation_result{ resp.cas, std::move(resp.token) });
737
+ }
738
+
739
+ auto token = resp.token;
740
+ core::impl::initiate_observe_poll(
741
+ core,
742
+ std::move(id),
743
+ token,
744
+ options.timeout,
745
+ options.persist_to,
746
+ options.replicate_to,
747
+ [resp, handler = std::move(handler)](std::error_code ec) mutable {
748
+ if (ec) {
749
+ resp.ctx.override_ec(ec);
750
+ return handler(core::impl::make_error(std::move(resp.ctx)),
751
+ mutation_result{});
752
+ }
753
+ return handler(core::impl::make_error(std::move(resp.ctx)),
754
+ mutation_result{ resp.cas, std::move(resp.token) });
755
+ });
756
+ });
757
+ }
758
+
759
+ void scan(scan_type::built scan_type, scan_options::built options, scan_handler&& handler) const
760
+ {
761
+ core::range_scan_orchestrator_options orchestrator_opts{ options.ids_only };
762
+ if (!options.mutation_state.empty()) {
763
+ orchestrator_opts.consistent_with = core::mutation_state{ options.mutation_state };
764
+ }
765
+ if (options.batch_item_limit.has_value()) {
766
+ orchestrator_opts.batch_item_limit = options.batch_item_limit.value();
767
+ }
768
+ if (options.batch_byte_limit.has_value()) {
769
+ orchestrator_opts.batch_byte_limit = options.batch_byte_limit.value();
770
+ }
771
+ if (options.concurrency.has_value()) {
772
+ orchestrator_opts.concurrency = options.concurrency.value();
773
+ }
774
+ if (options.timeout.has_value()) {
775
+ orchestrator_opts.timeout = options.timeout.value();
776
+ }
916
777
 
917
- core::operations::insert_request request{
918
- id,
919
- std::move(value.data),
920
- {},
921
- {},
922
- value.flags,
923
- options.expiry,
924
- durability_level::none,
925
- options.timeout,
926
- { options.retry_strategy },
778
+ std::variant<std::monostate, core::range_scan, core::prefix_scan, core::sampling_scan>
779
+ core_scan_type{};
780
+ switch (scan_type.type) {
781
+ case scan_type::built::prefix_scan:
782
+ core_scan_type = core::prefix_scan{
783
+ scan_type.prefix,
927
784
  };
928
- return core_.execute(
929
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto resp) mutable {
930
- if (resp.ctx.ec()) {
931
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
932
- }
933
-
934
- auto token = resp.token;
935
- core::impl::initiate_observe_poll(core,
936
- std::move(id),
937
- token,
938
- options.timeout,
939
- options.persist_to,
940
- options.replicate_to,
941
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
942
- if (ec) {
943
- resp.ctx.override_ec(ec);
944
- return handler(std::move(resp.ctx), mutation_result{});
945
- }
946
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
947
- });
948
- });
949
- }
950
- void replace(std::string document_key, codec::encoded_value encoded, replace_options::built options, replace_handler&& handler) const
951
- {
952
- auto value = std::move(encoded);
953
- auto id = core::document_id{
954
- bucket_name_,
955
- scope_name_,
956
- name_,
957
- std::move(document_key),
785
+ break;
786
+ case scan_type::built::range_scan:
787
+ core_scan_type = core::range_scan{
788
+ (scan_type.from)
789
+ ? std::make_optional(core::scan_term{ scan_type.from->term, scan_type.from->exclusive })
790
+ : std::nullopt,
791
+ (scan_type.to)
792
+ ? std::make_optional(core::scan_term{ scan_type.to->term, scan_type.to->exclusive })
793
+ : std::nullopt,
958
794
  };
959
- if (options.persist_to == persist_to::none && options.replicate_to == replicate_to::none) {
960
- return core_.execute(
961
- core::operations::replace_request{
962
- std::move(id),
963
- std::move(value.data),
964
- {},
965
- {},
966
- value.flags,
967
- options.expiry,
968
- options.cas,
969
- options.durability_level,
970
- options.timeout,
971
- { options.retry_strategy },
972
- options.preserve_expiry,
973
- },
974
- [handler = std::move(handler)](auto resp) mutable {
975
- if (resp.ctx.ec()) {
976
- return handler(std::move(resp.ctx), mutation_result{});
977
- }
978
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
979
- });
980
- }
981
-
982
- core::operations::replace_request request{
983
- id,
984
- std::move(value.data),
985
- {},
986
- {},
987
- value.flags,
988
- options.expiry,
989
- options.cas,
990
- durability_level::none,
991
- options.timeout,
992
- { options.retry_strategy },
993
- options.preserve_expiry,
795
+ break;
796
+ case scan_type::built::sampling_scan:
797
+ core_scan_type = core::sampling_scan{
798
+ scan_type.limit,
799
+ scan_type.seed,
994
800
  };
995
- return core_.execute(
996
- std::move(request), [core = core_, id = std::move(id), options, handler = std::move(handler)](auto&& resp) mutable {
997
- if (resp.ctx.ec()) {
998
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
999
- }
1000
-
1001
- auto token = resp.token;
1002
- core::impl::initiate_observe_poll(core,
1003
- std::move(id),
1004
- token,
1005
- options.timeout,
1006
- options.persist_to,
1007
- options.replicate_to,
1008
- [resp, handler = std::move(handler)](std::error_code ec) mutable {
1009
- if (ec) {
1010
- resp.ctx.override_ec(ec);
1011
- return handler(std::move(resp.ctx), mutation_result{});
1012
- }
1013
- return handler(std::move(resp.ctx), mutation_result{ resp.cas, std::move(resp.token) });
1014
- });
1015
- });
801
+ break;
1016
802
  }
1017
803
 
1018
- void scan(scan_type::built scan_type, scan_options::built options, scan_handler&& handler) const
1019
- {
1020
- core::range_scan_orchestrator_options orchestrator_opts{ options.ids_only };
1021
- if (!options.mutation_state.empty()) {
1022
- orchestrator_opts.consistent_with = core::mutation_state{ options.mutation_state };
1023
- }
1024
- if (options.batch_item_limit.has_value()) {
1025
- orchestrator_opts.batch_item_limit = options.batch_item_limit.value();
1026
- }
1027
- if (options.batch_byte_limit.has_value()) {
1028
- orchestrator_opts.batch_byte_limit = options.batch_byte_limit.value();
1029
- }
1030
- if (options.concurrency.has_value()) {
1031
- orchestrator_opts.concurrency = options.concurrency.value();
1032
- }
1033
- if (options.timeout.has_value()) {
1034
- orchestrator_opts.timeout = options.timeout.value();
1035
- }
1036
-
1037
- std::variant<std::monostate, core::range_scan, core::prefix_scan, core::sampling_scan> core_scan_type{};
1038
- switch (scan_type.type) {
1039
- case scan_type::built::prefix_scan:
1040
- core_scan_type = core::prefix_scan{
1041
- scan_type.prefix,
1042
- };
1043
- break;
1044
- case scan_type::built::range_scan:
1045
- core_scan_type = core::range_scan{
1046
- (scan_type.from) ? std::make_optional(core::scan_term{ scan_type.from->term, scan_type.from->exclusive })
1047
- : std::nullopt,
1048
- (scan_type.to) ? std::make_optional(core::scan_term{ scan_type.to->term, scan_type.to->exclusive }) : std::nullopt,
1049
- };
1050
- break;
1051
- case scan_type::built::sampling_scan:
1052
- core_scan_type = core::sampling_scan{
1053
- scan_type.limit,
1054
- scan_type.seed,
1055
- };
1056
- break;
804
+ return core_.open_bucket(
805
+ bucket_name_,
806
+ [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
807
+ std::error_code ec) mutable {
808
+ if (ec) {
809
+ return handler(error(ec), {});
1057
810
  }
1058
-
1059
- return core_.open_bucket(
1060
- bucket_name_, [this, handler = std::move(handler), orchestrator_opts, core_scan_type](std::error_code ec) mutable {
1061
- if (ec) {
1062
- return handler(ec, {});
1063
- }
1064
- return core_.with_bucket_configuration(
1065
- bucket_name_,
1066
- [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
1067
- std::error_code ec, const core::topology::configuration& config) mutable {
1068
- if (ec) {
1069
- return handler(ec, {});
1070
- }
1071
- if (!config.capabilities.supports_range_scan()) {
1072
- return handler(errc::common::feature_not_available, {});
1073
- }
1074
- auto agent_group = core::agent_group(core_.io_context(), core::agent_group_config{ { core_ } });
1075
- ec = agent_group.open_bucket(bucket_name_);
1076
- if (ec) {
1077
- return handler(ec, {});
1078
- }
1079
- auto agent = agent_group.get_agent(bucket_name_);
1080
- if (!agent.has_value()) {
1081
- return handler(agent.error(), {});
1082
- }
1083
- if (!config.vbmap.has_value() || config.vbmap->empty()) {
1084
- CB_LOG_WARNING("Unable to get vbucket map for `{}` - cannot perform scan operation", bucket_name_);
1085
- return handler(errc::common::request_canceled, {});
1086
- }
1087
-
1088
- auto orchestrator = core::range_scan_orchestrator(
1089
- core_.io_context(), agent.value(), config.vbmap.value(), scope_name_, name_, core_scan_type, orchestrator_opts);
1090
- return orchestrator.scan([handler = std::move(handler)](auto ec, auto core_scan_result) mutable {
1091
- if (ec) {
1092
- return handler(ec, {});
1093
- }
1094
- auto internal_result = std::make_shared<internal_scan_result>(std::move(core_scan_result));
1095
- scan_result result{ internal_result };
1096
- return handler({}, result);
1097
- });
1098
- });
811
+ return core_.with_bucket_configuration(
812
+ bucket_name_,
813
+ [this, handler = std::move(handler), orchestrator_opts, core_scan_type](
814
+ std::error_code ec, const core::topology::configuration& config) mutable {
815
+ if (ec) {
816
+ return handler(
817
+ error(ec, "An error occurred when attempting to fetch the bucket configuration."),
818
+ {});
819
+ }
820
+ if (!config.capabilities.supports_range_scan()) {
821
+ return handler(error(errc::common::feature_not_available,
822
+ "This bucket does not support range scan."),
823
+ {});
824
+ }
825
+ auto agent_group =
826
+ core::agent_group(core_.io_context(), core::agent_group_config{ { core_ } });
827
+ ec = agent_group.open_bucket(bucket_name_);
828
+ if (ec) {
829
+ return handler(error(ec,
830
+ fmt::format("An error occurred while opening the `{}` bucket.",
831
+ bucket_name_)),
832
+ {});
833
+ }
834
+ auto agent = agent_group.get_agent(bucket_name_);
835
+ if (!agent.has_value()) {
836
+ return handler(
837
+ error(agent.error(),
838
+ fmt::format(
839
+ "An error occurred while getting an operation agent for the `{}` bucket",
840
+ bucket_name_)),
841
+ {});
842
+ }
843
+ if (!config.vbmap.has_value() || config.vbmap->empty()) {
844
+ CB_LOG_WARNING("Unable to get vbucket map for `{}` - cannot perform scan operation",
845
+ bucket_name_);
846
+ return handler(error(errc::common::request_canceled,
847
+ "No vbucket map included with the bucket config"),
848
+ {});
849
+ }
850
+
851
+ auto orchestrator = core::range_scan_orchestrator(core_.io_context(),
852
+ agent.value(),
853
+ config.vbmap.value(),
854
+ scope_name_,
855
+ name_,
856
+ core_scan_type,
857
+ orchestrator_opts);
858
+ return orchestrator.scan(
859
+ [handler = std::move(handler)](auto ec, auto core_scan_result) mutable {
860
+ if (ec) {
861
+ return handler(error(ec, "Error while starting the range scan"), {});
862
+ }
863
+ auto internal_result =
864
+ std::make_shared<internal_scan_result>(std::move(core_scan_result));
865
+ scan_result result{ internal_result };
866
+ return handler({}, result);
867
+ });
1099
868
  });
1100
- }
1101
-
1102
- private:
1103
- core::cluster core_;
1104
- std::string bucket_name_;
1105
- std::string scope_name_;
1106
- std::string name_;
869
+ });
870
+ }
871
+
872
+ private:
873
+ core::cluster core_;
874
+ std::string bucket_name_;
875
+ std::string scope_name_;
876
+ std::string name_;
1107
877
  };
1108
878
 
1109
- collection::collection(core::cluster core, std::string_view bucket_name, std::string_view scope_name, std::string_view name)
879
+ collection::collection(core::cluster core,
880
+ std::string_view bucket_name,
881
+ std::string_view scope_name,
882
+ std::string_view name)
1110
883
  : impl_(std::make_shared<collection_impl>(std::move(core), bucket_name, scope_name, name))
1111
884
  {
1112
885
  }
@@ -1114,46 +887,49 @@ collection::collection(core::cluster core, std::string_view bucket_name, std::st
1114
887
  auto
1115
888
  collection::bucket_name() const -> const std::string&
1116
889
  {
1117
- return impl_->bucket_name();
890
+ return impl_->bucket_name();
1118
891
  }
1119
892
 
1120
893
  auto
1121
894
  collection::scope_name() const -> const std::string&
1122
895
  {
1123
- return impl_->scope_name();
896
+ return impl_->scope_name();
1124
897
  }
1125
898
 
1126
899
  auto
1127
900
  collection::name() const -> const std::string&
1128
901
  {
1129
- return impl_->name();
902
+ return impl_->name();
1130
903
  }
1131
904
 
1132
905
  auto
1133
906
  collection::query_indexes() const -> collection_query_index_manager
1134
907
  {
1135
- return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
908
+ return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
1136
909
  }
1137
910
 
1138
911
  auto
1139
912
  collection::binary() const -> binary_collection
1140
913
  {
1141
- return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
914
+ return { impl_->core(), impl_->bucket_name(), impl_->scope_name(), impl_->name() };
1142
915
  }
1143
916
 
1144
917
  void
1145
918
  collection::get(std::string document_id, const get_options& options, get_handler&& handler) const
1146
919
  {
1147
- return impl_->get(std::move(document_id), options.build(), std::move(handler));
920
+ return impl_->get(std::move(document_id), options.build(), std::move(handler));
1148
921
  }
1149
922
 
1150
923
  auto
1151
- collection::get(std::string document_id, const get_options& options) const -> std::future<std::pair<key_value_error_context, get_result>>
924
+ collection::get(std::string document_id,
925
+ const get_options& options) const -> std::future<std::pair<error, get_result>>
1152
926
  {
1153
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1154
- auto future = barrier->get_future();
1155
- get(std::move(document_id), options, [barrier](auto ctx, auto result) { barrier->set_value({ std::move(ctx), std::move(result) }); });
1156
- return future;
927
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
928
+ auto future = barrier->get_future();
929
+ get(std::move(document_id), options, [barrier](auto err, auto result) {
930
+ barrier->set_value({ std::move(err), std::move(result) });
931
+ });
932
+ return future;
1157
933
  }
1158
934
 
1159
935
  void
@@ -1162,19 +938,24 @@ collection::get_and_touch(std::string document_id,
1162
938
  const get_and_touch_options& options,
1163
939
  get_and_touch_handler&& handler) const
1164
940
  {
1165
- return impl_->get_and_touch(std::move(document_id), core::impl::expiry_relative(duration), options.build(), std::move(handler));
941
+ return impl_->get_and_touch(std::move(document_id),
942
+ core::impl::expiry_relative(duration),
943
+ options.build(),
944
+ std::move(handler));
1166
945
  }
1167
946
 
1168
947
  auto
1169
- collection::get_and_touch(std::string document_id, std::chrono::seconds duration, const get_and_touch_options& options) const
1170
- -> std::future<std::pair<key_value_error_context, get_result>>
948
+ collection::get_and_touch(std::string document_id,
949
+ std::chrono::seconds duration,
950
+ const get_and_touch_options& options) const
951
+ -> std::future<std::pair<error, get_result>>
1171
952
  {
1172
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1173
- auto future = barrier->get_future();
1174
- get_and_touch(std::move(document_id), duration, options, [barrier](auto ctx, auto result) {
1175
- barrier->set_value({ std::move(ctx), std::move(result) });
1176
- });
1177
- return future;
953
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
954
+ auto future = barrier->get_future();
955
+ get_and_touch(std::move(document_id), duration, options, [barrier](auto err, auto result) {
956
+ barrier->set_value({ std::move(err), std::move(result) });
957
+ });
958
+ return future;
1178
959
  }
1179
960
 
1180
961
  void
@@ -1183,38 +964,49 @@ collection::get_and_touch(std::string document_id,
1183
964
  const get_and_touch_options& options,
1184
965
  get_and_touch_handler&& handler) const
1185
966
  {
1186
- return impl_->get_and_touch(std::move(document_id), core::impl::expiry_absolute(time_point), options.build(), std::move(handler));
967
+ return impl_->get_and_touch(std::move(document_id),
968
+ core::impl::expiry_absolute(time_point),
969
+ options.build(),
970
+ std::move(handler));
1187
971
  }
1188
972
 
1189
973
  auto
1190
974
  collection::get_and_touch(std::string document_id,
1191
975
  std::chrono::system_clock::time_point time_point,
1192
- const get_and_touch_options& options) const -> std::future<std::pair<key_value_error_context, get_result>>
976
+ const get_and_touch_options& options) const
977
+ -> std::future<std::pair<error, get_result>>
1193
978
  {
1194
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1195
- auto future = barrier->get_future();
1196
- get_and_touch(std::move(document_id), time_point, options, [barrier](auto ctx, auto result) {
1197
- barrier->set_value({ std::move(ctx), std::move(result) });
1198
- });
1199
- return future;
979
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
980
+ auto future = barrier->get_future();
981
+ get_and_touch(std::move(document_id), time_point, options, [barrier](auto err, auto result) {
982
+ barrier->set_value({ std::move(err), std::move(result) });
983
+ });
984
+ return future;
1200
985
  }
1201
986
 
1202
987
  void
1203
- collection::touch(std::string document_id, std::chrono::seconds duration, const touch_options& options, touch_handler&& handler) const
988
+ collection::touch(std::string document_id,
989
+ std::chrono::seconds duration,
990
+ const touch_options& options,
991
+ touch_handler&& handler) const
1204
992
  {
1205
- return impl_->touch(std::move(document_id), core::impl::expiry_relative(duration), options.build(), std::move(handler));
993
+ return impl_->touch(std::move(document_id),
994
+ core::impl::expiry_relative(duration),
995
+ options.build(),
996
+ std::move(handler));
1206
997
  }
1207
998
 
1208
999
  auto
1209
- collection::touch(std::string document_id, std::chrono::seconds duration, const touch_options& options) const
1210
- -> std::future<std::pair<key_value_error_context, result>>
1000
+ collection::touch(std::string document_id,
1001
+ std::chrono::seconds duration,
1002
+ const touch_options& options) const -> std::future<std::pair<error, result>>
1211
1003
  {
1212
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
1213
- auto future = barrier->get_future();
1214
- touch(std::move(document_id), duration, options, [barrier](auto ctx, auto result) {
1215
- barrier->set_value({ std::move(ctx), std::move(result) });
1216
- });
1217
- return future;
1004
+ auto barrier = std::make_shared<std::promise<std::pair<error, result>>>();
1005
+ auto future = barrier->get_future();
1006
+ touch(std::move(document_id), duration, options, [barrier](auto err, auto result) {
1007
+ barrier->set_value({ std::move(err), std::move(result) });
1008
+ });
1009
+ return future;
1218
1010
  }
1219
1011
 
1220
1012
  void
@@ -1223,73 +1015,83 @@ collection::touch(std::string document_id,
1223
1015
  const touch_options& options,
1224
1016
  touch_handler&& handler) const
1225
1017
  {
1226
- return impl_->touch(std::move(document_id), core::impl::expiry_absolute(time_point), options.build(), std::move(handler));
1018
+ return impl_->touch(std::move(document_id),
1019
+ core::impl::expiry_absolute(time_point),
1020
+ options.build(),
1021
+ std::move(handler));
1227
1022
  }
1228
1023
 
1229
1024
  auto
1230
- collection::touch(std::string document_id, std::chrono::system_clock::time_point time_point, const touch_options& options) const
1231
- -> std::future<std::pair<key_value_error_context, result>>
1025
+ collection::touch(std::string document_id,
1026
+ std::chrono::system_clock::time_point time_point,
1027
+ const touch_options& options) const -> std::future<std::pair<error, result>>
1232
1028
  {
1233
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
1234
- auto future = barrier->get_future();
1235
- touch(std::move(document_id), time_point, options, [barrier](auto ctx, auto result) {
1236
- barrier->set_value({ std::move(ctx), std::move(result) });
1237
- });
1238
- return future;
1029
+ auto barrier = std::make_shared<std::promise<std::pair<error, result>>>();
1030
+ auto future = barrier->get_future();
1031
+ touch(std::move(document_id), time_point, options, [barrier](auto err, auto result) {
1032
+ barrier->set_value({ std::move(err), std::move(result) });
1033
+ });
1034
+ return future;
1239
1035
  }
1240
1036
 
1241
1037
  void
1242
- collection::get_any_replica(std::string document_id, const get_any_replica_options& options, get_any_replica_handler&& handler) const
1038
+ collection::get_any_replica(std::string document_id,
1039
+ const get_any_replica_options& options,
1040
+ get_any_replica_handler&& handler) const
1243
1041
  {
1244
- return impl_->get_any_replica(std::move(document_id), options.build(), std::move(handler));
1042
+ return impl_->get_any_replica(std::move(document_id), options.build(), std::move(handler));
1245
1043
  }
1246
1044
 
1247
1045
  auto
1248
1046
  collection::get_any_replica(std::string document_id, const get_any_replica_options& options) const
1249
- -> std::future<std::pair<key_value_error_context, get_replica_result>>
1047
+ -> std::future<std::pair<error, get_replica_result>>
1250
1048
  {
1251
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_replica_result>>>();
1252
- auto future = barrier->get_future();
1253
- get_any_replica(std::move(document_id), options, [barrier](auto ctx, auto result) {
1254
- barrier->set_value({ std::move(ctx), std::move(result) });
1255
- });
1256
- return future;
1049
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_replica_result>>>();
1050
+ auto future = barrier->get_future();
1051
+ get_any_replica(std::move(document_id), options, [barrier](auto err, auto result) {
1052
+ barrier->set_value({ std::move(err), std::move(result) });
1053
+ });
1054
+ return future;
1257
1055
  }
1258
1056
 
1259
1057
  void
1260
- collection::get_all_replicas(std::string document_id, const get_all_replicas_options& options, get_all_replicas_handler&& handler) const
1058
+ collection::get_all_replicas(std::string document_id,
1059
+ const get_all_replicas_options& options,
1060
+ get_all_replicas_handler&& handler) const
1261
1061
  {
1262
- return impl_->get_all_replicas(std::move(document_id), options.build(), std::move(handler));
1062
+ return impl_->get_all_replicas(std::move(document_id), options.build(), std::move(handler));
1263
1063
  }
1264
1064
 
1265
1065
  auto
1266
1066
  collection::get_all_replicas(std::string document_id, const get_all_replicas_options& options) const
1267
- -> std::future<std::pair<key_value_error_context, get_all_replicas_result>>
1067
+ -> std::future<std::pair<error, get_all_replicas_result>>
1268
1068
  {
1269
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_all_replicas_result>>>();
1270
- auto future = barrier->get_future();
1271
- get_all_replicas(std::move(document_id), options, [barrier](auto ctx, auto result) {
1272
- barrier->set_value({ std::move(ctx), std::move(result) });
1273
- });
1274
- return future;
1069
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_all_replicas_result>>>();
1070
+ auto future = barrier->get_future();
1071
+ get_all_replicas(std::move(document_id), options, [barrier](auto err, auto result) {
1072
+ barrier->set_value({ std::move(err), std::move(result) });
1073
+ });
1074
+ return future;
1275
1075
  }
1276
1076
 
1277
1077
  void
1278
- collection::remove(std::string document_id, const remove_options& options, remove_handler&& handler) const
1078
+ collection::remove(std::string document_id,
1079
+ const remove_options& options,
1080
+ remove_handler&& handler) const
1279
1081
  {
1280
- return impl_->remove(std::move(document_id), options.build(), std::move(handler));
1082
+ return impl_->remove(std::move(document_id), options.build(), std::move(handler));
1281
1083
  }
1282
1084
 
1283
1085
  auto
1284
1086
  collection::remove(std::string document_id, const remove_options& options) const
1285
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1087
+ -> std::future<std::pair<error, mutation_result>>
1286
1088
  {
1287
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1288
- auto future = barrier->get_future();
1289
- remove(std::move(document_id), options, [barrier](auto ctx, auto result) {
1290
- barrier->set_value({ std::move(ctx), std::move(result) });
1291
- });
1292
- return future;
1089
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1090
+ auto future = barrier->get_future();
1091
+ remove(std::move(document_id), options, [barrier](auto err, auto result) {
1092
+ barrier->set_value({ std::move(err), std::move(result) });
1093
+ });
1094
+ return future;
1293
1095
  }
1294
1096
 
1295
1097
  void
@@ -1298,19 +1100,22 @@ collection::mutate_in(std::string document_id,
1298
1100
  const mutate_in_options& options,
1299
1101
  mutate_in_handler&& handler) const
1300
1102
  {
1301
- return impl_->mutate_in(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1103
+ return impl_->mutate_in(
1104
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1302
1105
  }
1303
1106
 
1304
1107
  auto
1305
- collection::mutate_in(std::string document_id, const mutate_in_specs& specs, const mutate_in_options& options) const
1306
- -> std::future<std::pair<subdocument_error_context, mutate_in_result>>
1108
+ collection::mutate_in(std::string document_id,
1109
+ const mutate_in_specs& specs,
1110
+ const mutate_in_options& options) const
1111
+ -> std::future<std::pair<error, mutate_in_result>>
1307
1112
  {
1308
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, mutate_in_result>>>();
1309
- auto future = barrier->get_future();
1310
- mutate_in(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1311
- barrier->set_value({ std::move(ctx), std::move(result) });
1312
- });
1313
- return future;
1113
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutate_in_result>>>();
1114
+ auto future = barrier->get_future();
1115
+ mutate_in(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1116
+ barrier->set_value({ std::move(err), std::move(result) });
1117
+ });
1118
+ return future;
1314
1119
  }
1315
1120
 
1316
1121
  void
@@ -1319,19 +1124,22 @@ collection::lookup_in(std::string document_id,
1319
1124
  const lookup_in_options& options,
1320
1125
  lookup_in_handler&& handler) const
1321
1126
  {
1322
- return impl_->lookup_in(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1127
+ return impl_->lookup_in(
1128
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1323
1129
  }
1324
1130
 
1325
1131
  auto
1326
- collection::lookup_in(std::string document_id, const lookup_in_specs& specs, const lookup_in_options& options) const
1327
- -> std::future<std::pair<subdocument_error_context, lookup_in_result>>
1132
+ collection::lookup_in(std::string document_id,
1133
+ const lookup_in_specs& specs,
1134
+ const lookup_in_options& options) const
1135
+ -> std::future<std::pair<error, lookup_in_result>>
1328
1136
  {
1329
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_result>>>();
1330
- auto future = barrier->get_future();
1331
- lookup_in(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1332
- barrier->set_value({ std::move(ctx), std::move(result) });
1333
- });
1334
- return future;
1137
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_result>>>();
1138
+ auto future = barrier->get_future();
1139
+ lookup_in(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1140
+ barrier->set_value({ std::move(err), std::move(result) });
1141
+ });
1142
+ return future;
1335
1143
  }
1336
1144
 
1337
1145
  void
@@ -1340,21 +1148,22 @@ collection::lookup_in_all_replicas(std::string document_id,
1340
1148
  const lookup_in_all_replicas_options& options,
1341
1149
  lookup_in_all_replicas_handler&& handler) const
1342
1150
  {
1343
- return impl_->lookup_in_all_replicas(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1151
+ return impl_->lookup_in_all_replicas(
1152
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1344
1153
  }
1345
1154
 
1346
1155
  auto
1347
1156
  collection::lookup_in_all_replicas(std::string document_id,
1348
1157
  const lookup_in_specs& specs,
1349
1158
  const lookup_in_all_replicas_options& options) const
1350
- -> std::future<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>
1159
+ -> std::future<std::pair<error, lookup_in_all_replicas_result>>
1351
1160
  {
1352
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_all_replicas_result>>>();
1353
- auto future = barrier->get_future();
1354
- lookup_in_all_replicas(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1355
- barrier->set_value({ std::move(ctx), std::move(result) });
1356
- });
1357
- return future;
1161
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_all_replicas_result>>>();
1162
+ auto future = barrier->get_future();
1163
+ lookup_in_all_replicas(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1164
+ barrier->set_value({ std::move(err), std::move(result) });
1165
+ });
1166
+ return future;
1358
1167
  }
1359
1168
 
1360
1169
  void
@@ -1363,19 +1172,22 @@ collection::lookup_in_any_replica(std::string document_id,
1363
1172
  const lookup_in_any_replica_options& options,
1364
1173
  lookup_in_any_replica_handler&& handler) const
1365
1174
  {
1366
- return impl_->lookup_in_any_replica(std::move(document_id), specs.specs(), options.build(), std::move(handler));
1175
+ return impl_->lookup_in_any_replica(
1176
+ std::move(document_id), specs.specs(), options.build(), std::move(handler));
1367
1177
  }
1368
1178
 
1369
1179
  auto
1370
- collection::lookup_in_any_replica(std::string document_id, const lookup_in_specs& specs, const lookup_in_any_replica_options& options) const
1371
- -> std::future<std::pair<subdocument_error_context, lookup_in_replica_result>>
1180
+ collection::lookup_in_any_replica(std::string document_id,
1181
+ const lookup_in_specs& specs,
1182
+ const lookup_in_any_replica_options& options) const
1183
+ -> std::future<std::pair<error, lookup_in_replica_result>>
1372
1184
  {
1373
- auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_replica_result>>>();
1374
- auto future = barrier->get_future();
1375
- lookup_in_any_replica(std::move(document_id), specs, options, [barrier](auto ctx, auto result) {
1376
- barrier->set_value({ std::move(ctx), std::move(result) });
1377
- });
1378
- return future;
1185
+ auto barrier = std::make_shared<std::promise<std::pair<error, lookup_in_replica_result>>>();
1186
+ auto future = barrier->get_future();
1187
+ lookup_in_any_replica(std::move(document_id), specs, options, [barrier](auto err, auto result) {
1188
+ barrier->set_value({ std::move(err), std::move(result) });
1189
+ });
1190
+ return future;
1379
1191
  }
1380
1192
 
1381
1193
  void
@@ -1384,121 +1196,155 @@ collection::get_and_lock(std::string document_id,
1384
1196
  const get_and_lock_options& options,
1385
1197
  get_and_lock_handler&& handler) const
1386
1198
  {
1387
- return impl_->get_and_lock(std::move(document_id), lock_duration, options.build(), std::move(handler));
1199
+ return impl_->get_and_lock(
1200
+ std::move(document_id), lock_duration, options.build(), std::move(handler));
1388
1201
  }
1389
1202
 
1390
1203
  auto
1391
- collection::get_and_lock(std::string document_id, std::chrono::seconds lock_duration, const get_and_lock_options& options) const
1392
- -> std::future<std::pair<key_value_error_context, get_result>>
1204
+ collection::get_and_lock(std::string document_id,
1205
+ std::chrono::seconds lock_duration,
1206
+ const get_and_lock_options& options) const
1207
+ -> std::future<std::pair<error, get_result>>
1393
1208
  {
1394
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
1395
- auto future = barrier->get_future();
1396
- get_and_lock(std::move(document_id), lock_duration, options, [barrier](auto ctx, auto result) {
1397
- barrier->set_value({ std::move(ctx), std::move(result) });
1398
- });
1399
- return future;
1209
+ auto barrier = std::make_shared<std::promise<std::pair<error, get_result>>>();
1210
+ auto future = barrier->get_future();
1211
+ get_and_lock(std::move(document_id), lock_duration, options, [barrier](auto err, auto result) {
1212
+ barrier->set_value({ std::move(err), std::move(result) });
1213
+ });
1214
+ return future;
1400
1215
  }
1401
1216
 
1402
1217
  void
1403
- collection::unlock(std::string document_id, couchbase::cas cas, const unlock_options& options, unlock_handler&& handler) const
1218
+ collection::unlock(std::string document_id,
1219
+ couchbase::cas cas,
1220
+ const unlock_options& options,
1221
+ unlock_handler&& handler) const
1404
1222
  {
1405
- return impl_->unlock(std::move(document_id), cas, options.build(), std::move(handler));
1223
+ return impl_->unlock(std::move(document_id), cas, options.build(), std::move(handler));
1406
1224
  }
1407
1225
 
1408
1226
  auto
1409
- collection::unlock(std::string document_id, couchbase::cas cas, const unlock_options& options) const -> std::future<key_value_error_context>
1227
+ collection::unlock(std::string document_id,
1228
+ couchbase::cas cas,
1229
+ const unlock_options& options) const -> std::future<error>
1410
1230
  {
1411
- auto barrier = std::make_shared<std::promise<key_value_error_context>>();
1412
- auto future = barrier->get_future();
1413
- unlock(std::move(document_id), cas, options, [barrier](auto ctx) { barrier->set_value({ std::move(ctx) }); });
1414
- return future;
1231
+ auto barrier = std::make_shared<std::promise<error>>();
1232
+ auto future = barrier->get_future();
1233
+ unlock(std::move(document_id), cas, options, [barrier](auto err) {
1234
+ barrier->set_value({ std::move(err) });
1235
+ });
1236
+ return future;
1415
1237
  }
1416
1238
 
1417
1239
  void
1418
- collection::exists(std::string document_id, const exists_options& options, exists_handler&& handler) const
1240
+ collection::exists(std::string document_id,
1241
+ const exists_options& options,
1242
+ exists_handler&& handler) const
1419
1243
  {
1420
- return impl_->exists(std::move(document_id), options.build(), std::move(handler));
1244
+ return impl_->exists(std::move(document_id), options.build(), std::move(handler));
1421
1245
  }
1422
1246
 
1423
1247
  auto
1424
1248
  collection::exists(std::string document_id, const exists_options& options) const
1425
- -> std::future<std::pair<key_value_error_context, exists_result>>
1249
+ -> std::future<std::pair<error, exists_result>>
1426
1250
  {
1427
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, exists_result>>>();
1428
- auto future = barrier->get_future();
1429
- exists(std::move(document_id), options, [barrier](auto ctx, auto result) {
1430
- barrier->set_value({ std::move(ctx), std::move(result) });
1431
- });
1432
- return future;
1251
+ auto barrier = std::make_shared<std::promise<std::pair<error, exists_result>>>();
1252
+ auto future = barrier->get_future();
1253
+ exists(std::move(document_id), options, [barrier](auto err, auto result) {
1254
+ barrier->set_value({ std::move(err), std::move(result) });
1255
+ });
1256
+ return future;
1433
1257
  }
1434
1258
 
1435
1259
  void
1436
- collection::upsert(std::string document_id, codec::encoded_value document, const upsert_options& options, upsert_handler&& handler) const
1260
+ collection::upsert(std::string document_id,
1261
+ codec::encoded_value document,
1262
+ const upsert_options& options,
1263
+ upsert_handler&& handler) const
1437
1264
  {
1438
- return impl_->upsert(std::move(document_id), std::move(document), options.build(), std::move(handler));
1265
+ return impl_->upsert(
1266
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1439
1267
  }
1440
1268
 
1441
1269
  auto
1442
- collection::upsert(std::string document_id, codec::encoded_value document, const upsert_options& options) const
1443
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1270
+ collection::upsert(std::string document_id,
1271
+ codec::encoded_value document,
1272
+ const upsert_options& options) const
1273
+ -> std::future<std::pair<error, mutation_result>>
1444
1274
  {
1445
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1446
- auto future = barrier->get_future();
1447
- upsert(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1448
- barrier->set_value({ std::move(ctx), std::move(result) });
1449
- });
1450
- return future;
1275
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1276
+ auto future = barrier->get_future();
1277
+ upsert(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1278
+ barrier->set_value({ std::move(err), std::move(result) });
1279
+ });
1280
+ return future;
1451
1281
  }
1452
1282
 
1453
1283
  void
1454
- collection::insert(std::string document_id, codec::encoded_value document, const insert_options& options, insert_handler&& handler) const
1284
+ collection::insert(std::string document_id,
1285
+ codec::encoded_value document,
1286
+ const insert_options& options,
1287
+ insert_handler&& handler) const
1455
1288
  {
1456
- return impl_->insert(std::move(document_id), std::move(document), options.build(), std::move(handler));
1289
+ return impl_->insert(
1290
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1457
1291
  }
1458
1292
 
1459
1293
  auto
1460
- collection::insert(std::string document_id, codec::encoded_value document, const insert_options& options) const
1461
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1294
+ collection::insert(std::string document_id,
1295
+ codec::encoded_value document,
1296
+ const insert_options& options) const
1297
+ -> std::future<std::pair<error, mutation_result>>
1462
1298
  {
1463
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1464
- auto future = barrier->get_future();
1465
- insert(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1466
- barrier->set_value({ std::move(ctx), std::move(result) });
1467
- });
1468
- return future;
1299
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1300
+ auto future = barrier->get_future();
1301
+ insert(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1302
+ barrier->set_value({ std::move(err), std::move(result) });
1303
+ });
1304
+ return future;
1469
1305
  }
1470
1306
 
1471
1307
  void
1472
- collection::replace(std::string document_id, codec::encoded_value document, const replace_options& options, replace_handler&& handler) const
1308
+ collection::replace(std::string document_id,
1309
+ codec::encoded_value document,
1310
+ const replace_options& options,
1311
+ replace_handler&& handler) const
1473
1312
  {
1474
- return impl_->replace(std::move(document_id), std::move(document), options.build(), std::move(handler));
1313
+ return impl_->replace(
1314
+ std::move(document_id), std::move(document), options.build(), std::move(handler));
1475
1315
  }
1476
1316
 
1477
1317
  auto
1478
- collection::replace(std::string document_id, codec::encoded_value document, const replace_options& options) const
1479
- -> std::future<std::pair<key_value_error_context, mutation_result>>
1318
+ collection::replace(std::string document_id,
1319
+ codec::encoded_value document,
1320
+ const replace_options& options) const
1321
+ -> std::future<std::pair<error, mutation_result>>
1480
1322
  {
1481
- auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
1482
- auto future = barrier->get_future();
1483
- replace(std::move(document_id), std::move(document), options, [barrier](auto ctx, auto result) {
1484
- barrier->set_value({ std::move(ctx), std::move(result) });
1485
- });
1486
- return future;
1323
+ auto barrier = std::make_shared<std::promise<std::pair<error, mutation_result>>>();
1324
+ auto future = barrier->get_future();
1325
+ replace(std::move(document_id), std::move(document), options, [barrier](auto err, auto result) {
1326
+ barrier->set_value({ std::move(err), std::move(result) });
1327
+ });
1328
+ return future;
1487
1329
  }
1488
1330
 
1489
1331
  void
1490
- collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options, couchbase::scan_handler&& handler) const
1332
+ collection::scan(const couchbase::scan_type& scan_type,
1333
+ const couchbase::scan_options& options,
1334
+ couchbase::scan_handler&& handler) const
1491
1335
  {
1492
- return impl_->scan(scan_type.build(), options.build(), std::move(handler));
1336
+ return impl_->scan(scan_type.build(), options.build(), std::move(handler));
1493
1337
  }
1494
1338
 
1495
1339
  auto
1496
- collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options) const
1497
- -> std::future<std::pair<std::error_code, scan_result>>
1340
+ collection::scan(const couchbase::scan_type& scan_type, const couchbase::scan_options& options)
1341
+ const -> std::future<std::pair<error, scan_result>>
1498
1342
  {
1499
- auto barrier = std::make_shared<std::promise<std::pair<std::error_code, scan_result>>>();
1500
- auto future = barrier->get_future();
1501
- scan(scan_type, options, [barrier](auto ec, auto result) { barrier->set_value({ ec, std::move(result) }); });
1502
- return future;
1343
+ auto barrier = std::make_shared<std::promise<std::pair<error, scan_result>>>();
1344
+ auto future = barrier->get_future();
1345
+ scan(scan_type, options, [barrier](auto err, auto result) {
1346
+ barrier->set_value({ err, std::move(result) });
1347
+ });
1348
+ return future;
1503
1349
  }
1504
1350
  } // namespace couchbase