couchbase 3.0.0.alpha.5 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1001) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -5
  3. data/ext/CMakeLists.txt +95 -128
  4. data/ext/build_config.hxx.in +22 -0
  5. data/ext/build_version.hxx.in +10 -6
  6. data/ext/cmake/Backtrace.cmake +35 -0
  7. data/ext/cmake/BuildTracing.cmake +6 -0
  8. data/ext/cmake/Cache.cmake +29 -0
  9. data/ext/cmake/CompilerWarnings.cmake +84 -0
  10. data/ext/cmake/PreventInSourceBuilds.cmake +21 -0
  11. data/ext/cmake/Sanitizers.cmake +66 -0
  12. data/ext/cmake/StandardProjectSettings.cmake +40 -0
  13. data/ext/cmake/StaticAnalyzers.cmake +37 -0
  14. data/ext/cmake/Testing.cmake +49 -0
  15. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  16. data/ext/cmake/VersionInfo.cmake +37 -0
  17. data/ext/couchbase/bucket.hxx +295 -18
  18. data/ext/couchbase/capabilities.hxx +117 -0
  19. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  20. data/ext/couchbase/cbsasl/client.h +1 -1
  21. data/ext/couchbase/cluster.hxx +255 -75
  22. data/ext/couchbase/cluster_options.hxx +54 -0
  23. data/ext/couchbase/configuration.hxx +440 -44
  24. data/ext/couchbase/couchbase.cxx +4312 -1746
  25. data/ext/couchbase/diagnostics.hxx +248 -0
  26. data/ext/couchbase/document_id.hxx +3 -1
  27. data/ext/couchbase/error_context/analytics.hxx +46 -0
  28. data/ext/couchbase/error_context/http.hxx +44 -0
  29. data/ext/couchbase/error_context/key_value.hxx +47 -0
  30. data/ext/couchbase/error_context/query.hxx +46 -0
  31. data/ext/couchbase/error_context/search.hxx +47 -0
  32. data/ext/couchbase/error_context/view.hxx +47 -0
  33. data/ext/couchbase/error_map.hxx +202 -2
  34. data/ext/couchbase/errors.hxx +18 -3
  35. data/ext/couchbase/io/dns_client.hxx +11 -9
  36. data/ext/couchbase/io/dns_codec.hxx +1 -2
  37. data/ext/couchbase/io/http_command.hxx +111 -0
  38. data/ext/couchbase/io/http_context.hxx +37 -0
  39. data/ext/couchbase/io/http_message.hxx +9 -0
  40. data/ext/couchbase/io/http_parser.hxx +2 -0
  41. data/ext/couchbase/io/http_session.hxx +172 -49
  42. data/ext/couchbase/io/http_session_manager.hxx +171 -34
  43. data/ext/couchbase/io/mcbp_command.hxx +249 -0
  44. data/ext/couchbase/io/mcbp_context.hxx +37 -0
  45. data/ext/couchbase/io/mcbp_message.hxx +5 -0
  46. data/ext/couchbase/io/mcbp_session.hxx +585 -166
  47. data/ext/couchbase/io/query_cache.hxx +61 -0
  48. data/ext/couchbase/io/retry_action.hxx +30 -0
  49. data/ext/couchbase/io/retry_context.hxx +38 -0
  50. data/ext/couchbase/io/retry_orchestrator.hxx +112 -0
  51. data/ext/couchbase/io/retry_reason.hxx +235 -0
  52. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  53. data/ext/couchbase/io/streams.hxx +216 -0
  54. data/ext/couchbase/operations.hxx +19 -1
  55. data/ext/couchbase/operations/analytics_dataset_create.hxx +22 -14
  56. data/ext/couchbase/operations/analytics_dataset_drop.hxx +19 -10
  57. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +18 -11
  58. data/ext/couchbase/operations/analytics_dataverse_create.hxx +20 -12
  59. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +19 -12
  60. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +19 -11
  61. data/ext/couchbase/operations/analytics_index_create.hxx +19 -12
  62. data/ext/couchbase/operations/analytics_index_drop.hxx +18 -11
  63. data/ext/couchbase/operations/analytics_index_get_all.hxx +16 -9
  64. data/ext/couchbase/operations/analytics_link_connect.hxx +17 -10
  65. data/ext/couchbase/operations/analytics_link_disconnect.hxx +19 -12
  66. data/ext/couchbase/operations/bucket_create.hxx +46 -14
  67. data/ext/couchbase/operations/bucket_drop.hxx +12 -8
  68. data/ext/couchbase/operations/bucket_flush.hxx +11 -8
  69. data/ext/couchbase/operations/bucket_get.hxx +18 -10
  70. data/ext/couchbase/operations/bucket_get_all.hxx +17 -7
  71. data/ext/couchbase/operations/bucket_settings.hxx +59 -4
  72. data/ext/couchbase/operations/bucket_update.hxx +45 -14
  73. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +9 -6
  74. data/ext/couchbase/operations/collection_create.hxx +23 -12
  75. data/ext/couchbase/operations/collection_drop.hxx +21 -12
  76. data/ext/couchbase/operations/collections_manifest_get.hxx +66 -0
  77. data/ext/couchbase/operations/document_analytics.hxx +45 -21
  78. data/ext/couchbase/operations/document_append.hxx +72 -0
  79. data/ext/couchbase/operations/document_decrement.hxx +12 -11
  80. data/ext/couchbase/operations/document_exists.hxx +8 -7
  81. data/ext/couchbase/operations/document_get.hxx +9 -7
  82. data/ext/couchbase/operations/document_get_and_lock.hxx +8 -7
  83. data/ext/couchbase/operations/document_get_and_touch.hxx +10 -9
  84. data/ext/couchbase/operations/document_get_projected.hxx +33 -20
  85. data/ext/couchbase/operations/document_increment.hxx +12 -11
  86. data/ext/couchbase/operations/document_insert.hxx +11 -10
  87. data/ext/couchbase/operations/document_lookup_in.hxx +13 -7
  88. data/ext/couchbase/operations/document_mutate_in.hxx +25 -13
  89. data/ext/couchbase/operations/document_prepend.hxx +72 -0
  90. data/ext/couchbase/operations/document_query.hxx +132 -27
  91. data/ext/couchbase/operations/document_remove.hxx +11 -8
  92. data/ext/couchbase/operations/document_replace.hxx +11 -10
  93. data/ext/couchbase/operations/document_search.hxx +59 -23
  94. data/ext/couchbase/operations/document_touch.hxx +10 -9
  95. data/ext/couchbase/operations/document_unlock.hxx +8 -7
  96. data/ext/couchbase/operations/document_upsert.hxx +11 -10
  97. data/ext/couchbase/operations/document_view.hxx +31 -14
  98. data/ext/couchbase/operations/group_drop.hxx +72 -0
  99. data/ext/couchbase/operations/group_get.hxx +80 -0
  100. data/ext/couchbase/operations/group_get_all.hxx +77 -0
  101. data/ext/couchbase/operations/group_upsert.hxx +125 -0
  102. data/ext/couchbase/operations/http_noop.hxx +78 -0
  103. data/ext/couchbase/operations/mcbp_noop.hxx +55 -0
  104. data/ext/couchbase/operations/query_index_build_deferred.hxx +20 -13
  105. data/ext/couchbase/operations/query_index_create.hxx +34 -17
  106. data/ext/couchbase/operations/query_index_drop.hxx +32 -15
  107. data/ext/couchbase/operations/query_index_get_all.hxx +28 -11
  108. data/ext/couchbase/operations/rbac.hxx +276 -0
  109. data/ext/couchbase/operations/role_get_all.hxx +77 -0
  110. data/ext/couchbase/operations/scope_create.hxx +24 -11
  111. data/ext/couchbase/operations/scope_drop.hxx +20 -11
  112. data/ext/couchbase/operations/scope_get_all.hxx +18 -10
  113. data/ext/couchbase/operations/search_get_stats.hxx +60 -0
  114. data/ext/couchbase/operations/search_index_analyze_document.hxx +29 -16
  115. data/ext/couchbase/operations/search_index_control_ingest.hxx +27 -14
  116. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +27 -14
  117. data/ext/couchbase/operations/search_index_control_query.hxx +27 -14
  118. data/ext/couchbase/operations/search_index_drop.hxx +25 -12
  119. data/ext/couchbase/operations/search_index_get.hxx +25 -12
  120. data/ext/couchbase/operations/search_index_get_all.hxx +16 -9
  121. data/ext/couchbase/operations/search_index_get_documents_count.hxx +46 -26
  122. data/ext/couchbase/operations/search_index_get_stats.hxx +88 -0
  123. data/ext/couchbase/operations/search_index_upsert.hxx +26 -13
  124. data/ext/couchbase/operations/user_drop.hxx +73 -0
  125. data/ext/couchbase/operations/user_get.hxx +81 -0
  126. data/ext/couchbase/operations/user_get_all.hxx +78 -0
  127. data/ext/couchbase/operations/user_upsert.hxx +132 -0
  128. data/ext/couchbase/operations/view_index_drop.hxx +9 -8
  129. data/ext/couchbase/operations/view_index_get.hxx +17 -10
  130. data/ext/couchbase/operations/view_index_get_all.hxx +17 -10
  131. data/ext/couchbase/operations/view_index_upsert.hxx +10 -9
  132. data/ext/couchbase/origin.hxx +179 -0
  133. data/ext/couchbase/platform/backtrace.c +189 -0
  134. data/ext/couchbase/platform/backtrace.h +54 -0
  135. data/ext/couchbase/platform/terminate_handler.cc +130 -0
  136. data/ext/couchbase/platform/terminate_handler.h +36 -0
  137. data/ext/couchbase/protocol/client_opcode.hxx +406 -38
  138. data/ext/couchbase/protocol/client_request.hxx +2 -1
  139. data/ext/couchbase/protocol/client_response.hxx +20 -17
  140. data/ext/couchbase/protocol/cmd_append.hxx +145 -0
  141. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -8
  142. data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
  143. data/ext/couchbase/protocol/cmd_exists.hxx +1 -0
  144. data/ext/couchbase/protocol/cmd_get.hxx +1 -1
  145. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
  146. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +9 -7
  147. data/ext/couchbase/protocol/cmd_hello.hxx +1 -0
  148. data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
  149. data/ext/couchbase/protocol/cmd_info.hxx +0 -11
  150. data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
  151. data/ext/couchbase/protocol/cmd_lookup_in.hxx +11 -3
  152. data/ext/couchbase/protocol/cmd_mutate_in.hxx +55 -14
  153. data/ext/couchbase/protocol/cmd_noop.hxx +82 -0
  154. data/ext/couchbase/protocol/cmd_prepend.hxx +145 -0
  155. data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
  156. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  157. data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
  158. data/ext/couchbase/protocol/durability_level.hxx +16 -0
  159. data/ext/couchbase/protocol/enhanced_error_info.hxx +28 -0
  160. data/ext/couchbase/protocol/hello_feature.hxx +9 -0
  161. data/ext/couchbase/protocol/magic.hxx +6 -6
  162. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  163. data/ext/couchbase/protocol/status.hxx +70 -60
  164. data/ext/couchbase/protocol/unsigned_leb128.h +2 -2
  165. data/ext/couchbase/service_type.hxx +2 -2
  166. data/ext/couchbase/timeout_defaults.hxx +7 -0
  167. data/ext/couchbase/utils/connection_string.hxx +152 -4
  168. data/ext/couchbase/version.hxx +18 -4
  169. data/ext/extconf.rb +77 -26
  170. data/ext/test/CMakeLists.txt +5 -0
  171. data/ext/test/test_helper.hxx +141 -0
  172. data/ext/test/test_helper_native.hxx +56 -0
  173. data/ext/test/test_helper_ruby.hxx +72 -0
  174. data/ext/test/test_native_binary_operations.cxx +186 -0
  175. data/ext/test/test_native_diagnostics.cxx +436 -0
  176. data/ext/test/test_native_trivial_crud.cxx +83 -0
  177. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  178. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  179. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  180. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  181. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  182. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  183. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  184. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  185. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  186. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  187. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  188. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  189. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  190. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  191. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  192. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  193. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  194. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  195. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  196. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  197. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  198. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  199. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  200. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  201. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  202. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  203. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  204. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  205. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  206. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  207. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  208. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  209. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  210. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  211. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  212. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  213. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  214. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  215. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  216. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  217. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  218. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  219. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  220. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  221. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  222. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  223. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  224. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  225. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  226. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  227. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  228. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  229. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  230. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  231. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  232. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  233. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  234. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  235. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  236. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  237. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  238. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  239. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  240. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  241. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  242. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  243. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  244. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  245. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  246. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  247. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  248. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  249. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  250. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  251. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  252. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  253. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  254. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  255. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  256. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  257. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  258. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  259. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  260. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  261. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  262. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  263. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  264. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  265. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  266. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  267. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  268. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  269. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  270. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  271. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  272. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  273. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  274. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  275. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  276. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  277. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  278. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  279. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  280. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  281. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  282. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  283. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  284. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  285. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  286. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  287. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  288. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  289. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  290. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  291. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  292. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  293. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  294. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  295. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  296. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  297. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  298. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  299. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  300. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  301. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  302. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  303. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  304. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  305. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  306. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  307. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  308. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  309. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  310. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  311. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  312. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  313. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  314. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  315. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  316. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  317. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  318. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  319. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  320. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  321. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  322. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  323. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  324. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  325. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  326. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  327. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  328. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  329. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  330. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  331. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  332. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  333. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  334. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  335. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  336. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  337. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  338. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  339. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  340. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  341. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  342. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  343. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  344. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  345. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  346. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  347. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  348. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  349. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  350. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  351. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  352. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  353. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  354. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  355. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  356. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  357. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  358. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  359. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  360. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  361. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  362. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  363. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  364. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  365. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  366. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  367. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  368. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  369. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  370. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  371. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  372. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  373. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  374. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  375. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  376. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  377. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  378. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  379. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  380. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  381. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  382. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  383. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  384. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  385. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  386. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  387. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  388. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  389. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  390. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  391. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  392. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  393. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  394. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  395. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  396. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  397. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  398. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  399. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  400. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  401. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  402. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  403. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  404. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  405. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  406. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  407. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  408. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  409. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  410. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  411. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  412. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  413. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  414. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  415. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  416. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  417. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  418. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  419. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  420. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  421. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  422. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  423. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  424. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  425. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  426. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  427. data/ext/third_party/gsl/include/gsl/span +98 -46
  428. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  429. data/ext/third_party/http_parser/http_parser.c +17 -10
  430. data/ext/third_party/http_parser/http_parser.h +4 -2
  431. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  432. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  433. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  434. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  435. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  436. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  437. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  438. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  439. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  440. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  441. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  442. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  443. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  444. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  445. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  446. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  447. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  448. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  449. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  450. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  451. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  452. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  453. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  454. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  455. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  456. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  457. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  458. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  459. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  460. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  461. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  462. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  463. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  464. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  465. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  466. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  467. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  468. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  469. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  470. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  471. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  472. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  473. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  474. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  475. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  476. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  477. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  478. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  479. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  480. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  481. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  482. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  483. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  484. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  485. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  486. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  487. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  488. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  489. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  490. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  491. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
  492. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
  493. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
  494. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
  495. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
  496. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
  497. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
  498. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
  499. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
  500. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
  501. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  502. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  503. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  504. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  505. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  506. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  507. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  508. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  509. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  510. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  511. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  512. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  513. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  514. data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
  515. data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
  516. data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
  517. data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
  518. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  519. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  520. data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
  521. data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
  522. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  523. data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
  524. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  525. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  526. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  527. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  528. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  529. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  530. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  531. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  532. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  533. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  534. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  535. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  536. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  537. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  538. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  539. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  540. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  541. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  542. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  543. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  544. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  545. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  546. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  547. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
  548. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  549. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  550. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  551. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
  552. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  553. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  554. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  555. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  556. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  557. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  558. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +27 -28
  559. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  560. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  561. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  562. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  563. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  564. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  565. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  566. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  567. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  568. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  569. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  570. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  571. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  572. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  573. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  574. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  575. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  576. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  577. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  578. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  579. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  580. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  581. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  582. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  583. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  584. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  585. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  586. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  587. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  588. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  589. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  590. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  591. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  592. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  593. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  594. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  595. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  596. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  597. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  598. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  599. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  600. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  601. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  602. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  603. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  604. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  605. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  606. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  607. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  608. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  609. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  610. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  611. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  612. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  613. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  614. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  615. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  616. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  617. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  618. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  619. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  620. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  621. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  622. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  623. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  624. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  625. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  626. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  627. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  628. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  629. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  630. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  631. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  632. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  633. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  634. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  635. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  636. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  637. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  638. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  639. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  640. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  641. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  642. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  643. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  644. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  645. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  646. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  647. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  648. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  649. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  650. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  651. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  652. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  653. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  654. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  655. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  656. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  657. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  658. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  659. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  660. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  661. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  662. data/ext/third_party/snappy/snappy.cc +6 -2
  663. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  664. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  665. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  666. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  667. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  668. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  669. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  670. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  671. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  672. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  673. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  674. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  675. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  676. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  677. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  678. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  679. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  680. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  681. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  682. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  683. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  684. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  685. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  686. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  687. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  688. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  689. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  690. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  691. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  692. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  693. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  694. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  695. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  696. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  697. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  698. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  699. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  700. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  701. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  702. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  703. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  704. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  705. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  706. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  707. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  708. data/lib/active_support/cache/couchbase_store.rb +362 -0
  709. data/lib/couchbase.rb +2 -0
  710. data/lib/couchbase/analytics_options.rb +1 -59
  711. data/lib/couchbase/authenticator.rb +40 -0
  712. data/lib/couchbase/binary_collection.rb +62 -23
  713. data/lib/couchbase/binary_collection_options.rb +0 -74
  714. data/lib/couchbase/bucket.rb +45 -40
  715. data/lib/couchbase/cluster.rb +250 -138
  716. data/lib/couchbase/collection.rb +324 -93
  717. data/lib/couchbase/collection_options.rb +75 -241
  718. data/lib/couchbase/configuration.rb +57 -0
  719. data/{Gemfile → lib/couchbase/datastructures.rb} +9 -9
  720. data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
  721. data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
  722. data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
  723. data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
  724. data/lib/couchbase/diagnostics.rb +181 -0
  725. data/lib/couchbase/errors.rb +186 -65
  726. data/lib/couchbase/json_transcoder.rb +3 -3
  727. data/{bin/check-cluster → lib/couchbase/logger.rb} +27 -16
  728. data/lib/couchbase/{common_options.rb → management.rb} +11 -13
  729. data/lib/couchbase/management/analytics_index_manager.rb +37 -37
  730. data/lib/couchbase/management/bucket_manager.rb +70 -30
  731. data/lib/couchbase/management/collection_manager.rb +4 -4
  732. data/lib/couchbase/management/query_index_manager.rb +60 -15
  733. data/lib/couchbase/management/search_index_manager.rb +57 -13
  734. data/lib/couchbase/management/user_manager.rb +176 -50
  735. data/lib/couchbase/management/view_index_manager.rb +11 -5
  736. data/lib/couchbase/mutation_state.rb +13 -0
  737. data/lib/couchbase/options.rb +2104 -0
  738. data/lib/couchbase/query_options.rb +6 -105
  739. data/lib/couchbase/railtie.rb +45 -0
  740. data/lib/couchbase/scope.rb +87 -9
  741. data/lib/couchbase/search_options.rb +98 -103
  742. data/lib/couchbase/subdoc.rb +31 -28
  743. data/{bin/console → lib/couchbase/utils.rb} +6 -6
  744. data/lib/couchbase/utils/time.rb +52 -0
  745. data/lib/couchbase/version.rb +21 -2
  746. data/lib/couchbase/view_options.rb +4 -94
  747. data/{bin/setup → lib/rails/generators/couchbase/config/config_generator.rb} +12 -9
  748. metadata +227 -346
  749. data/.github/workflows/tests-6.0.3.yml +0 -52
  750. data/.github/workflows/tests-dev-preview.yml +0 -55
  751. data/.github/workflows/tests.yml +0 -50
  752. data/.gitignore +0 -20
  753. data/.gitmodules +0 -21
  754. data/.idea/.gitignore +0 -5
  755. data/.idea/dictionaries/gem_terms.xml +0 -18
  756. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  757. data/.idea/vcs.xml +0 -13
  758. data/.yardopts +0 -1
  759. data/Rakefile +0 -51
  760. data/bin/fetch-stats +0 -19
  761. data/bin/init-cluster +0 -82
  762. data/bin/jenkins/build-extension +0 -35
  763. data/bin/jenkins/install-dependencies +0 -47
  764. data/bin/jenkins/test-with-cbdyncluster +0 -58
  765. data/couchbase.gemspec +0 -73
  766. data/examples/analytics.rb +0 -221
  767. data/examples/crud.rb +0 -20
  768. data/examples/managing_analytics_indexes.rb +0 -72
  769. data/examples/managing_buckets.rb +0 -47
  770. data/examples/managing_collections.rb +0 -58
  771. data/examples/managing_query_indexes.rb +0 -63
  772. data/examples/managing_search_indexes.rb +0 -62
  773. data/examples/managing_view_indexes.rb +0 -54
  774. data/examples/query.rb +0 -18
  775. data/examples/query_with_consistency.rb +0 -76
  776. data/examples/search.rb +0 -187
  777. data/examples/search_with_consistency.rb +0 -84
  778. data/examples/subdocument.rb +0 -51
  779. data/examples/view.rb +0 -50
  780. data/ext/.clang-format +0 -15
  781. data/ext/.clang-tidy +0 -22
  782. data/ext/.cmake-format.yaml +0 -8
  783. data/ext/.gitignore +0 -2
  784. data/ext/.idea/.name +0 -1
  785. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  786. data/ext/.idea/ext.iml +0 -2
  787. data/ext/.idea/misc.xml +0 -4
  788. data/ext/.idea/modules.xml +0 -8
  789. data/ext/.idea/vcs.xml +0 -12
  790. data/ext/couchbase/configuration_monitor.hxx +0 -93
  791. data/ext/couchbase/operations/command.hxx +0 -163
  792. data/ext/test/main.cxx +0 -58
  793. data/ext/third_party/asio/.appveyor.yml +0 -107
  794. data/ext/third_party/asio/.cirrus.yml +0 -16
  795. data/ext/third_party/asio/.gitignore +0 -3
  796. data/ext/third_party/asio/.travis.yml +0 -323
  797. data/ext/third_party/asio/asio/.gitignore +0 -23
  798. data/ext/third_party/asio/asio/COPYING +0 -4
  799. data/ext/third_party/asio/asio/INSTALL +0 -5
  800. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  801. data/ext/third_party/asio/asio/Makefile.am +0 -19
  802. data/ext/third_party/asio/asio/README +0 -4
  803. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  804. data/ext/third_party/asio/asio/autogen.sh +0 -55
  805. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  806. data/ext/third_party/asio/asio/boostify.pl +0 -603
  807. data/ext/third_party/asio/asio/configure.ac +0 -182
  808. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  809. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  810. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  811. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  812. data/ext/third_party/asio/asio/release.pl +0 -440
  813. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  814. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  815. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  816. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  817. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  818. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  819. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  820. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  821. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  822. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  823. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  824. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  825. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  826. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  827. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  828. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  829. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  830. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  831. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  832. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  833. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  834. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  835. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  836. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  837. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  838. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  839. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  840. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  841. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  842. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  843. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  844. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  845. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  846. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  847. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  848. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  849. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  850. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  851. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  852. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  853. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  854. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  855. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  856. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  857. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  858. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  859. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  860. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  861. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  862. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  863. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  864. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  865. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  866. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  867. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  868. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  869. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  870. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  871. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  872. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  873. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  874. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  875. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  876. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  877. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  878. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  879. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  880. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  881. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  882. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  883. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  884. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  885. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  886. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  887. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  888. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  889. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  890. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  891. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  892. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  893. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  894. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  895. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  896. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  897. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  898. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  899. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  900. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  901. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  902. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  903. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  904. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  905. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  906. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  907. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  908. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  909. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  910. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  911. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  912. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  913. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  914. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  915. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  916. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  917. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  918. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  919. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  920. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  921. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  922. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  923. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  924. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  925. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  926. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  927. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  928. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  929. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  930. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  931. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  932. data/ext/third_party/asio/asio/tsify.pl +0 -574
  933. data/ext/third_party/gsl/.clang-format +0 -34
  934. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  935. data/ext/third_party/gsl/.gitignore +0 -16
  936. data/ext/third_party/gsl/.travis.yml +0 -551
  937. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  938. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  939. data/ext/third_party/gsl/GSL.natvis +0 -98
  940. data/ext/third_party/gsl/README.md +0 -124
  941. data/ext/third_party/gsl/appveyor.yml +0 -128
  942. data/ext/third_party/http_parser/.gitignore +0 -30
  943. data/ext/third_party/http_parser/.mailmap +0 -8
  944. data/ext/third_party/http_parser/.travis.yml +0 -13
  945. data/ext/third_party/http_parser/AUTHORS +0 -68
  946. data/ext/third_party/http_parser/README.md +0 -246
  947. data/ext/third_party/http_parser/bench.c +0 -128
  948. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  949. data/ext/third_party/http_parser/test.c +0 -4600
  950. data/ext/third_party/json/.appveyor.yml +0 -44
  951. data/ext/third_party/json/.clang-format +0 -84
  952. data/ext/third_party/json/.conan/build.py +0 -80
  953. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  954. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  955. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  956. data/ext/third_party/json/.gitignore +0 -3
  957. data/ext/third_party/json/.travis.yml +0 -173
  958. data/ext/third_party/json/README.md +0 -149
  959. data/ext/third_party/json/conanfile.py +0 -28
  960. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  961. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  962. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  963. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  964. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  965. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  966. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  967. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  968. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  969. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  970. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  971. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  972. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  973. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  974. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  975. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  976. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  977. data/ext/third_party/snappy/.appveyor.yml +0 -36
  978. data/ext/third_party/snappy/.gitignore +0 -8
  979. data/ext/third_party/snappy/.travis.yml +0 -98
  980. data/ext/third_party/snappy/AUTHORS +0 -1
  981. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  982. data/ext/third_party/snappy/NEWS +0 -188
  983. data/ext/third_party/snappy/README.md +0 -148
  984. data/ext/third_party/snappy/docs/README.md +0 -72
  985. data/ext/third_party/snappy/format_description.txt +0 -110
  986. data/ext/third_party/snappy/framing_format.txt +0 -135
  987. data/ext/third_party/snappy/snappy-test.cc +0 -613
  988. data/ext/third_party/snappy/snappy-test.h +0 -526
  989. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  990. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  991. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  992. data/ext/third_party/spdlog/.clang-format +0 -108
  993. data/ext/third_party/spdlog/.clang-tidy +0 -54
  994. data/ext/third_party/spdlog/.gitattributes +0 -1
  995. data/ext/third_party/spdlog/.gitignore +0 -83
  996. data/ext/third_party/spdlog/.travis.yml +0 -112
  997. data/ext/third_party/spdlog/INSTALL +0 -24
  998. data/ext/third_party/spdlog/README.md +0 -423
  999. data/ext/third_party/spdlog/appveyor.yml +0 -51
  1000. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
  1001. data/rbi/couchbase.rbi +0 -79
