couchbase 3.8.2 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/CMakeLists.txt +16 -1
  4. data/ext/cache/cpm/{CPM_0.42.0.cmake → CPM_0.43.1.cmake} +18 -2
  5. data/ext/cache/extconf_include.rb +6 -6
  6. data/ext/cache/mozilla-ca-bundle.crt +121 -55
  7. data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
  8. data/ext/couchbase/CMakeLists.txt +136 -23
  9. data/ext/couchbase/cmake/APKBUILD.in +25 -4
  10. data/ext/couchbase/cmake/Bundler.cmake +143 -34
  11. data/ext/couchbase/cmake/CPM.cmake +126 -12
  12. data/ext/couchbase/cmake/Cache.cmake +7 -1
  13. data/ext/couchbase/cmake/CompilerOptions.cmake +1 -1
  14. data/ext/couchbase/cmake/CompilerWarnings.cmake +17 -6
  15. data/ext/couchbase/cmake/GrpcProtobuf.cmake +481 -0
  16. data/ext/couchbase/cmake/OpenSSL.cmake +82 -7
  17. data/ext/couchbase/cmake/Packaging.cmake +519 -65
  18. data/ext/couchbase/cmake/Protostellar.cmake +250 -0
  19. data/ext/couchbase/cmake/Sanitizers.cmake +61 -50
  20. data/ext/couchbase/cmake/StaticAnalyzers.cmake +16 -5
  21. data/ext/couchbase/cmake/TestFramework.cmake +283 -0
  22. data/ext/couchbase/cmake/TestFrameworkAddTests.cmake +51 -0
  23. data/ext/couchbase/cmake/Testing.cmake +27 -9
  24. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +141 -8
  25. data/ext/couchbase/cmake/VersionInfo.cmake +50 -0
  26. data/ext/couchbase/cmake/build_config.hxx.in +2 -1
  27. data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +101 -23
  28. data/ext/couchbase/cmake/couchbase_cxx_client_static-config.cmake.in +7 -0
  29. data/ext/couchbase/cmake/couchbase_cxx_client_static.pc.in +2 -0
  30. data/ext/couchbase/cmake/gRPC_Generate.cmake +58 -0
  31. data/ext/couchbase/cmake/protobuf_Generate.cmake +69 -0
  32. data/ext/couchbase/cmake/require-git-checkout.cmake +25 -0
  33. data/ext/couchbase/cmake/tarball_glob.txt +49 -0
  34. data/ext/couchbase/core/agent_group.cxx +0 -8
  35. data/ext/couchbase/core/agent_group.hxx +0 -4
  36. data/ext/couchbase/core/analytics_stream.cxx +314 -0
  37. data/ext/couchbase/core/analytics_stream.hxx +129 -0
  38. data/ext/couchbase/core/analytics_stream_component.cxx +245 -0
  39. data/ext/couchbase/core/analytics_stream_component.hxx +67 -0
  40. data/ext/couchbase/core/app_telemetry_meter.cxx +25 -3
  41. data/ext/couchbase/core/app_telemetry_meter.hxx +77 -0
  42. data/ext/couchbase/core/app_telemetry_reporter.cxx +7 -6
  43. data/ext/couchbase/core/bucket.cxx +381 -87
  44. data/ext/couchbase/core/bucket.hxx +105 -25
  45. data/ext/couchbase/core/bucket_unit_test_api.hxx +57 -0
  46. data/ext/couchbase/core/capella.hxx +91 -0
  47. data/ext/couchbase/core/cluster.cxx +1551 -397
  48. data/ext/couchbase/core/cluster.hxx +39 -8
  49. data/ext/couchbase/core/cluster_agent.cxx +0 -8
  50. data/ext/couchbase/core/cluster_agent.hxx +0 -4
  51. data/ext/couchbase/core/cluster_options.hxx +26 -3
  52. data/ext/couchbase/core/collections_component.cxx +39 -15
  53. data/ext/couchbase/core/config_profiles.cxx +1 -1
  54. data/ext/couchbase/core/crud_component.cxx +2 -2
  55. data/ext/couchbase/core/crud_options.hxx +34 -0
  56. data/ext/couchbase/core/crypto/cbcrypto.cc +18 -13
  57. data/ext/couchbase/core/document_id_redaction.hxx +81 -0
  58. data/ext/couchbase/core/error_context/base_error_context.hxx +7 -6
  59. data/ext/couchbase/core/error_context/key_value.cxx +25 -2
  60. data/ext/couchbase/core/error_context/key_value.hxx +60 -33
  61. data/ext/couchbase/core/error_context/key_value_error_context.hxx +16 -15
  62. data/ext/couchbase/core/error_context/search.hxx +5 -0
  63. data/ext/couchbase/core/error_context/search_json.hxx +3 -0
  64. data/ext/couchbase/core/error_context/subdocument_error_context.hxx +19 -18
  65. data/ext/couchbase/core/error_context/view.hxx +5 -0
  66. data/ext/couchbase/core/free_form_http_request.cxx +237 -4
  67. data/ext/couchbase/core/free_form_http_request.hxx +41 -8
  68. data/ext/couchbase/core/http_component.cxx +300 -284
  69. data/ext/couchbase/core/http_component.hxx +0 -4
  70. data/ext/couchbase/core/impl/analytics.cxx +38 -5
  71. data/ext/couchbase/core/impl/analytics.hxx +34 -0
  72. data/ext/couchbase/core/impl/bootstrap_error.hxx +0 -3
  73. data/ext/couchbase/core/impl/collection.cxx +215 -202
  74. data/ext/couchbase/core/impl/collection_manager.cxx +1 -1
  75. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +45 -18
  76. data/ext/couchbase/core/impl/error.cxx +22 -2
  77. data/ext/couchbase/core/impl/internal_analytics_stream_result.hxx +111 -0
  78. data/ext/couchbase/core/impl/internal_query_stream_result.hxx +110 -0
  79. data/ext/couchbase/core/impl/invoke_with_node_id.hxx +15 -7
  80. data/ext/couchbase/core/impl/key_value_error_category.cxx +6 -0
  81. data/ext/couchbase/core/impl/lookup_in_replica.cxx +10 -10
  82. data/ext/couchbase/core/impl/lookup_in_replica.hxx +4 -4
  83. data/ext/couchbase/core/impl/node_id.cxx +49 -13
  84. data/ext/couchbase/core/impl/observability_recorder.cxx +12 -2
  85. data/ext/couchbase/core/impl/observe_poll.cxx +63 -23
  86. data/ext/couchbase/core/impl/public_analytics_stream_result.cxx +372 -0
  87. data/ext/couchbase/core/impl/public_bucket.cxx +48 -2
  88. data/ext/couchbase/core/impl/public_cluster.cxx +229 -42
  89. data/ext/couchbase/core/impl/public_query_stream_result.cxx +380 -0
  90. data/ext/couchbase/core/impl/public_transaction_get_multi_replicas_from_preferred_server_group_result.cxx +42 -0
  91. data/ext/couchbase/core/impl/public_transaction_get_multi_result.cxx +42 -0
  92. data/ext/couchbase/core/impl/query.cxx +76 -7
  93. data/ext/couchbase/core/impl/query.hxx +36 -0
  94. data/ext/couchbase/core/impl/query_index_manager.cxx +54 -1
  95. data/ext/couchbase/core/impl/replica_utils.cxx +101 -0
  96. data/ext/couchbase/core/impl/replica_utils.hxx +64 -0
  97. data/ext/couchbase/core/impl/resolve_node_id.hxx +125 -0
  98. data/ext/couchbase/core/impl/scope.cxx +70 -0
  99. data/ext/couchbase/core/impl/search.cxx +31 -1
  100. data/ext/couchbase/core/impl/transactions.cxx +130 -0
  101. data/ext/couchbase/core/impl/wait_until_ready.cxx +439 -0
  102. data/ext/couchbase/core/impl/wait_until_ready.hxx +110 -0
  103. data/ext/couchbase/core/impl/with_bucket_config_or_timeout.hxx +180 -0
  104. data/ext/couchbase/core/impl/with_cancellation.hxx +11 -3
  105. data/ext/couchbase/core/io/configuration_belongs_to_session.hxx +1 -2
  106. data/ext/couchbase/core/io/dns_client.cxx +122 -45
  107. data/ext/couchbase/core/io/dns_codec.hxx +21 -21
  108. data/ext/couchbase/core/io/dns_config.cxx +21 -6
  109. data/ext/couchbase/core/io/http_command.hxx +149 -121
  110. data/ext/couchbase/core/io/http_error.hxx +107 -0
  111. data/ext/couchbase/core/io/http_parser.cxx +4 -0
  112. data/ext/couchbase/core/io/http_session.cxx +606 -154
  113. data/ext/couchbase/core/io/http_session.hxx +147 -30
  114. data/ext/couchbase/core/io/http_session_manager.hxx +329 -382
  115. data/ext/couchbase/core/io/http_streaming_parser.cxx +4 -0
  116. data/ext/couchbase/core/io/http_streaming_response.cxx +328 -43
  117. data/ext/couchbase/core/io/http_streaming_response.hxx +37 -3
  118. data/ext/couchbase/core/io/mcbp_buffer_pool.hxx +122 -0
  119. data/ext/couchbase/core/io/mcbp_command.hxx +150 -51
  120. data/ext/couchbase/core/io/mcbp_command_id.hxx +45 -0
  121. data/ext/couchbase/core/io/mcbp_message.cxx +9 -1
  122. data/ext/couchbase/core/io/mcbp_message.hxx +19 -0
  123. data/ext/couchbase/core/io/mcbp_output_queue.hxx +150 -0
  124. data/ext/couchbase/core/io/mcbp_parser.cxx +24 -7
  125. data/ext/couchbase/core/io/mcbp_session.cxx +309 -301
  126. data/ext/couchbase/core/io/mcbp_session.hxx +27 -18
  127. data/ext/couchbase/core/io/opaque_ring_table.hxx +145 -0
  128. data/ext/couchbase/core/io/retry_orchestrator.hxx +6 -5
  129. data/ext/couchbase/core/io/stream_deadline.hxx +50 -0
  130. data/ext/couchbase/core/io/streams.cxx +151 -21
  131. data/ext/couchbase/core/io/streams.hxx +48 -1
  132. data/ext/couchbase/core/logger/logger.cxx +36 -0
  133. data/ext/couchbase/core/logger/logger.hxx +46 -6
  134. data/ext/couchbase/core/logger/redaction.hxx +503 -0
  135. data/ext/couchbase/core/management/eventing_status.hxx +10 -0
  136. data/ext/couchbase/core/management/eventing_status_json.hxx +4 -0
  137. data/ext/couchbase/core/mcbp/big_endian.cxx +1 -1
  138. data/ext/couchbase/core/mcbp/codec.cxx +27 -18
  139. data/ext/couchbase/core/mcbp/operation_queue.cxx +2 -2
  140. data/ext/couchbase/core/mcbp/packet.hxx +2 -2
  141. data/ext/couchbase/core/mcbp/queue_request.cxx +23 -6
  142. data/ext/couchbase/core/mcbp/queue_request.hxx +21 -0
  143. data/ext/couchbase/core/meta/features.hxx +13 -0
  144. data/ext/couchbase/core/meta/version.cxx +6 -3
  145. data/ext/couchbase/core/metrics/logging_meter.cxx +5 -10
  146. data/ext/couchbase/core/metrics/meter_wrapper.cxx +63 -33
  147. data/ext/couchbase/core/metrics/meter_wrapper.hxx +55 -3
  148. data/ext/couchbase/core/operations/analytics_response_parsing.cxx +177 -0
  149. data/ext/couchbase/core/operations/analytics_response_parsing.hxx +55 -0
  150. data/ext/couchbase/core/operations/document_analytics.cxx +48 -130
  151. data/ext/couchbase/core/operations/document_analytics.hxx +14 -2
  152. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +15 -7
  153. data/ext/couchbase/core/operations/document_get_any_replica.hxx +19 -8
  154. data/ext/couchbase/core/operations/document_get_projected.cxx +1 -1
  155. data/ext/couchbase/core/{impl/get_replica.cxx → operations/document_get_replica.cxx} +21 -3
  156. data/ext/couchbase/core/{impl/get_replica.hxx → operations/document_get_replica.hxx} +31 -4
  157. data/ext/couchbase/core/operations/document_lookup_in.cxx +10 -10
  158. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +228 -198
  159. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +215 -217
  160. data/ext/couchbase/core/operations/document_query.cxx +108 -221
  161. data/ext/couchbase/core/operations/document_query.hxx +18 -4
  162. data/ext/couchbase/core/operations/document_search.cxx +52 -8
  163. data/ext/couchbase/core/operations/document_search.hxx +3 -0
  164. data/ext/couchbase/core/operations/document_view.cxx +3 -3
  165. data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +15 -8
  166. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +4 -0
  167. data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +11 -6
  168. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.cxx +3 -2
  169. data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +10 -5
  170. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +10 -5
  171. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +2 -1
  172. data/ext/couchbase/core/operations/management/analytics_index_create.cxx +33 -8
  173. data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +12 -7
  174. data/ext/couchbase/core/operations/management/analytics_index_get_all.cxx +3 -2
  175. data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +11 -6
  176. data/ext/couchbase/core/operations/management/analytics_link_create.cxx +3 -3
  177. data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +10 -4
  178. data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +6 -4
  179. data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +4 -3
  180. data/ext/couchbase/core/operations/management/analytics_link_replace.cxx +3 -3
  181. data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +1 -1
  182. data/ext/couchbase/core/operations/management/change_password.cxx +2 -0
  183. data/ext/couchbase/core/operations/management/collection_drop.cxx +5 -1
  184. data/ext/couchbase/core/operations/management/error_utils.cxx +60 -6
  185. data/ext/couchbase/core/operations/management/error_utils.hxx +29 -1
  186. data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +9 -3
  187. data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +8 -3
  188. data/ext/couchbase/core/operations/management/eventing_get_all_functions.cxx +4 -2
  189. data/ext/couchbase/core/operations/management/eventing_get_function.cxx +5 -3
  190. data/ext/couchbase/core/operations/management/eventing_get_status.cxx +4 -2
  191. data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +9 -3
  192. data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +9 -3
  193. data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +9 -3
  194. data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +9 -3
  195. data/ext/couchbase/core/operations/management/group_drop.cxx +3 -1
  196. data/ext/couchbase/core/operations/management/group_get.cxx +3 -1
  197. data/ext/couchbase/core/operations/management/group_upsert.cxx +11 -8
  198. data/ext/couchbase/core/operations/management/query_index_build.cxx +5 -2
  199. data/ext/couchbase/core/operations/management/query_index_create.cxx +9 -3
  200. data/ext/couchbase/core/operations/management/query_index_drop.cxx +11 -4
  201. data/ext/couchbase/core/operations/management/query_index_get_all.cxx +1 -1
  202. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.cxx +1 -1
  203. data/ext/couchbase/core/operations/management/scope_drop.cxx +5 -1
  204. data/ext/couchbase/core/operations/management/scope_get_all.cxx +6 -1
  205. data/ext/couchbase/core/operations/management/search_get_stats.cxx +10 -0
  206. data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +3 -2
  207. data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +4 -3
  208. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +4 -3
  209. data/ext/couchbase/core/operations/management/search_index_control_query.cxx +4 -3
  210. data/ext/couchbase/core/operations/management/search_index_drop.cxx +2 -2
  211. data/ext/couchbase/core/operations/management/search_index_get.cxx +2 -2
  212. data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +3 -2
  213. data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +3 -1
  214. data/ext/couchbase/core/operations/management/search_index_upsert.cxx +2 -2
  215. data/ext/couchbase/core/operations/management/user_drop.cxx +3 -1
  216. data/ext/couchbase/core/operations/management/user_get.cxx +3 -1
  217. data/ext/couchbase/core/operations/management/user_upsert.cxx +12 -9
  218. data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
  219. data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
  220. data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
  221. data/ext/couchbase/core/operations/operation_traits.hxx +18 -0
  222. data/ext/couchbase/core/operations/query_response_parsing.cxx +211 -0
  223. data/ext/couchbase/core/operations/query_response_parsing.hxx +60 -0
  224. data/ext/couchbase/core/operations_fwd.hxx +3 -3
  225. data/ext/couchbase/core/origin.cxx +54 -26
  226. data/ext/couchbase/core/origin.hxx +12 -0
  227. data/ext/couchbase/core/orphan_reporter.cxx +2 -1
  228. data/ext/couchbase/core/platform/random.cc +7 -7
  229. data/ext/couchbase/core/protocol/client_request.cxx +2 -2
  230. data/ext/couchbase/core/protocol/client_request.hxx +38 -21
  231. data/ext/couchbase/core/protocol/client_response.cxx +11 -3
  232. data/ext/couchbase/core/protocol/client_response.hxx +27 -6
  233. data/ext/couchbase/core/protocol/cmd_append.cxx +2 -2
  234. data/ext/couchbase/core/protocol/cmd_cluster_map_change_notification.cxx +2 -2
  235. data/ext/couchbase/core/protocol/cmd_decrement.cxx +6 -6
  236. data/ext/couchbase/core/protocol/cmd_get.cxx +1 -1
  237. data/ext/couchbase/core/protocol/cmd_get_and_lock.cxx +2 -2
  238. data/ext/couchbase/core/protocol/cmd_get_and_touch.cxx +2 -2
  239. data/ext/couchbase/core/protocol/cmd_get_cluster_config.cxx +6 -4
  240. data/ext/couchbase/core/protocol/cmd_get_collection_id.cxx +2 -2
  241. data/ext/couchbase/core/protocol/cmd_get_error_map.cxx +1 -1
  242. data/ext/couchbase/core/protocol/cmd_get_meta.cxx +4 -4
  243. data/ext/couchbase/core/protocol/cmd_get_replica.cxx +1 -1
  244. data/ext/couchbase/core/protocol/cmd_hello.cxx +1 -1
  245. data/ext/couchbase/core/protocol/cmd_increment.cxx +6 -6
  246. data/ext/couchbase/core/protocol/cmd_insert.cxx +4 -4
  247. data/ext/couchbase/core/protocol/cmd_lookup_in.cxx +4 -3
  248. data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +4 -3
  249. data/ext/couchbase/core/protocol/cmd_mutate_in.cxx +10 -9
  250. data/ext/couchbase/core/protocol/cmd_mutate_in.hxx +10 -10
  251. data/ext/couchbase/core/protocol/cmd_observe_seqno.cxx +7 -7
  252. data/ext/couchbase/core/protocol/cmd_prepend.cxx +2 -2
  253. data/ext/couchbase/core/protocol/cmd_remove.cxx +2 -2
  254. data/ext/couchbase/core/protocol/cmd_replace.cxx +4 -4
  255. data/ext/couchbase/core/protocol/cmd_touch.cxx +1 -1
  256. data/ext/couchbase/core/protocol/cmd_upsert.cxx +4 -4
  257. data/ext/couchbase/core/protocol/datatype.hxx +118 -1
  258. data/ext/couchbase/core/protocol/frame_info_utils.cxx +1 -1
  259. data/ext/couchbase/core/protocol/magic.hxx +4 -0
  260. data/ext/couchbase/core/protocol/magic_fmt.hxx +3 -0
  261. data/ext/couchbase/core/protocol/server_request.hxx +3 -1
  262. data/ext/couchbase/core/protocol/status.cxx +1 -1
  263. data/ext/couchbase/core/protostellar/analytics_converter.hxx +171 -0
  264. data/ext/couchbase/core/protostellar/bucket_admin_converter.hxx +301 -0
  265. data/ext/couchbase/core/protostellar/collection_admin_converter.hxx +92 -0
  266. data/ext/couchbase/core/protostellar/component.cxx +2445 -0
  267. data/ext/couchbase/core/protostellar/component.hxx +391 -0
  268. data/ext/couchbase/core/{columnar/bootstrap_notification_subscriber.hxx → protostellar/compression_settings.hxx} +11 -10
  269. data/ext/couchbase/core/protostellar/credentials.cxx +233 -0
  270. data/ext/couchbase/core/protostellar/credentials.hxx +88 -0
  271. data/ext/couchbase/core/protostellar/dispatcher.cxx +57 -0
  272. data/ext/couchbase/core/protostellar/dispatcher.hxx +482 -0
  273. data/ext/couchbase/core/protostellar/error_utils.cxx +293 -0
  274. data/ext/couchbase/core/protostellar/error_utils.hxx +97 -0
  275. data/ext/couchbase/core/protostellar/json_payload.hxx +49 -0
  276. data/ext/couchbase/core/protostellar/kv_converter.cxx +70 -0
  277. data/ext/couchbase/core/protostellar/kv_converter.hxx +600 -0
  278. data/ext/couchbase/core/protostellar/query_converter.hxx +265 -0
  279. data/ext/couchbase/core/protostellar/query_index_admin_converter.hxx +291 -0
  280. data/ext/couchbase/core/protostellar/query_proto.hxx +73 -0
  281. data/ext/couchbase/core/protostellar/search_converter.hxx +244 -0
  282. data/ext/couchbase/core/protostellar/search_index_admin_converter.hxx +156 -0
  283. data/ext/couchbase/core/protostellar/view_converter.hxx +158 -0
  284. data/ext/couchbase/core/query_stream.cxx +447 -0
  285. data/ext/couchbase/core/query_stream.hxx +141 -0
  286. data/ext/couchbase/core/query_stream_component.cxx +243 -0
  287. data/ext/couchbase/core/query_stream_component.hxx +68 -0
  288. data/ext/couchbase/core/range_scan_load_balancer.cxx +15 -8
  289. data/ext/couchbase/core/range_scan_orchestrator.cxx +15 -3
  290. data/ext/couchbase/core/response_handler.hxx +41 -4
  291. data/ext/couchbase/core/row_streamer.cxx +332 -46
  292. data/ext/couchbase/core/row_streamer.hxx +31 -1
  293. data/ext/couchbase/core/row_streamer_options.hxx +55 -0
  294. data/ext/couchbase/core/sasl/client.h +3 -0
  295. data/ext/couchbase/core/search_scoring.hxx +66 -0
  296. data/ext/couchbase/core/stream_error_details.hxx +69 -0
  297. data/ext/couchbase/core/timeout_defaults.hxx +0 -1
  298. data/ext/couchbase/core/topology/capabilities.hxx +6 -0
  299. data/ext/couchbase/core/topology/capabilities_fmt.hxx +3 -0
  300. data/ext/couchbase/core/topology/configuration.cxx +21 -6
  301. data/ext/couchbase/core/topology/configuration.hxx +29 -8
  302. data/ext/couchbase/core/topology/configuration_json.hxx +3 -0
  303. data/ext/couchbase/core/topology/error_map_json.hxx +3 -1
  304. data/ext/couchbase/core/tracing/threshold_logging_tracer.cxx +70 -4
  305. data/ext/couchbase/core/tracing/threshold_logging_tracer.hxx +10 -0
  306. data/ext/couchbase/core/transactions/active_transaction_record.cxx +0 -34
  307. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +108 -63
  308. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +19 -2
  309. data/ext/couchbase/core/transactions/error_list.hxx +2 -2
  310. data/ext/couchbase/core/transactions/get_multi_fetch.hxx +160 -0
  311. data/ext/couchbase/core/transactions/get_multi_orchestrator.cxx +326 -125
  312. data/ext/couchbase/core/transactions/get_multi_transaction_id.hxx +62 -0
  313. data/ext/couchbase/core/transactions/internal/atr_entry.hxx +22 -2
  314. data/ext/couchbase/core/transactions/internal/transaction_context.hxx +2 -2
  315. data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +23 -1
  316. data/ext/couchbase/core/transactions/internal/utils.hxx +50 -14
  317. data/ext/couchbase/core/transactions/staged_mutation.cxx +23 -18
  318. data/ext/couchbase/core/transactions/staged_mutation.hxx +15 -4
  319. data/ext/couchbase/core/transactions/transaction_context.cxx +55 -40
  320. data/ext/couchbase/core/transactions/transaction_get_result.hxx +16 -0
  321. data/ext/couchbase/core/transactions/transactions.cxx +3 -55
  322. data/ext/couchbase/core/transactions/transactions_cleanup.cxx +165 -72
  323. data/ext/couchbase/core/transactions/transactions_config.cxx +0 -11
  324. data/ext/couchbase/core/transactions/utils.cxx +10 -0
  325. data/ext/couchbase/core/transactions/waitable_op_list.hxx +2 -2
  326. data/ext/couchbase/core/transactions.hxx +9 -9
  327. data/ext/couchbase/core/utils/byteswap.hxx +166 -9
  328. data/ext/couchbase/core/utils/connection_string.cxx +50 -85
  329. data/ext/couchbase/core/utils/connection_string.hxx +15 -0
  330. data/ext/couchbase/core/{columnar/backoff_calculator.hxx → utils/deadline.hxx} +13 -13
  331. data/ext/couchbase/core/utils/duration_parser.cxx +1 -1
  332. data/ext/couchbase/core/utils/json_streaming_lexer.cxx +48 -5
  333. data/ext/couchbase/core/utils/json_streaming_lexer.hxx +4 -1
  334. data/ext/couchbase/core/utils/movable_function.hxx +301 -52
  335. data/ext/couchbase/core/utils/name_codec.hxx +154 -11
  336. data/ext/couchbase/core/{columnar/retry_info.hxx → utils/process_id.hxx} +18 -13
  337. data/ext/couchbase/core/utils/url_codec.cxx +12 -51
  338. data/ext/couchbase/core/websocket_codec.cxx +13 -37
  339. data/ext/couchbase/couchbase/analytics_options.hxx +21 -10
  340. data/ext/couchbase/couchbase/analytics_row.hxx +105 -0
  341. data/ext/couchbase/couchbase/analytics_stream_result.hxx +266 -0
  342. data/ext/couchbase/couchbase/boolean_query.hxx +3 -3
  343. data/ext/couchbase/couchbase/bucket.hxx +57 -0
  344. data/ext/couchbase/couchbase/cluster.hxx +183 -5
  345. data/ext/couchbase/{core/columnar/security_options.hxx → couchbase/cluster_state.hxx} +18 -14
  346. data/ext/couchbase/couchbase/codec/lenient_json_transcoder.hxx +69 -0
  347. data/ext/couchbase/couchbase/collection.hxx +234 -14
  348. data/ext/couchbase/couchbase/common_durability_options.hxx +18 -3
  349. data/ext/couchbase/couchbase/conjunction_query.hxx +1 -1
  350. data/ext/couchbase/couchbase/create_dataset_analytics_options.hxx +6 -1
  351. data/ext/couchbase/couchbase/date_range_query.hxx +2 -2
  352. data/ext/couchbase/couchbase/decrement_options.hxx +1 -1
  353. data/ext/couchbase/couchbase/disjunction_query.hxx +1 -1
  354. data/ext/couchbase/couchbase/error.hxx +32 -0
  355. data/ext/couchbase/couchbase/error_codes.hxx +33 -1
  356. data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +1 -1
  357. data/ext/couchbase/couchbase/geo_distance_query.hxx +1 -1
  358. data/ext/couchbase/couchbase/geo_polygon_query.hxx +1 -1
  359. data/ext/couchbase/couchbase/get_replica_options.hxx +68 -0
  360. data/ext/couchbase/couchbase/get_replica_result.hxx +5 -3
  361. data/ext/couchbase/couchbase/get_replica_strategy.hxx +161 -0
  362. data/ext/couchbase/couchbase/get_result.hxx +1 -0
  363. data/ext/couchbase/couchbase/increment_options.hxx +1 -1
  364. data/ext/couchbase/couchbase/insert_options.hxx +1 -1
  365. data/ext/couchbase/couchbase/match_phrase_query.hxx +1 -1
  366. data/ext/couchbase/couchbase/match_query.hxx +1 -1
  367. data/ext/couchbase/couchbase/mutate_in_options.hxx +3 -3
  368. data/ext/couchbase/couchbase/network_options.hxx +1 -1
  369. data/ext/couchbase/couchbase/node_id.hxx +42 -14
  370. data/ext/couchbase/couchbase/node_id_for_options.hxx +7 -1
  371. data/ext/couchbase/couchbase/node_ids_options.hxx +8 -2
  372. data/ext/couchbase/couchbase/numeric_range_query.hxx +1 -1
  373. data/ext/couchbase/couchbase/phrase_query.hxx +1 -1
  374. data/ext/couchbase/couchbase/prefix_query.hxx +1 -1
  375. data/ext/couchbase/couchbase/query_options.hxx +23 -12
  376. data/ext/couchbase/couchbase/query_row.hxx +111 -0
  377. data/ext/couchbase/couchbase/query_stream_result.hxx +302 -0
  378. data/ext/couchbase/couchbase/query_string_query.hxx +3 -3
  379. data/ext/couchbase/couchbase/regexp_query.hxx +1 -1
  380. data/ext/couchbase/couchbase/replace_options.hxx +3 -3
  381. data/ext/couchbase/couchbase/result.hxx +14 -3
  382. data/ext/couchbase/couchbase/scan_result_item.hxx +1 -0
  383. data/ext/couchbase/couchbase/scope.hxx +85 -2
  384. data/ext/couchbase/couchbase/search_options.hxx +58 -8
  385. data/ext/couchbase/couchbase/search_scoring.hxx +94 -0
  386. data/ext/couchbase/couchbase/search_scoring_none.hxx +51 -0
  387. data/ext/couchbase/couchbase/search_scoring_reciprocal_rank_fusion.hxx +88 -0
  388. data/ext/couchbase/couchbase/search_scoring_relative_score_fusion.hxx +70 -0
  389. data/ext/couchbase/couchbase/term_range_query.hxx +1 -1
  390. data/ext/couchbase/couchbase/tracing/request_span.hxx +46 -0
  391. data/ext/couchbase/couchbase/transactions/transaction_get_multi_replicas_from_preferred_server_group_result.hxx +23 -21
  392. data/ext/couchbase/couchbase/transactions/transaction_get_multi_result.hxx +24 -19
  393. data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +17 -3
  394. data/ext/couchbase/couchbase/transactions/transactions_config.hxx +4 -2
  395. data/ext/couchbase/couchbase/transactions.hxx +27 -18
  396. data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
  397. data/ext/couchbase/couchbase/vector_query.hxx +1 -1
  398. data/ext/couchbase/couchbase/wait_until_ready_options.hxx +111 -0
  399. data/ext/couchbase/couchbase/wildcard_query.hxx +1 -1
  400. data/ext/extconf.rb +15 -10
  401. data/ext/rcb_analytics.cxx +82 -102
  402. data/ext/rcb_backend.cxx +42 -36
  403. data/ext/rcb_backend.hxx +2 -0
  404. data/ext/rcb_buckets.cxx +47 -59
  405. data/ext/rcb_collections.cxx +42 -52
  406. data/ext/rcb_crud.cxx +345 -224
  407. data/ext/rcb_diagnostics.cxx +117 -27
  408. data/ext/rcb_exceptions.cxx +152 -99
  409. data/ext/rcb_exceptions.hxx +25 -0
  410. data/ext/rcb_extras.cxx +18 -19
  411. data/ext/rcb_hdr_histogram.cxx +19 -4
  412. data/ext/rcb_logger.cxx +202 -27
  413. data/ext/rcb_logger.hxx +12 -0
  414. data/ext/rcb_multi.cxx +40 -40
  415. data/ext/rcb_observability.cxx +7 -5
  416. data/ext/rcb_query.cxx +99 -142
  417. data/ext/rcb_range_scan.cxx +41 -35
  418. data/ext/rcb_search.cxx +98 -99
  419. data/ext/rcb_users.cxx +36 -56
  420. data/ext/rcb_utils.cxx +100 -37
  421. data/ext/rcb_utils.hxx +287 -33
  422. data/ext/rcb_version.cxx +1 -1
  423. data/ext/rcb_views.cxx +55 -51
  424. data/lib/active_support/cache/couchbase_store.rb +77 -12
  425. data/lib/couchbase/bucket.rb +20 -0
  426. data/lib/couchbase/cluster.rb +17 -0
  427. data/lib/couchbase/collection.rb +36 -1
  428. data/lib/couchbase/errors.rb +18 -0
  429. data/lib/couchbase/fork_hooks.rb +16 -7
  430. data/lib/couchbase/get_replica_strategy.rb +89 -0
  431. data/lib/couchbase/logger.rb +1 -1
  432. data/lib/couchbase/management/analytics_index_manager.rb +15 -15
  433. data/lib/couchbase/management/bucket_manager.rb +6 -6
  434. data/lib/couchbase/management/collection_manager.rb +6 -6
  435. data/lib/couchbase/management/query_index_manager.rb +7 -7
  436. data/lib/couchbase/management/search_index_manager.rb +13 -13
  437. data/lib/couchbase/management/user_manager.rb +10 -10
  438. data/lib/couchbase/management/view_index_manager.rb +5 -5
  439. data/lib/couchbase/options.rb +174 -42
  440. data/lib/couchbase/protostellar/bucket.rb +4 -0
  441. data/lib/couchbase/protostellar/cluster.rb +4 -0
  442. data/lib/couchbase/protostellar/collection.rb +4 -0
  443. data/lib/couchbase/protostellar/error_handling.rb +2 -1
  444. data/lib/couchbase/protostellar/request.rb +1 -0
  445. data/lib/couchbase/protostellar/request_generator/kv.rb +16 -2
  446. data/lib/couchbase/protostellar/request_generator/search.rb +17 -1
  447. data/lib/couchbase/protostellar/retry/orchestrator.rb +3 -2
  448. data/lib/couchbase/protostellar/retry/strategies/fail_fast.rb +33 -0
  449. data/lib/couchbase/protostellar/retry/strategies.rb +1 -0
  450. data/lib/couchbase/search_options.rb +95 -6
  451. data/lib/couchbase/version.rb +1 -1
  452. metadata +91 -33
  453. data/ext/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +0 -40
  454. data/ext/couchbase/core/columnar/agent.hxx +0 -71
  455. data/ext/couchbase/core/columnar/agent_config.hxx +0 -59
  456. data/ext/couchbase/core/columnar/background_bootstrap_listener.hxx +0 -42
  457. data/ext/couchbase/core/columnar/backoff_calculator.cxx +0 -62
  458. data/ext/couchbase/core/columnar/columnar_agent.cxx +0 -147
  459. data/ext/couchbase/core/columnar/columnar_agent_config.cxx +0 -48
  460. data/ext/couchbase/core/columnar/columnar_error.cxx +0 -51
  461. data/ext/couchbase/core/columnar/database_management_options.hxx +0 -56
  462. data/ext/couchbase/core/columnar/error.hxx +0 -51
  463. data/ext/couchbase/core/columnar/error_codes.cxx +0 -107
  464. data/ext/couchbase/core/columnar/error_codes.hxx +0 -75
  465. data/ext/couchbase/core/columnar/management_component.cxx +0 -300
  466. data/ext/couchbase/core/columnar/management_component.hxx +0 -56
  467. data/ext/couchbase/core/columnar/query_component.cxx +0 -523
  468. data/ext/couchbase/core/columnar/query_component.hxx +0 -57
  469. data/ext/couchbase/core/columnar/query_options.hxx +0 -59
  470. data/ext/couchbase/core/columnar/query_result.cxx +0 -130
  471. data/ext/couchbase/core/columnar/query_result.hxx +0 -78
  472. data/ext/couchbase/core/io/config_tracker.cxx +0 -687
  473. data/ext/couchbase/core/io/config_tracker.hxx +0 -123