@@ -17,12 +17,13 @@ require "couchbase/collection_options"
17
17
  require "couchbase/binary_collection"
18
18
 
19
19
  module Couchbase
20
+ # Provides access to all collection APIs
20
21
  class Collection
21
22
  attr_reader :bucket_name
22
23
  attr_reader :scope_name
23
24
  attr_reader :name
24
25
 
25
- alias_method :inspect, :to_s
26
+ alias inspect to_s
26
27
 
27
28
  # @param [Couchbase::Backend] backend
28
29
  # @param [String] bucket_name name of the bucket
@@ -45,37 +46,92 @@ module Couchbase
45
46
  # Fetches the full document from the collection
46
47
  #
47
48
  # @param [String] id the document id which is used to uniquely identify it
48
- # @param [GetOptions] options request customization
49
+ # @param [Options::Get] options request customization
50
+ #
51
+ # @example Get document contents
52
+ # res = collection.get("customer123")
53
+ # res.content["addresses"]
54
+ #
55
+ # # {"billing"=>
56
+ # # {"line1"=>"123 Any Street", "line2"=>"Anytown", "country"=>"United Kingdom"},
57
+ # # "delivery"=>
58
+ # # {"line1"=>"123 Any Street", "line2"=>"Anytown", "country"=>"United Kingdom"}}
59
+ #
60
+ # @example Get partial document using projections
61
+ # res = collection.get("customer123", Options::Get(projections: ["name", "addresses.billing"]))
62
+ # res.content
63
+ #
64
+ # # {"addresses"=>
65
+ # # {"billing"=>
66
+ # # {"country"=>"United Kingdom",
67
+ # # "line1"=>"123 Any Street",
68
+ # # "line2"=>"Anytown"}},
69
+ # # "name"=>"Douglas Reynholm"}
49
70
  #
50
71
  # @return [GetResult]
51
- def get(id, options = GetOptions.new)
72
+ def get(id, options = Options::Get.new)
52
73
  resp = if options.need_projected_get?
53
- @backend.document_get_projected(bucket_name, "#{@scope_name}.#{@name}", id,
54
- options.timeout,
55
- options.with_expiration,
56
- options.projections,
57
- options.preserve_array_indexes)
74
+ @backend.document_get_projected(bucket_name, "#{@scope_name}.#{@name}", id, options.to_backend)
58
75
  else
59
- @backend.document_get(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout)
76
+ @backend.document_get(bucket_name, "#{@scope_name}.#{@name}", id, options.to_backend)
60
77
  end
61
78
  GetResult.new do |res|
62
79
  res.transcoder = options.transcoder
63
80
  res.cas = resp[:cas]
64
81
  res.flags = resp[:flags]
65
82
  res.encoded = resp[:content]
66
- res.expiration = resp[:expiration] if resp.key?(:expiration)
83
+ res.expiry = resp[:expiry] if resp.key?(:expiry)
84
+ end
85
+ end
86
+
87
+ # Fetches multiple documents from the collection.
88
+ #
89
+ # @note that it will not generate {Error::DocumentNotFound} exceptions in this case. The caller should check
90
+ # {GetResult#error} property of the result
91
+ #
92
+ # @param [Array<String>] ids the array of document identifiers
93
+ # @param [Options::GetMulti] options request customization
94
+ #
95
+ # @example Fetch "foo" and "bar" in a batch
96
+ # res = collection.get(["foo", "bar"], Options::GetMulti(timeout: 3_000))
97
+ # res[0].content #=> content of "foo"
98
+ # res[1].content #=> content of "bar"
99
+ #
100
+ # @return [Array<GetResult>]
101
+ def get_multi(ids, options = Options::GetMulti.new)
102
+ collection_spec = "#{@scope_name}.#{@name}"
103
+ resp = @backend.document_get_multi(ids.map { |id| [bucket_name, collection_spec, id] }, options.to_backend)
104
+ resp.map do |entry|
105
+ GetResult.new do |res|
106
+ res.transcoder = options.transcoder
107
+ res.cas = entry[:cas]
108
+ res.flags = entry[:flags]
109
+ res.encoded = entry[:content]
110
+ res.error = entry[:error]
111
+ end
67
112
  end