@@ -38,7 +38,7 @@ get_and_touch_response_body::parse(key_value_status_code status,
38
38
  std::vector<std::uint8_t>::difference_type offset = framing_extras_size;
39
39
  if (extras_size == 4) {
40
40
  memcpy(&flags_, body.data() + offset, sizeof(flags_));
41
- flags_ = utils::byte_swap(flags_);
41
+ flags_ = utils::network_to_host(flags_);
42
42
  offset += 4;
43
43
  } else {
44
44
  offset += extras_size;
@@ -60,7 +60,7 @@ void
60
60
  get_and_touch_request_body::fill_extras()
61
61
  {
62
62
  extras_.resize(sizeof(expiry_));
63
- std::uint32_t field = utils::byte_swap(expiry_);
63
+ std::uint32_t field = utils::host_to_network(expiry_);
64
64
  memcpy(extras_.data(), &field, sizeof(field));
65
65
  }
66
66
  } // namespace couchbase::core::protocol
@@ -18,6 +18,7 @@
18
18
  #include "cmd_get_cluster_config.hxx"
19
19
 
20
20
  #include "core/logger/logger.hxx"
21
+ #include "core/logger/redaction.hxx"
21
22
  #include "core/topology/configuration_json.hxx"
22
23
  #include "core/utils/json.hxx"
23
24
 
@@ -77,14 +78,15 @@ get_cluster_config_response_body::parse(key_value_status_code status,
77
78
  if (status == key_value_status_code::success) {
78
79
  const std::vector<std::uint8_t>::difference_type offset =
79
80
  framing_extras_size + key_size + extras_size;
80
- std::string_view config_text{ reinterpret_cast<const char*>(body.data()) + offset,
81
- body.size() - static_cast<std::size_t>(offset) };
81
+ const std::string_view config_text{ reinterpret_cast<const char*>(body.data()) + offset,
82
+ body.size() - static_cast<std::size_t>(offset) };
82
83
  try {
83
84
  config_ = parse_config(config_text, info.endpoint_address, info.endpoint_port);
84
85
  config_text_.emplace(config_text);
85
86
  } catch (const tao::pegtl::parse_error& e) {
86
- CB_LOG_DEBUG(
87
- "unable to parse cluster configuration as JSON: {}, {}", e.message(), config_text);
87
+ CB_LOG_DEBUG("unable to parse cluster configuration as JSON: {}, {}",
88
+ e.message(),
89
+ logger::metadata(config_text));
88
90
  }
89
91
  return true;
90
92
  }
@@ -41,11 +41,11 @@ get_collection_id_response_body::parse(key_value_status_code status,
41
41
  std::vector<std::uint8_t>::difference_type offset = framing_extras_size + key_size;
42
42
 
43
43
  std::memcpy(&manifest_uid_, body.data() + offset, sizeof(manifest_uid_));
44
- manifest_uid_ = utils::byte_swap(manifest_uid_);
44
+ manifest_uid_ = utils::network_to_host(manifest_uid_);
45
45
  offset += 8;
46
46
 
47
47
  std::memcpy(&collection_uid_, body.data() + offset, sizeof(collection_uid_));
48
- collection_uid_ = utils::byte_swap(collection_uid_);
48
+ collection_uid_ = utils::network_to_host(collection_uid_);
49
49
  return true;
50
50
  }
51
51
  return false;
@@ -56,7 +56,7 @@ get_error_map_response_body::parse(key_value_status_code status,
56
56
  void
57
57
  get_error_map_request_body::fill_body()
58
58
  {
59
- std::uint16_t version = utils::byte_swap(version_);
59
+ std::uint16_t version = utils::host_to_network(version_);
60
60
  value_.resize(sizeof(version));
61
61
  std::memcpy(value_.data(), &version, sizeof(version));
62
62
  }
@@ -40,19 +40,19 @@ get_meta_response_body::parse(key_value_status_code status,
40
40
  if (extras_size == sizeof(deleted_) + sizeof(flags_) + sizeof(expiry_) +
41
41
  sizeof(sequence_number_) + sizeof(datatype_)) {
42
42
  memcpy(&deleted_, body.data() + offset, sizeof(deleted_));
43
- deleted_ = utils::byte_swap(deleted_);
43
+ deleted_ = utils::network_to_host(deleted_);
44
44
  offset += 4;
45
45
 
46
46
  memcpy(&flags_, body.data() + offset, sizeof(flags_));
47
- flags_ = utils::byte_swap(flags_);
47
+ flags_ = utils::network_to_host(flags_);
48
48
  offset += 4;
49
49
 
50
50
  memcpy(&expiry_, body.data() + offset, sizeof(expiry_));
51
- expiry_ = utils::byte_swap(expiry_);
51
+ expiry_ = utils::network_to_host(expiry_);
52
52
  offset += 4;
53
53
 
54
54
  memcpy(&sequence_number_, body.data() + offset, sizeof(sequence_number_));
55
- sequence_number_ = utils::byte_swap(sequence_number_);
55
+ sequence_number_ = utils::network_to_host(sequence_number_);
56
56
  offset += 8;
57
57
 
58
58
  datatype_ = std::to_integer<std::uint8_t>(body[static_cast<std::size_t>(offset)]);
@@ -45,7 +45,7 @@ get_replica_response_body::parse(key_value_status_code status,
45
45
  std::vector<std::uint8_t>::difference_type offset = framing_extras_size;
46
46
  if (extras_size == 4) {
47
47
  memcpy(&flags_, body.data() + offset, sizeof(flags_));
48
- flags_ = utils::byte_swap(flags_);
48
+ flags_ = utils::network_to_host(flags_);
49
49
  offset += 4;
50
50
  } else {
51
51
  offset += extras_size;
@@ -48,7 +48,7 @@ hello_response_body::parse(key_value_status_code status,
48
48
  for (size_t i = 0; i < num_features; i++) {
49
49
  std::uint16_t field = 0;
50
50
  std::memcpy(&field, value + (i * 2), sizeof(std::uint16_t));
51
- field = utils::byte_swap(field);
51
+ field = utils::network_to_host(field);
52
52
  if (is_valid_hello_feature(field)) {
53
53
  supported_features_.push_back(static_cast<hello_feature>(field));
54
54
  }
@@ -43,19 +43,19 @@ increment_response_body::parse(key_value_status_code status,
43
43
  if (extras_size == 16) {
44
44
  std::uint64_t partition_uuid{};
45
45
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
46
- partition_uuid = utils::byte_swap(partition_uuid);
46
+ partition_uuid = utils::network_to_host(partition_uuid);
47
47
  offset += 8;
48
48
 
49
49
  std::uint64_t sequence_number{};
50
50
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
51
- sequence_number = utils::byte_swap(sequence_number);
51
+ sequence_number = utils::network_to_host(sequence_number);
52
52
 
53
53
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
54
54
  offset += 8;
55
55
  }
56
56
  offset += key_size;
57
57
  memcpy(&content_, body.data() + offset, sizeof(content_));
58
- content_ = utils::byte_swap(content_);
58
+ content_ = utils::network_to_host(content_);
59
59
  return true;
60
60
  }
61
61
  return false;
@@ -84,15 +84,15 @@ increment_request_body::fill_extras()
84
84
  using offset_type = std::vector<std::byte>::difference_type;
85
85
  offset_type offset = 0;
86
86
 
87
- std::uint64_t num = utils::byte_swap(delta_);
87
+ std::uint64_t num = utils::host_to_network(delta_);
88
88
  memcpy(extras_.data() + offset, &num, sizeof(num));
89
89
  offset += static_cast<offset_type>(sizeof(delta_));
90
90
 
91
- num = utils::byte_swap(initial_value_);
91
+ num = utils::host_to_network(initial_value_);
92
92
  memcpy(extras_.data() + offset, &num, sizeof(num));
93
93
  offset += static_cast<offset_type>(sizeof(initial_value_));
94
94
 
95
- std::uint32_t ttl = utils::byte_swap(expiry_);
95
+ std::uint32_t ttl = utils::host_to_network(expiry_);
96
96
  memcpy(extras_.data() + offset, &ttl, sizeof(ttl));
97
97
  }
98
98
  } // namespace couchbase::core::protocol
@@ -42,12 +42,12 @@ insert_response_body::parse(key_value_status_code status,
42
42
  if (extras_size == 16) {
43
43
  std::uint64_t partition_uuid{};
44
44
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
45
- partition_uuid = utils::byte_swap(partition_uuid);
45
+ partition_uuid = utils::network_to_host(partition_uuid);
46
46
  offset += 8;
47
47
 
48
48
  std::uint64_t sequence_number{};
49
49
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
50
- sequence_number = utils::byte_swap(sequence_number);
50
+ sequence_number = utils::network_to_host(sequence_number);
51
51
 
52
52
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
53
53
  return true;
@@ -74,10 +74,10 @@ insert_request_body::fill_extras()
74
74
  {
75
75
  extras_.resize(sizeof(flags_) + sizeof(expiry_));
76
76
 
77
- std::uint32_t field = utils::byte_swap(flags_);
77
+ std::uint32_t field = utils::host_to_network(flags_);
78
78
  memcpy(extras_.data(), &field, sizeof(field));
79
79
 
80
- field = utils::byte_swap(expiry_);
80
+ field = utils::host_to_network(expiry_);
81
81
  memcpy(extras_.data() + sizeof(flags_), &field, sizeof(field));
82
82
  }
83
83
  } // namespace couchbase::core::protocol
@@ -48,14 +48,14 @@ lookup_in_response_body::parse(key_value_status_code status,
48
48
 
49
49
  std::uint16_t entry_status = 0;
50
50
  memcpy(&entry_status, body.data() + offset, sizeof(entry_status));
51
- entry_status = utils::byte_swap(entry_status);
51
+ entry_status = utils::network_to_host(entry_status);
52
52
  Expects(is_valid_status(entry_status));
53
53
  field.status = static_cast<key_value_status_code>(entry_status);
54
54
  offset += static_cast<offset_type>(sizeof(entry_status));
55
55
 
56
56
  std::uint32_t entry_size = 0;
57
57
  memcpy(&entry_size, body.data() + offset, sizeof(entry_size));
58
- entry_size = utils::byte_swap(entry_size);
58
+ entry_size = utils::network_to_host(entry_size);
59
59
  Expects(entry_size < 20 * 1024 * 1024);
60
60
  offset += static_cast<offset_type>(sizeof(entry_size));
61
61
 
@@ -101,7 +101,8 @@ lookup_in_request_body::fill_value()
101
101
  ++offset;
102
102
  value_[offset] = spec.flags_;
103
103
  ++offset;
104
- std::uint16_t path_size = utils::byte_swap(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
104
+ std::uint16_t path_size =
105
+ utils::host_to_network(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
105
106
  std::memcpy(value_.data() + offset, &path_size, sizeof(path_size));
106
107
  offset += sizeof(path_size);
107
108
  std::memcpy(value_.data() + offset, spec.path_.data(), spec.path_.size());
@@ -47,14 +47,14 @@ lookup_in_replica_response_body::parse(key_value_status_code status,
47
47
 
48
48
  std::uint16_t entry_status = 0;
49
49
  memcpy(&entry_status, body.data() + offset, sizeof(entry_status));
50
- entry_status = utils::byte_swap(entry_status);
50
+ entry_status = utils::network_to_host(entry_status);
51
51
  Expects(is_valid_status(entry_status));
52
52
  field.status = static_cast<key_value_status_code>(entry_status);
53
53
  offset += static_cast<offset_type>(sizeof(entry_status));
54
54
 
55
55
  std::uint32_t entry_size = 0;
56
56
  memcpy(&entry_size, body.data() + offset, sizeof(entry_size));
57
- entry_size = utils::byte_swap(entry_size);
57
+ entry_size = utils::network_to_host(entry_size);
58
58
  Expects(entry_size < 20 * 1024 * 1024);
59
59
  offset += static_cast<offset_type>(sizeof(entry_size));
60
60
 
@@ -100,7 +100,8 @@ lookup_in_replica_request_body::fill_value()
100
100
  ++offset;
101
101
  value_[offset] = spec.flags_;
102
102
  ++offset;
103
- std::uint16_t path_size = utils::byte_swap(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
103
+ std::uint16_t path_size =
104
+ utils::host_to_network(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
104
105
  std::memcpy(value_.data() + offset, &path_size, sizeof(path_size));
105
106
  offset += sizeof(path_size);
106
107
  std::memcpy(value_.data() + offset, spec.path_.data(), spec.path_.size());
@@ -44,12 +44,12 @@ mutate_in_response_body::parse(key_value_status_code status,
44
44
  if (extras_size == 16) {
45
45
  std::uint64_t partition_uuid{};
46
46
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
47
- partition_uuid = utils::byte_swap(partition_uuid);
47
+ partition_uuid = utils::network_to_host(partition_uuid);
48
48
  offset += 8;
49
49
 
50
50
  std::uint64_t sequence_number{};
51
51
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
52
- sequence_number = utils::byte_swap(sequence_number);
52
+ sequence_number = utils::network_to_host(sequence_number);
53
53
 
54
54
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
55
55
  offset += 8;
@@ -66,7 +66,7 @@ mutate_in_response_body::parse(key_value_status_code status,
66
66
 
67
67
  std::uint16_t entry_status = 0;
68
68
  memcpy(&entry_status, body.data() + offset, sizeof(entry_status));
69
- entry_status = utils::byte_swap(entry_status);
69
+ entry_status = utils::network_to_host(entry_status);
70
70
  Expects(is_valid_status(entry_status));
71
71
  field.status = static_cast<key_value_status_code>(entry_status);
72
72
  offset += static_cast<offset_type>(sizeof(entry_status));
@@ -74,7 +74,7 @@ mutate_in_response_body::parse(key_value_status_code status,
74
74
  if (field.status == key_value_status_code::success) {
75
75
  std::uint32_t entry_size = 0;
76
76
  memcpy(&entry_size, body.data() + offset, sizeof(entry_size));
77
- entry_size = utils::byte_swap(entry_size);
77
+ entry_size = utils::network_to_host(entry_size);
78
78
  Expects(entry_size < 20 * 1024 * 1024);
79
79
  offset += static_cast<offset_type>(sizeof(entry_size));
80
80
 
@@ -117,16 +117,16 @@ mutate_in_request_body::fill_extras()
117
117
  {
118
118
  if (expiry_ != 0 || user_flags_) {
119
119
  extras_.resize(sizeof(expiry_));
120
- std::uint32_t field = utils::byte_swap(expiry_);
120
+ std::uint32_t field = utils::host_to_network(expiry_);
121
121
  memcpy(extras_.data(), &field, sizeof(field));
122
122
  }
123
123
  if (user_flags_) {
124
124
  const std::size_t offset = extras_.size();
125
125
  extras_.resize(offset + sizeof(std::uint32_t));
126
- std::uint32_t field = utils::byte_swap(user_flags_.value());
126
+ std::uint32_t field = utils::host_to_network(user_flags_.value());
127
127
  memcpy(extras_.data() + offset, &field, sizeof(field));
128
128
  }
129
- if (flags_ != std::byte{ 0U }) {
129
+ if (flags_ != std::uint8_t{ 0U }) {
130
130
  const std::size_t offset = extras_.size();
131
131
  extras_.resize(offset + sizeof(flags_));
132
132
  extras_[offset] = std::byte{ flags_ };
@@ -150,12 +150,13 @@ mutate_in_request_body::fill_value()
150
150
  value_[offset] = spec.flags_;
151
151
  ++offset;
152
152
 
153
- std::uint16_t path_size = utils::byte_swap(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
153
+ std::uint16_t path_size =
154
+ utils::host_to_network(gsl::narrow_cast<std::uint16_t>(spec.path_.size()));
154
155
  std::memcpy(value_.data() + offset, &path_size, sizeof(path_size));
155
156
  offset += sizeof(path_size);
156
157
 
157
158
  std::uint32_t param_size =
158
- utils::byte_swap(gsl::narrow_cast<std::uint32_t>(spec.value_.size()));
159
+ utils::host_to_network(gsl::narrow_cast<std::uint32_t>(spec.value_.size()));
159
160
  std::memcpy(value_.data() + offset, &param_size, sizeof(param_size));
160
161
  offset += sizeof(param_size);
161
162
 
@@ -81,33 +81,33 @@ public:
81
81
  * `path_flag_create_parents`. and `upsert` mutation semantics. Not valid with
82
82
  * `insert`.
83
83
  */
84
- static constexpr std::byte doc_flag_mkdoc{ 0b0000'0001U };
84
+ static constexpr std::uint8_t doc_flag_mkdoc{ 0b0000'0001U };
85
85
 
86
86
  /**
87
87
  * Add the document only if it does not exist. Implies
88
88
  * `path_flag_create_parents`. Not valid with `doc_flag_mkdoc`.
89
89
  */
90
- static constexpr std::byte doc_flag_add{ 0b0000'0010U };
90
+ static constexpr std::uint8_t doc_flag_add{ 0b0000'0010U };
91
91
 
92
92
  /**
93
93
  * Allow access to XATTRs for deleted documents (instead of returning
94
94
  * KEY_ENOENT).
95
95
  */
96
- static constexpr std::byte doc_flag_access_deleted{ 0b0000'0100U };
96
+ static constexpr std::uint8_t doc_flag_access_deleted{ 0b0000'0100U };
97
97
 
98
98
  /**
99
99
  * Used with `doc_flag_mkdoc` / `doc_flag_add`; if the document does not exist
100
100
  * then create it in the "Deleted" state, instead of the normal "Alive" state.
101
101
  * Not valid unless `doc_flag_mkdoc` or `doc_flag_add` specified.
102
102
  */
103
- static constexpr std::byte doc_flag_create_as_deleted{ 0b0000'1000U };
103
+ static constexpr std::uint8_t doc_flag_create_as_deleted{ 0b0000'1000U };
104
104
 
105
105
  /**
106
106
  * If the document exists and isn't deleted the operation will fail with .
107
107
  * If the input document _is_ deleted the result of the operation will store
108
108
  * the document as a "live" document instead of a deleted document.
109
109
  */
110
- static constexpr std::byte doc_flag_revive_document{ 0b0001'0000U };
110
+ static constexpr std::uint8_t doc_flag_revive_document{ 0b0001'0000U };
111
111
 
112
112
  private:
113
113
  std::vector<std::byte> key_;
@@ -116,7 +116,7 @@ private:
116
116
 
117
117
  std::optional<std::uint32_t> user_flags_{};
118
118
  std::uint32_t expiry_{ 0 };
119
- std::byte flags_{ 0 };
119
+ std::uint8_t flags_{ 0 };
120
120
  std::vector<couchbase::core::impl::subdoc::command> specs_;
121
121
  std::vector<std::byte> framing_extras_{};
122
122
 
@@ -138,7 +138,7 @@ public:
138
138
  if (value) {
139
139
  flags_ |= doc_flag_access_deleted;
140
140
  } else {
141
- flags_ &= ~doc_flag_access_deleted;
141
+ flags_ &= static_cast<std::uint8_t>(~doc_flag_access_deleted);
142
142
  }
143
143
  }
144
144
 
@@ -147,7 +147,7 @@ public:
147
147
  if (value) {
148
148
  flags_ |= doc_flag_create_as_deleted;
149
149
  } else {
150
- flags_ &= ~doc_flag_create_as_deleted;
150
+ flags_ &= static_cast<std::uint8_t>(~doc_flag_create_as_deleted);
151
151
  }
152
152
  }
153
153
 
@@ -156,13 +156,13 @@ public:
156
156
  if (value) {
157
157
  flags_ |= doc_flag_revive_document;
158
158
  } else {
159
- flags_ &= ~doc_flag_revive_document;
159
+ flags_ &= static_cast<std::uint8_t>(~doc_flag_revive_document);
160
160
  }
161
161
  }
162
162
 
163
163
  void store_semantics(couchbase::store_semantics semantics)
164
164
  {
165
- flags_ &= std::byte{ 0b1111'1100U }; /* reset first two bits */
165
+ flags_ &= static_cast<std::uint8_t>(0b1111'1100U); /* reset first two bits */
166
166
  switch (semantics) {
167
167
  case couchbase::store_semantics::replace:
168
168
  /* leave bits as zeros */
@@ -45,32 +45,32 @@ observe_seqno_response_body::parse(key_value_status_code status,
45
45
  ++offset;
46
46
 
47
47
  memcpy(&partition_id_, body.data() + offset, sizeof(partition_id_));
48
- partition_id_ = utils::byte_swap(partition_id_);
48
+ partition_id_ = utils::network_to_host(partition_id_);
49
49
  offset += static_cast<offset_type>(sizeof(partition_id_));
50
50
 
51
51
  memcpy(&partition_uuid_, body.data() + offset, sizeof(partition_uuid_));
52
- partition_uuid_ = utils::byte_swap(partition_uuid_);
52
+ partition_uuid_ = utils::network_to_host(partition_uuid_);
53
53
  offset += static_cast<offset_type>(sizeof(partition_uuid_));
54
54
 
55
55
  memcpy(&last_persisted_sequence_number_,
56
56
  body.data() + offset,
57
57
  sizeof(last_persisted_sequence_number_));
58
- last_persisted_sequence_number_ = utils::byte_swap(last_persisted_sequence_number_);
58
+ last_persisted_sequence_number_ = utils::network_to_host(last_persisted_sequence_number_);
59
59
  offset += static_cast<offset_type>(sizeof(last_persisted_sequence_number_));
60
60
 
61
61
  memcpy(&current_sequence_number_, body.data() + offset, sizeof(current_sequence_number_));
62
- current_sequence_number_ = utils::byte_swap(current_sequence_number_);
62
+ current_sequence_number_ = utils::network_to_host(current_sequence_number_);
63
63
  offset += static_cast<offset_type>(sizeof(current_sequence_number_));
64
64
 
65
65
  if (failover) {
66
66
  std::uint64_t field{};
67
67
 
68
68
  memcpy(&field, body.data() + offset, sizeof(field));
69
- old_partition_uuid_.emplace(utils::byte_swap(field));
69
+ old_partition_uuid_.emplace(utils::network_to_host(field));
70
70
  offset += static_cast<offset_type>(sizeof(field));
71
71
 
72
72
  memcpy(&field, body.data() + offset, sizeof(field));
73
- last_received_sequence_number_.emplace(utils::byte_swap(field));
73
+ last_received_sequence_number_.emplace(utils::network_to_host(field));
74
74
  }
75
75
  }
76
76
  return false;
@@ -89,7 +89,7 @@ observe_seqno_request_body::fill_body()
89
89
 
90
90
  value_.resize(sizeof(std::uint64_t));
91
91
 
92
- std::uint64_t field = utils::byte_swap(partition_uuid_);
92
+ std::uint64_t field = utils::host_to_network(partition_uuid_);
93
93
  memcpy(value_.data() + offset, &field, sizeof(field));
94
94
  }
95
95
  } // namespace couchbase::core::protocol
@@ -41,12 +41,12 @@ prepend_response_body::parse(key_value_status_code status,
41
41
  if (extras_size == 16) {
42
42
  std::uint64_t partition_uuid{};
43
43
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
44
- partition_uuid = utils::byte_swap(partition_uuid);
44
+ partition_uuid = utils::network_to_host(partition_uuid);
45
45
  offset += 8;
46
46
 
47
47
  std::uint64_t sequence_number{};
48
48
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
49
- sequence_number = utils::byte_swap(sequence_number);
49
+ sequence_number = utils::network_to_host(sequence_number);
50
50
 
51
51
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
52
52
  return true;
@@ -42,12 +42,12 @@ remove_response_body::parse(key_value_status_code status,
42
42
  if (extras_size == 16) {
43
43
  std::uint64_t partition_uuid{};
44
44
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
45
- partition_uuid = utils::byte_swap(partition_uuid);
45
+ partition_uuid = utils::network_to_host(partition_uuid);
46
46
  offset += 8;
47
47
 
48
48
  std::uint64_t sequence_number{};
49
49
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
50
- sequence_number = utils::byte_swap(sequence_number);
50
+ sequence_number = utils::network_to_host(sequence_number);
51
51
 
52
52
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
53
53
  return true;
@@ -42,12 +42,12 @@ replace_response_body::parse(key_value_status_code status,
42
42
  if (extras_size == 16) {
43
43
  std::uint64_t partition_uuid{};
44
44
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
45
- partition_uuid = utils::byte_swap(partition_uuid);
45
+ partition_uuid = utils::network_to_host(partition_uuid);
46
46
  offset += 8;
47
47
 
48
48
  std::uint64_t sequence_number{};
49
49
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
50
- sequence_number = utils::byte_swap(sequence_number);
50
+ sequence_number = utils::network_to_host(sequence_number);
51
51
 
52
52
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
53
53
  return true;
@@ -83,10 +83,10 @@ replace_request_body::fill_extras()
83
83
  {
84
84
  extras_.resize(sizeof(flags_) + sizeof(expiry_));
85
85
 
86
- std::uint32_t field = utils::byte_swap(flags_);
86
+ std::uint32_t field = utils::host_to_network(flags_);
87
87
  memcpy(extras_.data(), &field, sizeof(field));
88
88
 
89
- field = utils::byte_swap(expiry_);
89
+ field = utils::host_to_network(expiry_);
90
90
  memcpy(extras_.data() + sizeof(flags_), &field, sizeof(field));
91
91
  }
92
92
  } // namespace couchbase::core::protocol
@@ -47,7 +47,7 @@ void
47
47
  touch_request_body::expiry(std::uint32_t seconds)
48
48
  {
49
49
  extras_.resize(sizeof(seconds));
50
- seconds = utils::byte_swap(seconds);
50
+ seconds = utils::host_to_network(seconds);
51
51
  memcpy(extras_.data(), &seconds, sizeof(seconds));
52
52
  }
53
53
  } // namespace couchbase::core::protocol
@@ -43,12 +43,12 @@ upsert_response_body::parse(key_value_status_code status,
43
43
  if (extras_size == 16) {
44
44
  std::uint64_t partition_uuid{};
45
45
  memcpy(&partition_uuid, body.data() + offset, sizeof(partition_uuid));
46
- partition_uuid = utils::byte_swap(partition_uuid);
46
+ partition_uuid = utils::network_to_host(partition_uuid);
47
47
  offset += 8;
48
48
 
49
49
  std::uint64_t sequence_number{};
50
50
  memcpy(&sequence_number, body.data() + offset, sizeof(sequence_number));
51
- sequence_number = utils::byte_swap(sequence_number);
51
+ sequence_number = utils::network_to_host(sequence_number);
52
52
 
53
53
  token_ = couchbase::utils::build_mutation_token(partition_uuid, sequence_number);
54
54
  return true;
@@ -83,10 +83,10 @@ upsert_request_body::fill_extras()
83
83
  {
84
84
  extras_.resize(sizeof(flags_) + sizeof(expiry_));
85
85
 
86
- std::uint32_t field = utils::byte_swap(flags_);
86
+ std::uint32_t field = utils::host_to_network(flags_);
87
87
  memcpy(extras_.data(), &field, sizeof(field));
88
88
 
89
- field = utils::byte_swap(expiry_);
89
+ field = utils::host_to_network(expiry_);
90
90
  memcpy(extras_.data() + sizeof(flags_), &field, sizeof(field));
91
91
  }
92
92
  } // namespace couchbase::core::protocol