68
113
  end
69
114
 
70
115
  # Fetches the full document and write-locks it for the given duration
71
116
  #
72
117
  # @param [String] id the document id which is used to uniquely identify it.
73
- # @param [Integer] lock_time how long to lock the document (values over 30 seconds will be capped)
74
- # @param [GetAndLockOptions] options request customization
118
+ # @param [Integer, #in_seconds] lock_time how long to lock the document (values over 30 seconds will be capped)
119
+ # @param [Options::GetAndLock] options request customization
120
+ #
121
+ # @example Retrieve document and lock for 10 seconds
122
+ # collection.get_and_lock("customer123", 10, Options::GetAndLock(timeout: 3_000))
123
+ #
124
+ # @example Update document pessimistically
125
+ # res = collection.get_and_lock("customer123", 10)
126
+ # user_data = res.content
127
+ # user_data["admin"] = true
128
+ # collection.replace("user", user_data, Options::Upsert(cas: res.cas))
75
129
  #
76
130
  # @return [GetResult]
77
- def get_and_lock(id, lock_time, options = GetAndLockOptions.new)
78
- resp = @backend.document_get_and_lock(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, lock_time)
131
+ def get_and_lock(id, lock_time, options = Options::GetAndLock.new)
132
+ resp = @backend.document_get_and_lock(bucket_name, "#{@scope_name}.#{@name}", id,
133
+ lock_time.respond_to?(:in_seconds) ? lock_time.public_send(:in_seconds) : lock_time,
134
+ options.to_backend)
79
135
  GetResult.new do |res|
80
136
  res.transcoder = options.transcoder
81
137
  res.cas = resp[:cas]
@@ -84,15 +140,20 @@ module Couchbase
84
140
  end
85
141
  end
86
142
 
87
- # Fetches a full document and resets its expiration time to the expiration duration provided
143
+ # Fetches a full document and resets its expiration time to the duration provided
88
144
  #
89
145
  # @param [String] id the document id which is used to uniquely identify it.
90
- # @param [Integer] expiration the new expiration time for the document
91
- # @param [GetAndTouchOptions] options request customization
146
+ # @param [Integer, #in_seconds, Time] expiry the new expiration time for the document
147
+ # @param [Options::GetAndTouch] options request customization
148
+ #
149
+ # @example Retrieve document and prolong its expiration for another 10 seconds
150
+ # collection.get_and_touch("customer123", 10)
92
151
  #
93
152
  # @return [GetResult]
94
- def get_and_touch(id, expiration, options = GetAndTouchOptions.new)
95
- resp = @backend.document_get_and_touch(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, expiration)
153
+ def get_and_touch(id, expiry, options = Options::GetAndTouch.new)
154
+ resp = @backend.document_get_and_touch(bucket_name, "#{@scope_name}.#{@name}", id,
155
+ Utils::Time.extract_expiry_time(expiry),
156
+ options.to_backend)
96
157
  GetResult.new do |res|
97
158
  res.transcoder = options.transcoder
98
159
  res.cas = resp[:cas]
@@ -104,27 +165,31 @@ module Couchbase
104
165
  # Reads from all available replicas and the active node and returns the results
105
166
  #
106
167
  # @param [String] id the document id which is used to uniquely identify it.
107
- # @param [GetAllReplicasOptions] options request customization
168
+ # @param [Options::GetAllReplicas] options request customization
108
169
  #
109
170
  # @return [Array<GetReplicaResult>]
110
- def get_all_replicas(id, options = GetAllReplicasOptions.new) end
171
+ def get_all_replicas(id, options = Options::GetAllReplicas.new) end
111
172
 
112
173
  # Reads all available replicas, and returns the first found
113
174
  #
114
175
  # @param [String] id the document id which is used to uniquely identify it.
115
- # @param [GetAnyReplicaOptions] options request customization
176
+ # @param [Options::GetAnyReplica] options request customization
116
177
  #
117
178
  # @return [GetReplicaResult]
118
- def get_any_replica(id, options = GetAnyReplicaOptions.new) end
179
+ def get_any_replica(id, options = Options::GetAnyReplica.new) end
119
180
 
120
181
  # Checks if the given document ID exists on the active partition.
121
182
  #
122
183
  # @param [String] id the document id which is used to uniquely identify it.
123
- # @param [ExistsOptions] options request customization
184
+ # @param [Options::Exists] options request customization
185
+ #
186
+ # @example Check if the document exists without fetching its contents
187
+ # res = collection.exists("customer123")
188
+ # res.exists? #=> true
124
189
  #
125
190
  # @return [ExistsResult]
126
- def exists(id, options = ExistsOptions.new)
127
- resp = @backend.document_exists(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout)
191
+ def exists(id, options = Options::Exists.new)
192
+ resp = @backend.document_exists(bucket_name, "#{@scope_name}.#{@name}", id, options.to_backend)
128
193
  ExistsResult.new do |res|
129
194
  res.status = resp[:status]
130
195
  res.partition_id = resp[:partition_id]
@@ -135,32 +200,92 @@ module Couchbase
135
200
  # Removes a document from the collection
136
201
  #
137
202
  # @param [String] id the document id which is used to uniquely identify it.
138
- # @param [RemoveOptions] options request customization
203
+ # @param [Options::Remove] options request customization
204
+ #
205
+ # @example Remove the document in collection
206
+ # res = collection.remove("customer123")
207
+ # res.cas #=> 241994216651798
208
+ #
209
+ # @example Remove the document in collection, but apply optimistic lock
210
+ # res = collection.upsert("mydoc", {"foo" => 42})
211
+ # res.cas #=> 7751414725654
212
+ #
213
+ # begin
214
+ # res = collection.remove("mydoc", Options::Remove(cas: 3735928559))
215
+ # rescue Error::CasMismatch
216
+ # puts "Failed to remove the document, it might be changed by other application"
217
+ # end
139
218
  #
140
219
  # @return [MutationResult]
141
- def remove(id, options = RemoveOptions.new)
142
- resp = @backend.document_remove(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, {
143
- durability_level: options.durability_level
144
- })
220
+ def remove(id, options = Options::Remove.new)
221
+ resp = @backend.document_remove(bucket_name, "#{@scope_name}.#{@name}", id, options.to_backend)
145
222
  MutationResult.new do |res|
146
223
  res.cas = resp[:cas]
147
224
  res.mutation_token = extract_mutation_token(resp)
148
225
  end
149
226
  end
150
227
 
228
+ # Removes a list of the documents from the collection
229
+ #
230
+ # @note that it will not generate {Error::DocumentNotFound} or {Error::CasMismatch} exceptions in this case.
231
+ # The caller should check {MutationResult#error} property of the result
232
+ #
233
+ # @param [Array<String, Array>] ids the array of document ids, or ID/CAS pairs +[String,Integer]+
234
+ # @param [Options::RemoveMulti] options request customization
235
+ #
236
+ # @example Remove two documents in collection. For "mydoc" apply optimistic lock
237
+ # res = collection.upsert("mydoc", {"foo" => 42})
238
+ # res.cas #=> 7751414725654
239
+ #
240
+ # res = collection.remove_multi(["foo", ["mydoc", res.cas]])
241
+ # if res[1].error.is_a?(Error::CasMismatch)
242
+ # puts "Failed to remove the document, it might be changed by other application"
243
+ # end
244
+ #
245
+ # @return [Array<MutationResult>]
246
+ def remove_multi(ids, options = Options::RemoveMulti.new)
247
+ collection_spec = "#{@scope_name}.#{@name}"
248
+ resp = @backend.document_remove_multi(ids.map do |id|
249
+ case id
250
+ when String
251
+ [bucket_name, collection_spec, id, nil]
252
+ when Array
253
+ [bucket_name, collection_spec, id[0], id[1]]
254
+ else
255
+ raise ArgumentError, "id argument of remove_multi must be a String or Array<String, Integer>, given: #{id.inspect}"
256
+ end
257
+ end, options.to_backend)
258
+ resp.map do |entry|
259
+ MutationResult.new do |res|
260
+ res.cas = entry[:cas]
261
+ res.mutation_token = extract_mutation_token(entry)
262
+ res.error = entry[:error]
263
+ end
264
+ end
265
+ end
266
+
151
267
  # Inserts a full document which does not exist yet
152
268
  #
153
269
  # @param [String] id the document id which is used to uniquely identify it.
154
270
  # @param [Object] content the document content to insert
155
- # @param [InsertOptions] options request customization
271
+ # @param [Options::Insert] options request customization
272
+ #
273
+ # @example Insert new document in collection
274
+ # res = collection.insert("mydoc", {"foo" => 42}, Options::Insert(expiry: 20))
275
+ # res.cas #=> 242287264414742
276
+ #
277
+ # @example Handle error when the document already exists
278
+ # collection.exists("mydoc").exists? #=> true
279
+ # begin
280
+ # res = collection.insert("mydoc", {"foo" => 42})
281
+ # rescue Error::DocumentExists
282
+ # puts "Failed to insert the document, it already exists in the collection"
283
+ # end
156
284
  #
157
285
  # @return [MutationResult]
158
- def insert(id, content, options = InsertOptions.new)
159
- blob, flags = options.transcoder.encode(content)
160
- resp = @backend.document_insert(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, blob, flags, {
161
- durability_level: options.durability_level,
162
- expiration: options.expiration,
163
- })
286
+ def insert(id, content, options = Options::Insert.new)
287
+ blob, flags = options.transcoder ? options.transcoder.encode(content) : [content, 0]
288
+ resp = @backend.document_insert(bucket_name, "#{@scope_name}.#{@name}", id, blob, flags, options.to_backend)
164
289
  MutationResult.new do |res|
165
290
  res.cas = resp[:cas]
166
291
  res.mutation_token = extract_mutation_token(resp)
@@ -171,35 +296,70 @@ module Couchbase
171
296
  #
172
297
  # @param [String] id the document id which is used to uniquely identify it.
173
298
  # @param [Object] content the document content to upsert
174
- # @param [UpsertOptions] options request customization
299
+ # @param [Options::Upsert] options request customization
300
+ #
301
+ # @example Upsert new document in collection
302
+ # res = collection.upsert("mydoc", {"foo" => 42}, Options::Upsert(expiry: 20))
303
+ # res.cas #=> 242287264414742
175
304
  #
176
305
  # @return [MutationResult]
177
- def upsert(id, content, options = UpsertOptions.new)
178
- blob, flags = options.transcoder.encode(content)
179
- resp = @backend.document_upsert(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, blob, flags, {
180
- durability_level: options.durability_level,
181
- expiration: options.expiration,
182
- })
306
+ def upsert(id, content, options = Options::Upsert.new)
307
+ blob, flags = options.transcoder ? options.transcoder.encode(content) : [content, 0]
308
+ resp = @backend.document_upsert(bucket_name, "#{@scope_name}.#{@name}", id, blob, flags, options.to_backend)
183
309
  MutationResult.new do |res|
184
310
  res.cas = resp[:cas]
185
311
  res.mutation_token = extract_mutation_token(resp)
186
312
  end
187
313
  end
188
314
 
315
+ # Upserts (inserts or updates) a list of documents which might or might not exist yet
316
+ #
317
+ # @note that it will not generate exceptions in this case. The caller should check {MutationResult#error} property of the
318
+ # result
319
+ #
320
+ # @param [Array<Array>] id_content array of tuples +String,Object+, where first entry treated as document key,
321
+ # and the second as value to upsert.
322
+ # @param [Options::UpsertMulti] options request customization
323
+ #
324
+ # @example Upsert two documents with IDs "foo" and "bar" into a collection
325
+ # res = collection.upsert_multi([
326
+ # "foo", {"foo" => 42},
327
+ # "bar", {"bar" => "some value"}
328
+ # ])
329
+ # res[0].cas #=> 7751414725654
330
+ # res[1].cas #=> 7751418925851
331
+ #
332
+ # @return [Array<MutationResult>]
333
+ def upsert_multi(id_content, options = Options::UpsertMulti.new)
334
+ collection_spec = "#{@scope_name}.#{@name}"
335
+ resp = @backend.document_upsert_multi(id_content.map do |(id, content)|
336
+ blob, flags = options.transcoder ? options.transcoder.encode(content) : [content, 0]
337
+ [bucket_name, collection_spec, id, blob, flags]
338
+ end, options.to_backend)
339
+ resp.map do |entry|
340
+ MutationResult.new do |res|
341
+ res.cas = entry[:cas]
342
+ res.mutation_token = extract_mutation_token(entry)
343
+ res.error = entry[:error]
344
+ end
345
+ end
346
+ end
347
+
189
348
  # Replaces a full document which already exists
190
349
  #
191
350
  # @param [String] id the document id which is used to uniquely identify it.
192
351
  # @param [Object] content the document content to upsert
193
- # @param [ReplaceOptions] options request customization
352
+ # @param [Options::Replace] options request customization
353
+ #
354
+ # @example Replace new document in collection with optimistic locking
355
+ # res = collection.get("mydoc")
356
+ # res = collection.replace("mydoc", {"foo" => 42}, Options::Replace(cas: res.cas))
357
+ # res.cas #=> 242287264414742
194
358
  #
195
359
  # @return [MutationResult]
196
- def replace(id, content, options = ReplaceOptions.new)
197
- blob, flags = options.transcoder.encode(content)
198
- resp = @backend.document_replace(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, blob, flags, {
199
- durability_level: options.durability_level,
200
- expiration: options.expiration,
201
- cas: options.cas,
202
- })
360
+ def replace(id, content, options = Options::Replace.new)
361
+ blob, flags = options.transcoder ? options.transcoder.encode(content) : [content, 0]
362
+ resp = @backend.document_replace(bucket_name, "#{@scope_name}.#{@name}", id, blob, flags, options.to_backend)
203
363
  MutationResult.new do |res|
204
364
  res.cas = resp[:cas]
205
365
  res.mutation_token = extract_mutation_token(resp)
@@ -209,12 +369,17 @@ module Couchbase
209
369
  # Update the expiration of the document with the given id
210
370
  #
211
371
  # @param [String] id the document id which is used to uniquely identify it.
212
- # @param [Integer] expiration new expiration time for the document
213
- # @param [TouchOptions] options request customization
372
+ # @param [Integer, #in_seconds, Time] expiry new expiration time for the document
373
+ # @param [Options::Touch] options request customization
374
+ #
375
+ # @example Reset expiration timer for document to 30 seconds
376
+ # res = collection.touch("customer123", 30)
214
377
  #
215
378
  # @return [MutationResult]
216
- def touch(id, expiration, options = TouchOptions.new)
217
- resp = @backend.document_touch(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, expiration)
379
+ def touch(id, expiry, options = Options::Touch.new)
380
+ resp = @backend.document_touch(bucket_name, "#{@scope_name}.#{@name}", id,
381
+ Utils::Time.extract_expiry_time(expiry),
382
+ options.to_backend)
218
383
  MutationResult.new do |res|
219
384
  res.cas = resp[:cas]
220
385
  end
@@ -224,34 +389,52 @@ module Couchbase
224
389
  #
225
390
  # @param [String] id the document id which is used to uniquely identify it.
226
391
  # @param [Integer] cas CAS value which is needed to unlock the document
227
- # @param [UnlockOptions] options request customization
392
+ # @param [Options::Unlock] options request customization
393
+ #
394
+ # @example Lock (pessimistically) and unlock document
395
+ # res = collection.get_and_lock("customer123", 10)
396
+ # collection.unlock("customer123", res.cas)
397
+ #
398
+ # @return [void]
228
399
  #
229
400
  # @raise [Error::DocumentNotFound]
230
- def unlock(id, cas, options = UnlockOptions.new)
231
- @backend.document_unlock(bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, cas)
401
+ def unlock(id, cas, options = Options::Unlock.new)
402
+ @backend.document_unlock(bucket_name, "#{@scope_name}.#{@name}", id, cas, options.to_backend)
232
403
  end
233
404
 
234
405
  # Performs lookups to document fragments
235
406
  #
236
407
  # @param [String] id the document id which is used to uniquely identify it.
237
408
  # @param [Array<LookupInSpec>] specs the list of specifications which describe the types of the lookups to perform
238
- # @param [LookupInOptions] options request customization
409
+ # @param [Options::LookupIn] options request customization
410
+ #
411
+ # @example Get list of IDs of completed purchases
412
+ # lookup_specs = [
413
+ # LookupInSpec::get("purchases.complete")
414
+ # ]
415
+ # collection.lookup_in("customer123", lookup_specs)
239
416
  #
417
+ # @example Retrieve country name and check if pending purchases array is empty
418
+ # collection.lookup_in "customer123", [
419
+ # LookupInSpec.get("addresses.delivery.country"),
420
+ # LookupInSpec.exists("purchases.pending[-1]"),
421
+ # ]
240
422
  # @return [LookupInResult]
241
- def lookup_in(id, specs, options = LookupInOptions.new)
423
+ def lookup_in(id, specs, options = Options::LookupIn.new)
242
424
  resp = @backend.document_lookup_in(
243
- bucket_name, "#{@scope_name}.#{@name}", id, options.timeout, options.access_deleted,
244
- specs.map { |s|
245
- {
246
- opcode: s.type,
247
- xattr: s.xattr?,
248
- path: s.path
249
- }
425
+ bucket_name, "#{@scope_name}.#{@name}", id,
426
+ specs.map do |s|
427
+ {
428
+ opcode: s.type,
429
+ xattr: s.xattr?,
430
+ path: s.path,
250
431
  }
432
+ end, options.to_backend
251
433
  )
252
434
  LookupInResult.new do |res|
253
435
  res.transcoder = options.transcoder
254
436
  res.cas = resp[:cas]
437
+ res.deleted = resp[:deleted]
255
438
  res.encoded = resp[:fields].map do |field|
256
439
  SubDocumentField.new do |f|
257
440
  f.exists = field[:exists]
@@ -270,33 +453,40 @@ module Couchbase
270
453
  #
271
454
  # @param [String] id the document id which is used to uniquely identify it.
272
455
  # @param [Array<MutateInSpec>] specs the list of specifications which describe the types of the lookups to perform
273
- # @param [MutateInOptions] options request customization
456
+ # @param [Options::MutateIn] options request customization
457
+ #
458
+ # @example Append number into subarray of the document
459
+ # mutation_specs = [
460
+ # MutateInSpec::array_append("purchases.complete", [42])
461
+ # ]
462
+ # collection.mutate_in("customer123", mutation_specs, Options::MutateIn(expiry: 10))
463
+ #
464
+ # @example Write meta attribute, remove array entry and replace email field
465
+ # collection.mutate_in("customer123", [
466
+ # MutateInSpec.upsert("_framework.model_type", "Customer").xattr,
467
+ # MutateInSpec.remove("addresses.billing[2]"),
468
+ # MutateInSpec.replace("email", "dougr96@hotmail.com"),
469
+ # ])
274
470
  #
275
471
  # @return [MutateInResult]
276
- def mutate_in(id, specs, options = MutateInOptions.new)
472
+ def mutate_in(id, specs, options = Options::MutateIn.new)
277
473
  resp = @backend.document_mutate_in(
278
- bucket_name, "#{@scope_name}.#{@name}", id, options.timeout,
279
- specs.map { |s|
280
- {
281
- opcode: s.type,
282
- path: s.path,
283
- param: s.param,
284
- xattr: s.xattr?,
285
- expand_macros: s.expand_macros?,
286
- create_path: s.create_path?
287
- }
288
- },
474
+ bucket_name, "#{@scope_name}.#{@name}", id,
475
+ specs.map do |s|
289
476
  {
290
- durability_level: options.durability_level,
291
- store_semantics: options.store_semantics,
292
- access_deleted: options.access_deleted,
293
- cas: options.cas,
294
- expiration: options.expiration,
477
+ opcode: s.type,
478
+ path: s.path,
479
+ param: s.param,
480
+ xattr: s.xattr?,
481
+ expand_macros: s.expand_macros?,
482
+ create_path: s.create_path?,
295
483
  }
484
+ end, options.to_backend
296
485
  )
297
- res = MutateInResult.new do |res|
486
+ result = MutateInResult.new do |res|
298
487
  res.transcoder = options.transcoder
299
488
  res.cas = resp[:cas]
489
+ res.deleted = resp[:deleted]
300
490
  res.mutation_token = extract_mutation_token(resp)
301
491
  res.first_error_index = resp[:first_error_index]
302
492
  res.encoded = resp[:fields].map do |field|
@@ -310,11 +500,9 @@ module Couchbase
310
500
  end
311
501
  end
312
502
  end
313
- if res.success?
314
- res
315
- else
316
- raise res.first_error
317
- end
503
+ raise result.first_error unless result.success?
504
+
505
+ result
318
506
  end
319
507
 
320
508
  private
@@ -327,5 +515,48 @@ module Couchbase
327
515
  token.bucket_name = resp[:mutation_token][:bucket_name]
328
516
  end
329
517
  end
518
+
519
+ # @api private
520
+ # TODO: deprecate in 3.1
521
+ GetOptions = ::Couchbase::Options::Get
522
+ # @api private
523
+ # TODO: deprecate in 3.1
524
+ GetAndLockOptions = ::Couchbase::Options::GetAndLock
525
+ # @api private
526
+ # TODO: deprecate in 3.1
527
+ GetAndTouchOptions = ::Couchbase::Options::GetAndTouch
528
+ # @api private
529
+ # TODO: deprecate in 3.1
530
+ LookupInOptions = ::Couchbase::Options::LookupIn
531
+ # @api private
532
+ # TODO: deprecate in 3.1
533
+ MutateInOptions = ::Couchbase::Options::MutateIn
534
+ # @api private
535
+ # TODO: deprecate in 3.1
536
+ UnlockOptions = ::Couchbase::Options::Unlock
537
+ # @api private
538
+ # TODO: deprecate in 3.1
539
+ TouchOptions = ::Couchbase::Options::Touch
540
+ # @api private
541
+ # TODO: deprecate in 3.1
542
+ ReplaceOptions = ::Couchbase::Options::Replace
543
+ # @api private
544
+ # TODO: deprecate in 3.1
545
+ UpsertOptions = ::Couchbase::Options::Upsert
546
+ # @api private
547
+ # TODO: deprecate in 3.1
548
+ InsertOptions = ::Couchbase::Options::Insert
549
+ # @api private
550
+ # TODO: deprecate in 3.1
551
+ RemoveOptions = ::Couchbase::Options::Remove
552
+ # @api private
553
+ # TODO: deprecate in 3.1
554
+ ExistsOptions = ::Couchbase::Options::Exists
555
+ # @api private
556
+ # TODO: deprecate in 3.1
557
+ GetAnyReplicaOptions = ::Couchbase::Options::GetAnyReplica
558
+ # @api private
559
+ # TODO: deprecate in 3.1
560
+ GetAllReplicasOptions = ::Couchbase::Options::GetAllReplicas
330
561
  end
331
562
  end