couchbase 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/CMakeLists.txt +86 -169
- data/ext/build_version.hxx.in +3 -2
- data/ext/cmake/Backtrace.cmake +35 -0
- data/ext/cmake/BuildTracing.cmake +6 -0
- data/ext/cmake/Cache.cmake +29 -0
- data/ext/cmake/CompilerWarnings.cmake +78 -0
- data/ext/cmake/PreventInSourceBuilds.cmake +18 -0
- data/ext/cmake/Sanitizers.cmake +66 -0
- data/ext/cmake/StandardProjectSettings.cmake +40 -0
- data/ext/cmake/StaticAnalyzers.cmake +37 -0
- data/ext/cmake/Testing.cmake +52 -0
- data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
- data/ext/cmake/VersionInfo.cmake +37 -0
- data/ext/couchbase/bucket.hxx +37 -12
- data/ext/couchbase/capabilities.hxx +117 -0
- data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
- data/ext/couchbase/cluster.hxx +34 -2
- data/ext/couchbase/cluster_options.hxx +1 -0
- data/ext/couchbase/configuration.hxx +228 -52
- data/ext/couchbase/couchbase.cxx +914 -35
- data/ext/couchbase/diagnostics.hxx +251 -0
- data/ext/couchbase/document_id.hxx +3 -1
- data/ext/couchbase/errors.hxx +10 -1
- data/ext/couchbase/io/http_command.hxx +11 -7
- data/ext/couchbase/io/http_context.hxx +37 -0
- data/ext/couchbase/io/http_message.hxx +9 -0
- data/ext/couchbase/io/http_parser.hxx +2 -0
- data/ext/couchbase/io/http_session.hxx +100 -14
- data/ext/couchbase/io/http_session_manager.hxx +65 -5
- data/ext/couchbase/io/mcbp_command.hxx +16 -7
- data/ext/couchbase/io/mcbp_session.hxx +193 -51
- data/ext/couchbase/io/query_cache.hxx +61 -0
- data/ext/couchbase/io/retry_context.hxx +1 -2
- data/ext/couchbase/io/retry_orchestrator.hxx +16 -0
- data/ext/couchbase/io/retry_strategy.hxx +1 -1
- data/ext/couchbase/io/streams.hxx +61 -10
- data/ext/couchbase/operations.hxx +13 -0
- data/ext/couchbase/operations/analytics_dataset_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataset_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataset_get_all.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataverse_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_dataverse_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_create.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_drop.hxx +1 -1
- data/ext/couchbase/operations/analytics_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/analytics_link_connect.hxx +1 -1
- data/ext/couchbase/operations/analytics_link_disconnect.hxx +1 -1
- data/ext/couchbase/operations/bucket_create.hxx +11 -5
- data/ext/couchbase/operations/bucket_drop.hxx +1 -1
- data/ext/couchbase/operations/bucket_flush.hxx +1 -1
- data/ext/couchbase/operations/bucket_get.hxx +1 -1
- data/ext/couchbase/operations/bucket_get_all.hxx +1 -1
- data/ext/couchbase/operations/bucket_settings.hxx +43 -4
- data/ext/couchbase/operations/bucket_update.hxx +11 -5
- data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +1 -1
- data/ext/couchbase/operations/collection_create.hxx +3 -1
- data/ext/couchbase/operations/collection_drop.hxx +1 -1
- data/ext/couchbase/operations/collections_manifest_get.hxx +70 -0
- data/ext/couchbase/operations/document_analytics.hxx +6 -1
- data/ext/couchbase/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/operations/document_query.hxx +85 -8
- data/ext/couchbase/operations/document_search.hxx +14 -4
- data/ext/couchbase/operations/document_view.hxx +1 -1
- data/ext/couchbase/operations/group_drop.hxx +71 -0
- data/ext/couchbase/operations/group_get.hxx +75 -0
- data/ext/couchbase/operations/group_get_all.hxx +70 -0
- data/ext/couchbase/operations/group_upsert.hxx +118 -0
- data/ext/couchbase/operations/query_index_build_deferred.hxx +1 -1
- data/ext/couchbase/operations/query_index_create.hxx +1 -1
- data/ext/couchbase/operations/query_index_drop.hxx +1 -1
- data/ext/couchbase/operations/query_index_get_all.hxx +3 -2
- data/ext/couchbase/operations/rbac.hxx +276 -0
- data/ext/couchbase/operations/role_get_all.hxx +70 -0
- data/ext/couchbase/operations/scope_create.hxx +6 -2
- data/ext/couchbase/operations/scope_drop.hxx +1 -1
- data/ext/couchbase/operations/scope_get_all.hxx +1 -1
- data/ext/couchbase/operations/search_get_stats.hxx +59 -0
- data/ext/couchbase/operations/search_index_analyze_document.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_ingest.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +1 -1
- data/ext/couchbase/operations/search_index_control_query.hxx +1 -1
- data/ext/couchbase/operations/search_index_drop.hxx +1 -1
- data/ext/couchbase/operations/search_index_get.hxx +1 -1
- data/ext/couchbase/operations/search_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/search_index_get_documents_count.hxx +24 -16
- data/ext/couchbase/operations/search_index_get_stats.hxx +81 -0
- data/ext/couchbase/operations/search_index_upsert.hxx +1 -1
- data/ext/couchbase/operations/user_drop.hxx +72 -0
- data/ext/couchbase/operations/user_get.hxx +76 -0
- data/ext/couchbase/operations/user_get_all.hxx +71 -0
- data/ext/couchbase/operations/user_upsert.hxx +125 -0
- data/ext/couchbase/operations/view_index_drop.hxx +1 -1
- data/ext/couchbase/operations/view_index_get.hxx +1 -1
- data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
- data/ext/couchbase/operations/view_index_upsert.hxx +1 -1
- data/ext/couchbase/origin.hxx +4 -4
- data/ext/couchbase/platform/terminate_handler.cc +5 -4
- data/ext/couchbase/protocol/client_opcode.hxx +38 -38
- data/ext/couchbase/protocol/client_response.hxx +2 -2
- data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -3
- data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +3 -1
- data/ext/couchbase/protocol/magic.hxx +6 -6
- data/ext/couchbase/protocol/server_opcode.hxx +2 -2
- data/ext/couchbase/protocol/status.hxx +57 -57
- data/ext/couchbase/service_type.hxx +1 -1
- data/ext/couchbase/utils/connection_string.hxx +12 -3
- data/ext/couchbase/version.hxx +1 -1
- data/ext/extconf.rb +21 -9
- data/ext/test/test_helper.hxx +141 -0
- data/ext/test/test_helper_native.hxx +59 -0
- data/ext/test/test_helper_ruby.hxx +72 -0
- data/ext/test/test_native_diagnostics.cxx +385 -0
- data/ext/test/test_native_trivial_crud.cxx +83 -0
- data/ext/test/test_ruby_trivial_crud.cxx +35 -0
- data/ext/test/test_ruby_trivial_query.cxx +34 -0
- data/ext/third_party/asio/asio/include/asio.hpp +35 -0
- data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
- data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
- data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
- data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
- data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
- data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
- data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
- data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
- data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
- data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
- data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
- data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
- data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
- data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
- data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
- data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
- data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
- data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
- data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
- data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
- data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
- data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
- data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
- data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
- data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
- data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
- data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
- data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
- data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
- data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
- data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
- data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
- data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
- data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
- data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
- data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
- data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
- data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
- data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
- data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
- data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
- data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
- data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
- data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
- data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
- data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
- data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
- data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
- data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
- data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
- data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
- data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
- data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
- data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
- data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
- data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
- data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
- data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
- data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
- data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
- data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
- data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
- data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
- data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
- data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
- data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
- data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
- data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
- data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
- data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
- data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
- data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
- data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
- data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
- data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
- data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
- data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
- data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
- data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
- data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
- data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
- data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
- data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
- data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
- data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
- data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
- data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
- data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
- data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
- data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
- data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
- data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
- data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
- data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
- data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
- data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
- data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
- data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
- data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
- data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
- data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
- data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
- data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
- data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
- data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
- data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
- data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
- data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
- data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
- data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
- data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
- data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
- data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
- data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
- data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
- data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
- data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
- data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
- data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
- data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
- data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
- data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
- data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
- data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
- data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
- data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
- data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
- data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
- data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
- data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
- data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
- data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
- data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
- data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
- data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
- data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
- data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
- data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
- data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
- data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
- data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
- data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
- data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
- data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
- data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
- data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
- data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
- data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
- data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
- data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
- data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
- data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
- data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
- data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
- data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
- data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
- data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
- data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
- data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
- data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
- data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
- data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
- data/ext/third_party/gsl/CMakeLists.txt +13 -5
- data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
- data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
- data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
- data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
- data/ext/third_party/gsl/include/gsl/multi_span +0 -10
- data/ext/third_party/gsl/include/gsl/pointers +14 -28
- data/ext/third_party/gsl/include/gsl/span +98 -46
- data/ext/third_party/gsl/include/gsl/string_span +37 -47
- data/ext/third_party/http_parser/http_parser.c +17 -10
- data/ext/third_party/http_parser/http_parser.h +4 -2
- data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
- data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
- data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
- data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
- data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
- data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
- data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
- data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
- data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
- data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
- data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
- data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
- data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
- data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
- data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
- data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
- data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
- data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
- data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
- data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
- data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
- data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
- data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
- data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
- data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +29 -26
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
- data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
- data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
- data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
- data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
- data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
- data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
- data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
- data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
- data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
- data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
- data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
- data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
- data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
- data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
- data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
- data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
- data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
- data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
- data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
- data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
- data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
- data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
- data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
- data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
- data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
- data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
- data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
- data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
- data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
- data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
- data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
- data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
- data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
- data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
- data/ext/third_party/json/include/tao/json/span.hpp +94 -166
- data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
- data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
- data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
- data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
- data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
- data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
- data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
- data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
- data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
- data/ext/third_party/snappy/snappy.cc +6 -2
- data/ext/third_party/spdlog/CMakeLists.txt +24 -57
- data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
- data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
- data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
- data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
- data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
- data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
- data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
- data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
- data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
- data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
- data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
- data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
- data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
- data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
- data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
- data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
- data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
- data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
- data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
- data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
- data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
- data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
- data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
- data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
- data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
- data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
- data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
- data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
- data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
- data/ext/third_party/spdlog/src/fmt.cpp +21 -147
- data/lib/couchbase/cluster.rb +111 -1
- data/lib/couchbase/collection_options.rb +18 -1
- data/lib/couchbase/errors.rb +3 -0
- data/lib/couchbase/management/bucket_manager.rb +36 -3
- data/lib/couchbase/management/search_index_manager.rb +42 -1
- data/lib/couchbase/management/user_manager.rb +155 -48
- data/lib/couchbase/query_options.rb +7 -0
- data/lib/couchbase/scope.rb +1 -0
- data/lib/couchbase/search_options.rb +69 -1
- data/lib/couchbase/version.rb +1 -1
- metadata +172 -268
- data/.rubocop.yml +0 -227
- data/.rubocop_todo.yml +0 -47
- data/.yardopts +0 -1
- data/CONTRIBUTING.md +0 -110
- data/Gemfile +0 -37
- data/Rakefile +0 -51
- data/couchbase.gemspec +0 -79
- data/examples/analytics.rb +0 -236
- data/examples/auth.rb +0 -33
- data/examples/crud.rb +0 -34
- data/examples/managing_analytics_indexes.rb +0 -86
- data/examples/managing_buckets.rb +0 -61
- data/examples/managing_collections.rb +0 -71
- data/examples/managing_query_indexes.rb +0 -83
- data/examples/managing_search_indexes.rb +0 -77
- data/examples/managing_view_indexes.rb +0 -68
- data/examples/query.rb +0 -32
- data/examples/query_with_consistency.rb +0 -86
- data/examples/search.rb +0 -202
- data/examples/search_with_consistency.rb +0 -97
- data/examples/subdocument.rb +0 -63
- data/examples/view.rb +0 -59
- data/ext/.clang-format +0 -15
- data/ext/.clang-tidy +0 -22
- data/ext/.cmake-format.yaml +0 -8
- data/ext/.gitignore +0 -2
- data/ext/.idea/.name +0 -1
- data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
- data/ext/.idea/ext.iml +0 -2
- data/ext/.idea/misc.xml +0 -16
- data/ext/.idea/modules.xml +0 -8
- data/ext/.idea/vcs.xml +0 -12
- data/ext/test/main.cxx +0 -184
- data/ext/third_party/asio/.appveyor.yml +0 -107
- data/ext/third_party/asio/.cirrus.yml +0 -16
- data/ext/third_party/asio/.gitignore +0 -3
- data/ext/third_party/asio/.travis.yml +0 -323
- data/ext/third_party/asio/asio/.gitignore +0 -23
- data/ext/third_party/asio/asio/COPYING +0 -4
- data/ext/third_party/asio/asio/INSTALL +0 -5
- data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
- data/ext/third_party/asio/asio/Makefile.am +0 -19
- data/ext/third_party/asio/asio/README +0 -4
- data/ext/third_party/asio/asio/asio.manifest +0 -4865
- data/ext/third_party/asio/asio/autogen.sh +0 -55
- data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
- data/ext/third_party/asio/asio/boostify.pl +0 -603
- data/ext/third_party/asio/asio/configure.ac +0 -182
- data/ext/third_party/asio/asio/include/.gitignore +0 -2
- data/ext/third_party/asio/asio/include/Makefile.am +0 -484
- data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
- data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
- data/ext/third_party/asio/asio/release.pl +0 -440
- data/ext/third_party/asio/asio/src/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/Makefile.am +0 -23
- data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
- data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
- data/ext/third_party/asio/asio/src/asio.cpp +0 -11
- data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
- data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
- data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
- data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
- data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
- data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
- data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
- data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
- data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
- data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
- data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
- data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
- data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
- data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
- data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
- data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
- data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
- data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
- data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
- data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
- data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
- data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
- data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
- data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
- data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
- data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
- data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
- data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
- data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
- data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
- data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
- data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
- data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
- data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
- data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
- data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
- data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
- data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
- data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
- data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
- data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
- data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
- data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
- data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
- data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
- data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
- data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
- data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
- data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
- data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
- data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
- data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
- data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
- data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
- data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
- data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
- data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
- data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
- data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
- data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
- data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
- data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
- data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
- data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
- data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
- data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
- data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
- data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
- data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
- data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
- data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
- data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
- data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
- data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
- data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
- data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
- data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
- data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
- data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
- data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
- data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
- data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
- data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
- data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
- data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
- data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
- data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
- data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
- data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
- data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
- data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
- data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
- data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
- data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
- data/ext/third_party/asio/asio/tsify.pl +0 -574
- data/ext/third_party/gsl/.clang-format +0 -34
- data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
- data/ext/third_party/gsl/.gitignore +0 -16
- data/ext/third_party/gsl/.travis.yml +0 -551
- data/ext/third_party/gsl/CMakeSettings.json +0 -18
- data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
- data/ext/third_party/gsl/GSL.natvis +0 -98
- data/ext/third_party/gsl/README.md +0 -124
- data/ext/third_party/gsl/appveyor.yml +0 -128
- data/ext/third_party/http_parser/.gitignore +0 -30
- data/ext/third_party/http_parser/.mailmap +0 -8
- data/ext/third_party/http_parser/.travis.yml +0 -13
- data/ext/third_party/http_parser/AUTHORS +0 -68
- data/ext/third_party/http_parser/Makefile +0 -160
- data/ext/third_party/http_parser/README.md +0 -246
- data/ext/third_party/http_parser/bench.c +0 -128
- data/ext/third_party/http_parser/http_parser.gyp +0 -111
- data/ext/third_party/http_parser/test.c +0 -4600
- data/ext/third_party/json/.appveyor.yml +0 -44
- data/ext/third_party/json/.clang-format +0 -84
- data/ext/third_party/json/.conan/build.py +0 -80
- data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
- data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
- data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
- data/ext/third_party/json/.gitignore +0 -3
- data/ext/third_party/json/.travis.yml +0 -173
- data/ext/third_party/json/Makefile +0 -77
- data/ext/third_party/json/README.md +0 -149
- data/ext/third_party/json/conanfile.py +0 -28
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
- data/ext/third_party/snappy/.appveyor.yml +0 -36
- data/ext/third_party/snappy/.gitignore +0 -8
- data/ext/third_party/snappy/.travis.yml +0 -98
- data/ext/third_party/snappy/AUTHORS +0 -1
- data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
- data/ext/third_party/snappy/NEWS +0 -188
- data/ext/third_party/snappy/README.md +0 -148
- data/ext/third_party/snappy/docs/README.md +0 -72
- data/ext/third_party/snappy/format_description.txt +0 -110
- data/ext/third_party/snappy/framing_format.txt +0 -135
- data/ext/third_party/snappy/snappy-test.cc +0 -613
- data/ext/third_party/snappy/snappy-test.h +0 -526
- data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
- data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
- data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
- data/ext/third_party/spdlog/.clang-format +0 -108
- data/ext/third_party/spdlog/.clang-tidy +0 -54
- data/ext/third_party/spdlog/.gitattributes +0 -1
- data/ext/third_party/spdlog/.gitignore +0 -83
- data/ext/third_party/spdlog/.travis.yml +0 -112
- data/ext/third_party/spdlog/INSTALL +0 -24
- data/ext/third_party/spdlog/README.md +0 -423
- data/ext/third_party/spdlog/appveyor.yml +0 -51
- data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
data/ext/couchbase/couchbase.cxx
CHANGED
@@ -16,6 +16,7 @@
|
|
16
16
|
*/
|
17
17
|
|
18
18
|
#include <build_config.hxx>
|
19
|
+
#include <build_info.hxx>
|
19
20
|
|
20
21
|
#include <openssl/crypto.h>
|
21
22
|
#include <asio/version.hpp>
|
@@ -94,6 +95,32 @@ init_versions(VALUE mCouchbase)
|
|
94
95
|
VALUE version_info = rb_inspect(cb_Version);
|
95
96
|
spdlog::info("couchbase backend has been initialized: {}",
|
96
97
|
std::string_view(RSTRING_PTR(version_info), static_cast<std::size_t>(RSTRING_LEN(version_info))));
|
98
|
+
|
99
|
+
VALUE cb_BuildInfo = rb_hash_new();
|
100
|
+
rb_const_set(mCouchbase, rb_intern("BUILD_INFO"), cb_BuildInfo);
|
101
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("cmake_build_type")), rb_str_freeze(rb_str_new_cstr(CMAKE_BUILD_TYPE)));
|
102
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("compile_definitions")), rb_str_freeze(rb_str_new_cstr(BACKEND_COMPILE_DEFINITIONS)));
|
103
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("compile_features")), rb_str_freeze(rb_str_new_cstr(BACKEND_COMPILE_FEATURES)));
|
104
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("compile_flags")), rb_str_freeze(rb_str_new_cstr(BACKEND_COMPILE_FLAGS)));
|
105
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("compile_options")), rb_str_freeze(rb_str_new_cstr(BACKEND_COMPILE_OPTIONS)));
|
106
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("link_depends")), rb_str_freeze(rb_str_new_cstr(BACKEND_LINK_DEPENDS)));
|
107
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("link_flags")), rb_str_freeze(rb_str_new_cstr(BACKEND_LINK_FLAGS)));
|
108
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("link_libraries")), rb_str_freeze(rb_str_new_cstr(BACKEND_LINK_LIBRARIES)));
|
109
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("link_options")), rb_str_freeze(rb_str_new_cstr(BACKEND_LINK_OPTIONS)));
|
110
|
+
#if defined(STATIC_STDLIB)
|
111
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("static_stdlib")), Qtrue);
|
112
|
+
#endif
|
113
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("openssl_crypto_libraries")), rb_str_freeze(rb_str_new_cstr(OPENSSL_CRYPTO_LIBRARIES)));
|
114
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("openssl_ssl_libraries")), rb_str_freeze(rb_str_new_cstr(OPENSSL_SSL_LIBRARIES)));
|
115
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("openssl_include_dir")), rb_str_freeze(rb_str_new_cstr(OPENSSL_INCLUDE_DIR)));
|
116
|
+
#if defined(STATIC_OPENSSL)
|
117
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("static_openssl")), Qtrue);
|
118
|
+
#endif
|
119
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("ruby_library")), rb_str_freeze(rb_str_new_cstr(RUBY_LIBRARY)));
|
120
|
+
rb_hash_aset(cb_BuildInfo, rb_id2sym(rb_intern("ruby_include_dir")), rb_str_freeze(rb_str_new_cstr(RUBY_INCLUDE_DIR)));
|
121
|
+
VALUE build_info = rb_inspect(cb_BuildInfo);
|
122
|
+
spdlog::debug("couchbase backend build info: {}",
|
123
|
+
std::string_view(RSTRING_PTR(build_info), static_cast<std::size_t>(RSTRING_LEN(build_info))));
|
97
124
|
}
|
98
125
|
|
99
126
|
struct cb_backend_data {
|
@@ -177,6 +204,7 @@ static VALUE eCasMismatch;
|
|
177
204
|
static VALUE eCollectionExists;
|
178
205
|
static VALUE eCollectionNotFound;
|
179
206
|
static VALUE eCompilationFailure;
|
207
|
+
static VALUE eConsistencyMismatch;
|
180
208
|
static VALUE eDatasetExists;
|
181
209
|
static VALUE eDatasetNotFound;
|
182
210
|
static VALUE eDataverseExists;
|
@@ -233,6 +261,14 @@ static VALUE eXattrInvalidKeyCombo;
|
|
233
261
|
static VALUE eXattrUnknownMacro;
|
234
262
|
static VALUE eXattrUnknownVirtualAttribute;
|
235
263
|
|
264
|
+
static VALUE eBackendError;
|
265
|
+
static VALUE eNetworkError;
|
266
|
+
static VALUE eResolveFailure;
|
267
|
+
static VALUE eNoEndpointsLeft;
|
268
|
+
static VALUE eHandshakeFailure;
|
269
|
+
static VALUE eProtocolError;
|
270
|
+
static VALUE eConfigurationNotAvailable;
|
271
|
+
|
236
272
|
static void
|
237
273
|
init_exceptions(VALUE mCouchbase)
|
238
274
|
{
|
@@ -250,6 +286,7 @@ init_exceptions(VALUE mCouchbase)
|
|
250
286
|
eCollectionExists = rb_define_class_under(mError, "CollectionExists", eCouchbaseError);
|
251
287
|
eCollectionNotFound = rb_define_class_under(mError, "CollectionNotFound", eCouchbaseError);
|
252
288
|
eCompilationFailure = rb_define_class_under(mError, "CompilationFailure", eCouchbaseError);
|
289
|
+
eConsistencyMismatch = rb_define_class_under(mError, "ConsistencyMismatch", eCouchbaseError);
|
253
290
|
eDatasetExists = rb_define_class_under(mError, "DatasetExists", eCouchbaseError);
|
254
291
|
eDatasetNotFound = rb_define_class_under(mError, "DatasetNotFound", eCouchbaseError);
|
255
292
|
eDataverseExists = rb_define_class_under(mError, "DataverseExists", eCouchbaseError);
|
@@ -305,6 +342,14 @@ init_exceptions(VALUE mCouchbase)
|
|
305
342
|
eXattrInvalidKeyCombo = rb_define_class_under(mError, "XattrInvalidKeyCombo", eCouchbaseError);
|
306
343
|
eXattrUnknownMacro = rb_define_class_under(mError, "XattrUnknownMacro", eCouchbaseError);
|
307
344
|
eXattrUnknownVirtualAttribute = rb_define_class_under(mError, "XattrUnknownVirtualAttribute", eCouchbaseError);
|
345
|
+
|
346
|
+
eBackendError = rb_define_class_under(mError, "BackendError", eCouchbaseError);
|
347
|
+
eNetworkError = rb_define_class_under(mError, "NetworkError", eBackendError);
|
348
|
+
eResolveFailure = rb_define_class_under(mError, "ResolveFailure", eNetworkError);
|
349
|
+
eNoEndpointsLeft = rb_define_class_under(mError, "NoEndpointsLeft", eNetworkError);
|
350
|
+
eHandshakeFailure = rb_define_class_under(mError, "HandshakeFailure", eNetworkError);
|
351
|
+
eProtocolError = rb_define_class_under(mError, "ProtocolError", eNetworkError);
|
352
|
+
eConfigurationNotAvailable = rb_define_class_under(mError, "ConfigurationNotAvailable", eNetworkError);
|
308
353
|
}
|
309
354
|
|
310
355
|
static VALUE
|
@@ -461,6 +506,8 @@ cb__map_error_code(std::error_code ec, const std::string& message)
|
|
461
506
|
switch (static_cast<couchbase::error::search_errc>(ec.value())) {
|
462
507
|
case couchbase::error::search_errc::index_not_ready:
|
463
508
|
return rb_exc_new_cstr(eIndexNotReady, fmt::format("{}: {}", message, ec.message()).c_str());
|
509
|
+
case couchbase::error::search_errc::consistency_mismatch:
|
510
|
+
return rb_exc_new_cstr(eConsistencyMismatch, fmt::format("{}: {}", message, ec.message()).c_str());
|
464
511
|
}
|
465
512
|
} else if (ec.category() == couchbase::error::detail::get_view_category()) {
|
466
513
|
switch (static_cast<couchbase::error::view_errc>(ec.value())) {
|
@@ -516,9 +563,26 @@ cb__map_error_code(std::error_code ec, const std::string& message)
|
|
516
563
|
case couchbase::error::management_errc::bucket_not_flushable:
|
517
564
|
return rb_exc_new_cstr(eBucketNotFlushable, fmt::format("{}: {}", message, ec.message()).c_str());
|
518
565
|
}
|
566
|
+
} else if (ec.category() == couchbase::error::detail::network_error_category()) {
|
567
|
+
switch (static_cast<couchbase::error::network_errc>(ec.value())) {
|
568
|
+
case couchbase::error::network_errc::resolve_failure:
|
569
|
+
return rb_exc_new_cstr(eResolveFailure, fmt::format("{}: {}", message, ec.message()).c_str());
|
570
|
+
|
571
|
+
case couchbase::error::network_errc::no_endpoints_left:
|
572
|
+
return rb_exc_new_cstr(eNoEndpointsLeft, fmt::format("{}: {}", message, ec.message()).c_str());
|
573
|
+
|
574
|
+
case couchbase::error::network_errc::handshake_failure:
|
575
|
+
return rb_exc_new_cstr(eHandshakeFailure, fmt::format("{}: {}", message, ec.message()).c_str());
|
576
|
+
|
577
|
+
case couchbase::error::network_errc::protocol_error:
|
578
|
+
return rb_exc_new_cstr(eProtocolError, fmt::format("{}: {}", message, ec.message()).c_str());
|
579
|
+
|
580
|
+
case couchbase::error::network_errc::configuration_not_available:
|
581
|
+
return rb_exc_new_cstr(eConfigurationNotAvailable, fmt::format("{}: {}", message, ec.message()).c_str());
|
582
|
+
}
|
519
583
|
}
|
520
584
|
|
521
|
-
return rb_exc_new_cstr(
|
585
|
+
return rb_exc_new_cstr(eBackendError, fmt::format("{}: {}", message, ec.message()).c_str());
|
522
586
|
}
|
523
587
|
|
524
588
|
static VALUE
|
@@ -593,6 +657,93 @@ cb_Backend_close(VALUE self)
|
|
593
657
|
return Qnil;
|
594
658
|
}
|
595
659
|
|
660
|
+
static VALUE
|
661
|
+
cb_Backend_diagnostics(VALUE self, VALUE report_id)
|
662
|
+
{
|
663
|
+
cb_backend_data* backend = nullptr;
|
664
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
665
|
+
if (!backend->cluster) {
|
666
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
667
|
+
}
|
668
|
+
|
669
|
+
if (!NIL_P(report_id)) {
|
670
|
+
Check_Type(report_id, T_STRING);
|
671
|
+
}
|
672
|
+
|
673
|
+
VALUE exc = Qnil;
|
674
|
+
do {
|
675
|
+
std::optional<std::string> id;
|
676
|
+
if (!NIL_P(report_id)) {
|
677
|
+
id.emplace(std::string(RSTRING_PTR(report_id), static_cast<size_t>(RSTRING_LEN(report_id))));
|
678
|
+
}
|
679
|
+
auto barrier = std::make_shared<std::promise<couchbase::diag::diagnostics_result>>();
|
680
|
+
auto f = barrier->get_future();
|
681
|
+
backend->cluster->diagnostics(id, [barrier](couchbase::diag::diagnostics_result resp) mutable { barrier->set_value(resp); });
|
682
|
+
auto resp = f.get();
|
683
|
+
|
684
|
+
VALUE res = rb_hash_new();
|
685
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("id")), rb_str_new(resp.id.data(), static_cast<long>(resp.id.size())));
|
686
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("sdk")), rb_str_new(resp.sdk.data(), static_cast<long>(resp.sdk.size())));
|
687
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("version")), INT2FIX(resp.version));
|
688
|
+
VALUE services = rb_hash_new();
|
689
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("services")), services);
|
690
|
+
for (const auto& svcs : resp.services) {
|
691
|
+
VALUE type = Qnil;
|
692
|
+
switch (svcs.first) {
|
693
|
+
case couchbase::service_type::kv:
|
694
|
+
type = rb_id2sym(rb_intern("kv"));
|
695
|
+
break;
|
696
|
+
case couchbase::service_type::query:
|
697
|
+
type = rb_id2sym(rb_intern("query"));
|
698
|
+
break;
|
699
|
+
case couchbase::service_type::analytics:
|
700
|
+
type = rb_id2sym(rb_intern("analytics"));
|
701
|
+
break;
|
702
|
+
case couchbase::service_type::search:
|
703
|
+
type = rb_id2sym(rb_intern("search"));
|
704
|
+
break;
|
705
|
+
case couchbase::service_type::views:
|
706
|
+
type = rb_id2sym(rb_intern("views"));
|
707
|
+
break;
|
708
|
+
case couchbase::service_type::management:
|
709
|
+
type = rb_id2sym(rb_intern("mgmt"));
|
710
|
+
break;
|
711
|
+
}
|
712
|
+
VALUE endpoints = rb_ary_new();
|
713
|
+
rb_hash_aset(services, type, endpoints);
|
714
|
+
for (const auto& svc : svcs.second) {
|
715
|
+
VALUE service = rb_hash_new();
|
716
|
+
if (svc.last_activity) {
|
717
|
+
rb_hash_aset(service, rb_id2sym(rb_intern("last_activity_us")), LL2NUM(svc.last_activity->count()));
|
718
|
+
}
|
719
|
+
rb_hash_aset(service, rb_id2sym(rb_intern("id")), rb_str_new(svc.id.data(), static_cast<long>(svc.id.size())));
|
720
|
+
rb_hash_aset(service, rb_id2sym(rb_intern("remote")), rb_str_new(svc.remote.data(), static_cast<long>(svc.remote.size())));
|
721
|
+
rb_hash_aset(service, rb_id2sym(rb_intern("local")), rb_str_new(svc.local.data(), static_cast<long>(svc.local.size())));
|
722
|
+
VALUE state = Qnil;
|
723
|
+
switch (svc.state) {
|
724
|
+
case couchbase::diag::endpoint_state::disconnected:
|
725
|
+
state = rb_id2sym(rb_intern("disconnected"));
|
726
|
+
break;
|
727
|
+
case couchbase::diag::endpoint_state::connecting:
|
728
|
+
state = rb_id2sym(rb_intern("connecting"));
|
729
|
+
break;
|
730
|
+
case couchbase::diag::endpoint_state::connected:
|
731
|
+
state = rb_id2sym(rb_intern("connected"));
|
732
|
+
break;
|
733
|
+
case couchbase::diag::endpoint_state::disconnecting:
|
734
|
+
state = rb_id2sym(rb_intern("disconnecting"));
|
735
|
+
break;
|
736
|
+
}
|
737
|
+
rb_hash_aset(service, rb_id2sym(rb_intern("state")), state);
|
738
|
+
rb_ary_push(endpoints, service);
|
739
|
+
}
|
740
|
+
}
|
741
|
+
return res;
|
742
|
+
} while (false);
|
743
|
+
rb_exc_raise(exc);
|
744
|
+
return Qnil;
|
745
|
+
}
|
746
|
+
|
596
747
|
static VALUE
|
597
748
|
cb_Backend_open_bucket(VALUE self, VALUE bucket, VALUE wait_until_ready)
|
598
749
|
{
|
@@ -1976,6 +2127,10 @@ cb_Backend_document_query(VALUE self, VALUE statement, VALUE options)
|
|
1976
2127
|
if (!NIL_P(readonly)) {
|
1977
2128
|
req.readonly = RTEST(readonly);
|
1978
2129
|
}
|
2130
|
+
VALUE flex_index = rb_hash_aref(options, rb_id2sym(rb_intern("flex_index")));
|
2131
|
+
if (!NIL_P(flex_index)) {
|
2132
|
+
req.flex_index = RTEST(flex_index);
|
2133
|
+
}
|
1979
2134
|
VALUE scan_cap = rb_hash_aref(options, rb_id2sym(rb_intern("scan_cap")));
|
1980
2135
|
if (!NIL_P(scan_cap)) {
|
1981
2136
|
req.scan_cap = NUM2ULONG(scan_cap);
|
@@ -2101,14 +2256,18 @@ cb_Backend_document_query(VALUE self, VALUE statement, VALUE options)
|
|
2101
2256
|
if (resp.payload.meta_data.errors && !resp.payload.meta_data.errors->empty()) {
|
2102
2257
|
const auto& first_error = resp.payload.meta_data.errors->front();
|
2103
2258
|
exc = cb__map_error_code(resp.ec,
|
2104
|
-
fmt::format("unable to query:
|
2105
|
-
req.
|
2106
|
-
req.statement.
|
2259
|
+
fmt::format(R"(unable to query (client_context_id="{}"): "{}{}" ({}: {}))",
|
2260
|
+
req.client_context_id,
|
2261
|
+
req.statement.substr(0, 100),
|
2262
|
+
req.statement.size() > 100 ? "..." : "",
|
2107
2263
|
first_error.code,
|
2108
2264
|
first_error.message));
|
2109
2265
|
} else {
|
2110
|
-
exc = cb__map_error_code(
|
2111
|
-
|
2266
|
+
exc = cb__map_error_code(resp.ec,
|
2267
|
+
fmt::format(R"(unable to query (client_context_id="{}"): "{}{}")",
|
2268
|
+
req.client_context_id,
|
2269
|
+
req.statement.substr(0, 100),
|
2270
|
+
req.statement.size() > 100 ? "..." : ""));
|
2112
2271
|
}
|
2113
2272
|
break;
|
2114
2273
|
}
|
@@ -2142,16 +2301,20 @@ cb_Backend_document_query(VALUE self, VALUE statement, VALUE options)
|
|
2142
2301
|
}
|
2143
2302
|
metrics = rb_hash_new();
|
2144
2303
|
rb_hash_aset(meta, rb_id2sym(rb_intern("metrics")), metrics);
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2150
|
-
|
2151
|
-
|
2152
|
-
|
2304
|
+
if (!resp.payload.meta_data.metrics.elapsed_time.empty()) {
|
2305
|
+
rb_hash_aset(metrics,
|
2306
|
+
rb_id2sym(rb_intern("elapsed_time")),
|
2307
|
+
rb_str_new(resp.payload.meta_data.metrics.elapsed_time.data(),
|
2308
|
+
static_cast<long>(resp.payload.meta_data.metrics.elapsed_time.size())));
|
2309
|
+
}
|
2310
|
+
if (!resp.payload.meta_data.metrics.execution_time.empty()) {
|
2311
|
+
rb_hash_aset(metrics,
|
2312
|
+
rb_id2sym(rb_intern("execution_time")),
|
2313
|
+
rb_str_new(resp.payload.meta_data.metrics.execution_time.data(),
|
2314
|
+
static_cast<long>(resp.payload.meta_data.metrics.execution_time.size())));
|
2315
|
+
}
|
2153
2316
|
rb_hash_aset(metrics, rb_id2sym(rb_intern("result_count")), ULL2NUM(resp.payload.meta_data.metrics.result_count));
|
2154
|
-
rb_hash_aset(metrics, rb_id2sym(rb_intern("result_size")), ULL2NUM(resp.payload.meta_data.metrics.
|
2317
|
+
rb_hash_aset(metrics, rb_id2sym(rb_intern("result_size")), ULL2NUM(resp.payload.meta_data.metrics.result_size));
|
2155
2318
|
if (resp.payload.meta_data.metrics.sort_count) {
|
2156
2319
|
rb_hash_aset(metrics, rb_id2sym(rb_intern("sort_count")), ULL2NUM(*resp.payload.meta_data.metrics.sort_count));
|
2157
2320
|
}
|
@@ -2239,15 +2402,19 @@ cb__generate_bucket_settings(VALUE bucket, couchbase::operations::bucket_setting
|
|
2239
2402
|
}
|
2240
2403
|
}
|
2241
2404
|
{
|
2242
|
-
VALUE
|
2243
|
-
if (!NIL_P(
|
2244
|
-
Check_Type(
|
2245
|
-
if (
|
2246
|
-
entry.
|
2247
|
-
} else if (
|
2248
|
-
entry.
|
2405
|
+
VALUE eviction_policy = rb_hash_aref(bucket, rb_id2sym(rb_intern("eviction_policy")));
|
2406
|
+
if (!NIL_P(eviction_policy)) {
|
2407
|
+
Check_Type(eviction_policy, T_SYMBOL);
|
2408
|
+
if (eviction_policy == rb_id2sym(rb_intern("full"))) {
|
2409
|
+
entry.eviction_policy = couchbase::operations::bucket_settings::eviction_policy::full;
|
2410
|
+
} else if (eviction_policy == rb_id2sym(rb_intern("value_only"))) {
|
2411
|
+
entry.eviction_policy = couchbase::operations::bucket_settings::eviction_policy::value_only;
|
2412
|
+
} else if (eviction_policy == rb_id2sym(rb_intern("no_eviction"))) {
|
2413
|
+
entry.eviction_policy = couchbase::operations::bucket_settings::eviction_policy::no_eviction;
|
2414
|
+
} else if (eviction_policy == rb_id2sym(rb_intern("not_recently_used"))) {
|
2415
|
+
entry.eviction_policy = couchbase::operations::bucket_settings::eviction_policy::not_recently_used;
|
2249
2416
|
} else {
|
2250
|
-
rb_raise(rb_eArgError, "unknown
|
2417
|
+
rb_raise(rb_eArgError, "unknown eviction policy");
|
2251
2418
|
}
|
2252
2419
|
}
|
2253
2420
|
}
|
@@ -2435,15 +2602,21 @@ cb__extract_bucket_settings(const couchbase::operations::bucket_settings& entry,
|
|
2435
2602
|
rb_hash_aset(bucket, rb_id2sym(rb_intern("num_replicas")), ULONG2NUM(entry.num_replicas));
|
2436
2603
|
rb_hash_aset(bucket, rb_id2sym(rb_intern("replica_indexes")), entry.replica_indexes ? Qtrue : Qfalse);
|
2437
2604
|
rb_hash_aset(bucket, rb_id2sym(rb_intern("flush_enabled")), entry.flush_enabled ? Qtrue : Qfalse);
|
2438
|
-
switch (entry.
|
2439
|
-
case couchbase::operations::bucket_settings::
|
2440
|
-
rb_hash_aset(bucket, rb_id2sym(rb_intern("
|
2605
|
+
switch (entry.eviction_policy) {
|
2606
|
+
case couchbase::operations::bucket_settings::eviction_policy::full:
|
2607
|
+
rb_hash_aset(bucket, rb_id2sym(rb_intern("eviction_policy")), rb_id2sym(rb_intern("full")));
|
2608
|
+
break;
|
2609
|
+
case couchbase::operations::bucket_settings::eviction_policy::value_only:
|
2610
|
+
rb_hash_aset(bucket, rb_id2sym(rb_intern("eviction_policy")), rb_id2sym(rb_intern("value_only")));
|
2441
2611
|
break;
|
2442
|
-
case couchbase::operations::bucket_settings::
|
2443
|
-
rb_hash_aset(bucket, rb_id2sym(rb_intern("
|
2612
|
+
case couchbase::operations::bucket_settings::eviction_policy::no_eviction:
|
2613
|
+
rb_hash_aset(bucket, rb_id2sym(rb_intern("eviction_policy")), rb_id2sym(rb_intern("no_eviction")));
|
2444
2614
|
break;
|
2445
|
-
case couchbase::operations::bucket_settings::
|
2446
|
-
rb_hash_aset(bucket, rb_id2sym(rb_intern("
|
2615
|
+
case couchbase::operations::bucket_settings::eviction_policy::not_recently_used:
|
2616
|
+
rb_hash_aset(bucket, rb_id2sym(rb_intern("eviction_policy")), rb_id2sym(rb_intern("not_recently_used")));
|
2617
|
+
break;
|
2618
|
+
case couchbase::operations::bucket_settings::eviction_policy::unknown:
|
2619
|
+
rb_hash_aset(bucket, rb_id2sym(rb_intern("eviction_policy")), Qnil);
|
2447
2620
|
break;
|
2448
2621
|
}
|
2449
2622
|
switch (entry.conflict_resolution_type) {
|
@@ -2546,6 +2719,574 @@ cb_Backend_bucket_get(VALUE self, VALUE bucket_name, VALUE timeout)
|
|
2546
2719
|
return Qnil;
|
2547
2720
|
}
|
2548
2721
|
|
2722
|
+
static void
|
2723
|
+
cb__extract_role(const couchbase::operations::rbac::role_and_description& entry, VALUE role)
|
2724
|
+
{
|
2725
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("name")), rb_str_new(entry.name.data(), static_cast<long>(entry.name.size())));
|
2726
|
+
rb_hash_aset(
|
2727
|
+
role, rb_id2sym(rb_intern("display_name")), rb_str_new(entry.display_name.data(), static_cast<long>(entry.display_name.size())));
|
2728
|
+
rb_hash_aset(
|
2729
|
+
role, rb_id2sym(rb_intern("description")), rb_str_new(entry.description.data(), static_cast<long>(entry.description.size())));
|
2730
|
+
if (entry.bucket) {
|
2731
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("bucket")), rb_str_new(entry.bucket->data(), static_cast<long>(entry.bucket->size())));
|
2732
|
+
}
|
2733
|
+
if (entry.scope) {
|
2734
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("scope")), rb_str_new(entry.scope->data(), static_cast<long>(entry.scope->size())));
|
2735
|
+
}
|
2736
|
+
if (entry.collection) {
|
2737
|
+
rb_hash_aset(
|
2738
|
+
role, rb_id2sym(rb_intern("collection")), rb_str_new(entry.collection->data(), static_cast<long>(entry.collection->size())));
|
2739
|
+
}
|
2740
|
+
}
|
2741
|
+
|
2742
|
+
static VALUE
|
2743
|
+
cb_Backend_role_get_all(VALUE self, VALUE timeout)
|
2744
|
+
{
|
2745
|
+
cb_backend_data* backend = nullptr;
|
2746
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
2747
|
+
|
2748
|
+
if (!backend->cluster) {
|
2749
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
2750
|
+
}
|
2751
|
+
|
2752
|
+
VALUE exc = Qnil;
|
2753
|
+
do {
|
2754
|
+
couchbase::operations::role_get_all_request req{};
|
2755
|
+
cb__extract_timeout(req, timeout);
|
2756
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::role_get_all_response>>();
|
2757
|
+
auto f = barrier->get_future();
|
2758
|
+
backend->cluster->execute_http(req,
|
2759
|
+
[barrier](couchbase::operations::role_get_all_response resp) mutable { barrier->set_value(resp); });
|
2760
|
+
auto resp = f.get();
|
2761
|
+
if (resp.ec) {
|
2762
|
+
exc = cb__map_error_code(resp.ec, "unable to fetch users");
|
2763
|
+
break;
|
2764
|
+
}
|
2765
|
+
|
2766
|
+
VALUE res = rb_ary_new_capa(static_cast<long>(resp.roles.size()));
|
2767
|
+
for (const auto& entry : resp.roles) {
|
2768
|
+
VALUE role = rb_hash_new();
|
2769
|
+
cb__extract_role(entry, role);
|
2770
|
+
rb_ary_push(res, role);
|
2771
|
+
}
|
2772
|
+
return res;
|
2773
|
+
} while (false);
|
2774
|
+
rb_exc_raise(exc);
|
2775
|
+
return Qnil;
|
2776
|
+
}
|
2777
|
+
|
2778
|
+
static void
|
2779
|
+
cb__extract_user(const couchbase::operations::rbac::user_and_metadata& entry, VALUE user)
|
2780
|
+
{
|
2781
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("username")), rb_str_new(entry.username.data(), static_cast<long>(entry.username.size())));
|
2782
|
+
switch (entry.domain) {
|
2783
|
+
case couchbase::operations::rbac::auth_domain::local:
|
2784
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("domain")), rb_id2sym(rb_intern("local")));
|
2785
|
+
break;
|
2786
|
+
case couchbase::operations::rbac::auth_domain::external:
|
2787
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("domain")), rb_id2sym(rb_intern("external")));
|
2788
|
+
break;
|
2789
|
+
case couchbase::operations::rbac::auth_domain::unknown:
|
2790
|
+
break;
|
2791
|
+
}
|
2792
|
+
VALUE external_groups = rb_ary_new_capa(static_cast<long>(entry.external_groups.size()));
|
2793
|
+
for (const auto& group : entry.external_groups) {
|
2794
|
+
rb_ary_push(external_groups, rb_str_new(group.data(), static_cast<long>(group.size())));
|
2795
|
+
}
|
2796
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("external_groups")), external_groups);
|
2797
|
+
VALUE groups = rb_ary_new_capa(static_cast<long>(entry.groups.size()));
|
2798
|
+
for (const auto& group : entry.groups) {
|
2799
|
+
rb_ary_push(groups, rb_str_new(group.data(), static_cast<long>(group.size())));
|
2800
|
+
}
|
2801
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("groups")), groups);
|
2802
|
+
if (entry.display_name) {
|
2803
|
+
rb_hash_aset(user,
|
2804
|
+
rb_id2sym(rb_intern("display_name")),
|
2805
|
+
rb_str_new(entry.display_name->data(), static_cast<long>(entry.display_name->size())));
|
2806
|
+
}
|
2807
|
+
if (entry.password_changed) {
|
2808
|
+
rb_hash_aset(user,
|
2809
|
+
rb_id2sym(rb_intern("password_changed")),
|
2810
|
+
rb_str_new(entry.password_changed->data(), static_cast<long>(entry.password_changed->size())));
|
2811
|
+
}
|
2812
|
+
VALUE effective_roles = rb_ary_new_capa(static_cast<long>(entry.effective_roles.size()));
|
2813
|
+
for (const auto& er : entry.effective_roles) {
|
2814
|
+
VALUE role = rb_hash_new();
|
2815
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("name")), rb_str_new(er.name.data(), static_cast<long>(er.name.size())));
|
2816
|
+
if (er.bucket) {
|
2817
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("bucket")), rb_str_new(er.bucket->data(), static_cast<long>(er.bucket->size())));
|
2818
|
+
}
|
2819
|
+
if (er.scope) {
|
2820
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("scope")), rb_str_new(er.scope->data(), static_cast<long>(er.scope->size())));
|
2821
|
+
}
|
2822
|
+
if (er.collection) {
|
2823
|
+
rb_hash_aset(
|
2824
|
+
role, rb_id2sym(rb_intern("collection")), rb_str_new(er.collection->data(), static_cast<long>(er.collection->size())));
|
2825
|
+
}
|
2826
|
+
VALUE origins = rb_ary_new_capa(static_cast<long>(er.origins.size()));
|
2827
|
+
for (const auto& orig : er.origins) {
|
2828
|
+
VALUE origin = rb_hash_new();
|
2829
|
+
rb_hash_aset(origin, rb_id2sym(rb_intern("type")), rb_str_new(orig.type.data(), static_cast<long>(orig.type.size())));
|
2830
|
+
if (orig.name) {
|
2831
|
+
rb_hash_aset(origin, rb_id2sym(rb_intern("name")), rb_str_new(orig.name->data(), static_cast<long>(orig.name->size())));
|
2832
|
+
}
|
2833
|
+
rb_ary_push(origins, origin);
|
2834
|
+
}
|
2835
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("origins")), origins);
|
2836
|
+
rb_ary_push(effective_roles, role);
|
2837
|
+
}
|
2838
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("effective_roles")), effective_roles);
|
2839
|
+
|
2840
|
+
VALUE roles = rb_ary_new_capa(static_cast<long>(entry.roles.size()));
|
2841
|
+
for (const auto& er : entry.roles) {
|
2842
|
+
VALUE role = rb_hash_new();
|
2843
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("name")), rb_str_new(er.name.data(), static_cast<long>(er.name.size())));
|
2844
|
+
if (er.bucket) {
|
2845
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("bucket")), rb_str_new(er.bucket->data(), static_cast<long>(er.bucket->size())));
|
2846
|
+
}
|
2847
|
+
if (er.scope) {
|
2848
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("scope")), rb_str_new(er.scope->data(), static_cast<long>(er.scope->size())));
|
2849
|
+
}
|
2850
|
+
if (er.collection) {
|
2851
|
+
rb_hash_aset(
|
2852
|
+
role, rb_id2sym(rb_intern("collection")), rb_str_new(er.collection->data(), static_cast<long>(er.collection->size())));
|
2853
|
+
}
|
2854
|
+
rb_ary_push(roles, role);
|
2855
|
+
}
|
2856
|
+
rb_hash_aset(user, rb_id2sym(rb_intern("roles")), roles);
|
2857
|
+
}
|
2858
|
+
|
2859
|
+
static VALUE
|
2860
|
+
cb_Backend_user_get_all(VALUE self, VALUE domain, VALUE timeout)
|
2861
|
+
{
|
2862
|
+
cb_backend_data* backend = nullptr;
|
2863
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
2864
|
+
|
2865
|
+
if (!backend->cluster) {
|
2866
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
2867
|
+
}
|
2868
|
+
|
2869
|
+
Check_Type(domain, T_SYMBOL);
|
2870
|
+
|
2871
|
+
VALUE exc = Qnil;
|
2872
|
+
do {
|
2873
|
+
couchbase::operations::user_get_all_request req{};
|
2874
|
+
cb__extract_timeout(req, timeout);
|
2875
|
+
if (domain == rb_id2sym(rb_intern("local"))) {
|
2876
|
+
req.domain = couchbase::operations::rbac::auth_domain::local;
|
2877
|
+
} else if (domain == rb_id2sym(rb_intern("external"))) {
|
2878
|
+
req.domain = couchbase::operations::rbac::auth_domain::external;
|
2879
|
+
} else {
|
2880
|
+
exc = rb_exc_new_str(eInvalidArgument, rb_sprintf("unsupported authentication domain: %+" PRIsVALUE, domain));
|
2881
|
+
break;
|
2882
|
+
}
|
2883
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::user_get_all_response>>();
|
2884
|
+
auto f = barrier->get_future();
|
2885
|
+
backend->cluster->execute_http(req,
|
2886
|
+
[barrier](couchbase::operations::user_get_all_response resp) mutable { barrier->set_value(resp); });
|
2887
|
+
auto resp = f.get();
|
2888
|
+
if (resp.ec) {
|
2889
|
+
exc = cb__map_error_code(resp.ec, "unable to fetch users");
|
2890
|
+
break;
|
2891
|
+
}
|
2892
|
+
|
2893
|
+
VALUE res = rb_ary_new_capa(static_cast<long>(resp.users.size()));
|
2894
|
+
for (const auto& entry : resp.users) {
|
2895
|
+
VALUE user = rb_hash_new();
|
2896
|
+
cb__extract_user(entry, user);
|
2897
|
+
rb_ary_push(res, user);
|
2898
|
+
}
|
2899
|
+
return res;
|
2900
|
+
} while (false);
|
2901
|
+
rb_exc_raise(exc);
|
2902
|
+
return Qnil;
|
2903
|
+
}
|
2904
|
+
|
2905
|
+
static VALUE
|
2906
|
+
cb_Backend_user_get(VALUE self, VALUE domain, VALUE username, VALUE timeout)
|
2907
|
+
{
|
2908
|
+
cb_backend_data* backend = nullptr;
|
2909
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
2910
|
+
|
2911
|
+
if (!backend->cluster) {
|
2912
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
2913
|
+
}
|
2914
|
+
|
2915
|
+
Check_Type(domain, T_SYMBOL);
|
2916
|
+
Check_Type(username, T_STRING);
|
2917
|
+
|
2918
|
+
VALUE exc = Qnil;
|
2919
|
+
do {
|
2920
|
+
couchbase::operations::user_get_request req{};
|
2921
|
+
cb__extract_timeout(req, timeout);
|
2922
|
+
if (domain == rb_id2sym(rb_intern("local"))) {
|
2923
|
+
req.domain = couchbase::operations::rbac::auth_domain::local;
|
2924
|
+
} else if (domain == rb_id2sym(rb_intern("external"))) {
|
2925
|
+
req.domain = couchbase::operations::rbac::auth_domain::external;
|
2926
|
+
} else {
|
2927
|
+
exc = rb_exc_new_str(eInvalidArgument, rb_sprintf("unsupported authentication domain: %+" PRIsVALUE, domain));
|
2928
|
+
break;
|
2929
|
+
}
|
2930
|
+
req.username.assign(RSTRING_PTR(username), static_cast<size_t>(RSTRING_LEN(username)));
|
2931
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::user_get_response>>();
|
2932
|
+
auto f = barrier->get_future();
|
2933
|
+
backend->cluster->execute_http(req, [barrier](couchbase::operations::user_get_response resp) mutable { barrier->set_value(resp); });
|
2934
|
+
auto resp = f.get();
|
2935
|
+
if (resp.ec) {
|
2936
|
+
exc = cb__map_error_code(resp.ec, fmt::format(R"(unable to fetch user "{}")", req.username).c_str());
|
2937
|
+
break;
|
2938
|
+
}
|
2939
|
+
|
2940
|
+
VALUE res = rb_hash_new();
|
2941
|
+
cb__extract_user(resp.user, res);
|
2942
|
+
return res;
|
2943
|
+
} while (false);
|
2944
|
+
rb_exc_raise(exc);
|
2945
|
+
return Qnil;
|
2946
|
+
}
|
2947
|
+
|
2948
|
+
static VALUE
|
2949
|
+
cb_Backend_user_drop(VALUE self, VALUE domain, VALUE username, VALUE timeout)
|
2950
|
+
{
|
2951
|
+
cb_backend_data* backend = nullptr;
|
2952
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
2953
|
+
|
2954
|
+
if (!backend->cluster) {
|
2955
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
2956
|
+
}
|
2957
|
+
|
2958
|
+
Check_Type(domain, T_SYMBOL);
|
2959
|
+
Check_Type(username, T_STRING);
|
2960
|
+
|
2961
|
+
VALUE exc = Qnil;
|
2962
|
+
do {
|
2963
|
+
couchbase::operations::user_drop_request req{};
|
2964
|
+
cb__extract_timeout(req, timeout);
|
2965
|
+
if (domain == rb_id2sym(rb_intern("local"))) {
|
2966
|
+
req.domain = couchbase::operations::rbac::auth_domain::local;
|
2967
|
+
} else if (domain == rb_id2sym(rb_intern("external"))) {
|
2968
|
+
req.domain = couchbase::operations::rbac::auth_domain::external;
|
2969
|
+
} else {
|
2970
|
+
exc = rb_exc_new_str(eInvalidArgument, rb_sprintf("unsupported authentication domain: %+" PRIsVALUE, domain));
|
2971
|
+
break;
|
2972
|
+
}
|
2973
|
+
req.username.assign(RSTRING_PTR(username), static_cast<size_t>(RSTRING_LEN(username)));
|
2974
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::user_drop_response>>();
|
2975
|
+
auto f = barrier->get_future();
|
2976
|
+
backend->cluster->execute_http(req,
|
2977
|
+
[barrier](couchbase::operations::user_drop_response resp) mutable { barrier->set_value(resp); });
|
2978
|
+
auto resp = f.get();
|
2979
|
+
if (resp.ec) {
|
2980
|
+
exc = cb__map_error_code(resp.ec, fmt::format(R"(unable to fetch user "{}")", req.username).c_str());
|
2981
|
+
break;
|
2982
|
+
}
|
2983
|
+
|
2984
|
+
return Qtrue;
|
2985
|
+
} while (false);
|
2986
|
+
rb_exc_raise(exc);
|
2987
|
+
return Qnil;
|
2988
|
+
}
|
2989
|
+
|
2990
|
+
static VALUE
|
2991
|
+
cb_Backend_user_upsert(VALUE self, VALUE domain, VALUE user, VALUE timeout)
|
2992
|
+
{
|
2993
|
+
cb_backend_data* backend = nullptr;
|
2994
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
2995
|
+
|
2996
|
+
if (!backend->cluster) {
|
2997
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
2998
|
+
}
|
2999
|
+
|
3000
|
+
Check_Type(domain, T_SYMBOL);
|
3001
|
+
Check_Type(user, T_HASH);
|
3002
|
+
|
3003
|
+
VALUE exc = Qnil;
|
3004
|
+
do {
|
3005
|
+
couchbase::operations::user_upsert_request req{};
|
3006
|
+
cb__extract_timeout(req, timeout);
|
3007
|
+
if (domain == rb_id2sym(rb_intern("local"))) {
|
3008
|
+
req.domain = couchbase::operations::rbac::auth_domain::local;
|
3009
|
+
} else if (domain == rb_id2sym(rb_intern("external"))) {
|
3010
|
+
req.domain = couchbase::operations::rbac::auth_domain::external;
|
3011
|
+
} else {
|
3012
|
+
exc = rb_exc_new_str(eInvalidArgument, rb_sprintf("unsupported authentication domain: %+" PRIsVALUE, domain));
|
3013
|
+
break;
|
3014
|
+
}
|
3015
|
+
VALUE name = rb_hash_aref(user, rb_id2sym(rb_intern("username")));
|
3016
|
+
if (NIL_P(name) || TYPE(name) != T_STRING) {
|
3017
|
+
exc = rb_exc_new_cstr(eInvalidArgument, "unable to upsert user: missing name");
|
3018
|
+
}
|
3019
|
+
req.user.username.assign(RSTRING_PTR(name), static_cast<size_t>(RSTRING_LEN(name)));
|
3020
|
+
VALUE display_name = rb_hash_aref(user, rb_id2sym(rb_intern("display_name")));
|
3021
|
+
if (!NIL_P(display_name) && TYPE(display_name) == T_STRING) {
|
3022
|
+
req.user.display_name = std::string(RSTRING_PTR(display_name), static_cast<size_t>(RSTRING_LEN(display_name)));
|
3023
|
+
}
|
3024
|
+
VALUE password = rb_hash_aref(user, rb_id2sym(rb_intern("password")));
|
3025
|
+
if (!NIL_P(password) && TYPE(password) == T_STRING) {
|
3026
|
+
req.user.password = std::string(RSTRING_PTR(password), static_cast<size_t>(RSTRING_LEN(password)));
|
3027
|
+
}
|
3028
|
+
VALUE groups = rb_hash_aref(user, rb_id2sym(rb_intern("groups")));
|
3029
|
+
if (!NIL_P(groups) && TYPE(groups) == T_ARRAY) {
|
3030
|
+
auto groups_size = static_cast<size_t>(RARRAY_LEN(groups));
|
3031
|
+
for (size_t i = 0; i < groups_size; ++i) {
|
3032
|
+
VALUE entry = rb_ary_entry(groups, static_cast<long>(i));
|
3033
|
+
if (TYPE(entry) == T_STRING) {
|
3034
|
+
req.user.groups.emplace(std::string(RSTRING_PTR(entry), static_cast<size_t>(RSTRING_LEN(entry))));
|
3035
|
+
}
|
3036
|
+
}
|
3037
|
+
}
|
3038
|
+
VALUE roles = rb_hash_aref(user, rb_id2sym(rb_intern("roles")));
|
3039
|
+
if (!NIL_P(roles) && TYPE(roles) == T_ARRAY) {
|
3040
|
+
auto roles_size = static_cast<size_t>(RARRAY_LEN(roles));
|
3041
|
+
req.user.roles.reserve(roles_size);
|
3042
|
+
for (size_t i = 0; i < roles_size; ++i) {
|
3043
|
+
VALUE entry = rb_ary_entry(roles, static_cast<long>(i));
|
3044
|
+
if (TYPE(entry) == T_HASH) {
|
3045
|
+
couchbase::operations::rbac::role role{};
|
3046
|
+
VALUE role_name = rb_hash_aref(entry, rb_id2sym(rb_intern("name")));
|
3047
|
+
role.name.assign(RSTRING_PTR(role_name), static_cast<size_t>(RSTRING_LEN(role_name)));
|
3048
|
+
VALUE bucket = rb_hash_aref(entry, rb_id2sym(rb_intern("bucket")));
|
3049
|
+
if (!NIL_P(bucket) && TYPE(bucket) == T_STRING) {
|
3050
|
+
role.bucket = std::string(RSTRING_PTR(bucket), static_cast<size_t>(RSTRING_LEN(bucket)));
|
3051
|
+
VALUE scope = rb_hash_aref(entry, rb_id2sym(rb_intern("scope")));
|
3052
|
+
if (!NIL_P(scope) && TYPE(scope) == T_STRING) {
|
3053
|
+
role.scope = std::string(RSTRING_PTR(scope), static_cast<size_t>(RSTRING_LEN(scope)));
|
3054
|
+
VALUE collection = rb_hash_aref(entry, rb_id2sym(rb_intern("collection")));
|
3055
|
+
if (!NIL_P(collection) && TYPE(collection) == T_STRING) {
|
3056
|
+
role.collection = std::string(RSTRING_PTR(collection), static_cast<size_t>(RSTRING_LEN(collection)));
|
3057
|
+
}
|
3058
|
+
}
|
3059
|
+
}
|
3060
|
+
req.user.roles.emplace_back(role);
|
3061
|
+
}
|
3062
|
+
}
|
3063
|
+
}
|
3064
|
+
|
3065
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::user_upsert_response>>();
|
3066
|
+
auto f = barrier->get_future();
|
3067
|
+
backend->cluster->execute_http(req,
|
3068
|
+
[barrier](couchbase::operations::user_upsert_response resp) mutable { barrier->set_value(resp); });
|
3069
|
+
auto resp = f.get();
|
3070
|
+
if (resp.ec) {
|
3071
|
+
exc = cb__map_error_code(
|
3072
|
+
resp.ec, fmt::format(R"(unable to upsert user "{}" ({}))", req.user.username, fmt::join(resp.errors, ", ")).c_str());
|
3073
|
+
break;
|
3074
|
+
}
|
3075
|
+
|
3076
|
+
return Qtrue;
|
3077
|
+
} while (false);
|
3078
|
+
rb_exc_raise(exc);
|
3079
|
+
return Qnil;
|
3080
|
+
}
|
3081
|
+
|
3082
|
+
static void
|
3083
|
+
cb__extract_group(const couchbase::operations::rbac::group& entry, VALUE group)
|
3084
|
+
{
|
3085
|
+
rb_hash_aset(group, rb_id2sym(rb_intern("name")), rb_str_new(entry.name.data(), static_cast<long>(entry.name.size())));
|
3086
|
+
if (entry.description) {
|
3087
|
+
rb_hash_aset(
|
3088
|
+
group, rb_id2sym(rb_intern("description")), rb_str_new(entry.description->data(), static_cast<long>(entry.description->size())));
|
3089
|
+
}
|
3090
|
+
if (entry.ldap_group_reference) {
|
3091
|
+
rb_hash_aset(group,
|
3092
|
+
rb_id2sym(rb_intern("ldap_group_reference")),
|
3093
|
+
rb_str_new(entry.ldap_group_reference->data(), static_cast<long>(entry.ldap_group_reference->size())));
|
3094
|
+
}
|
3095
|
+
VALUE roles = rb_ary_new_capa(static_cast<long>(entry.roles.size()));
|
3096
|
+
for (const auto& er : entry.roles) {
|
3097
|
+
VALUE role = rb_hash_new();
|
3098
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("name")), rb_str_new(er.name.data(), static_cast<long>(er.name.size())));
|
3099
|
+
if (er.bucket) {
|
3100
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("bucket")), rb_str_new(er.bucket->data(), static_cast<long>(er.bucket->size())));
|
3101
|
+
}
|
3102
|
+
if (er.scope) {
|
3103
|
+
rb_hash_aset(role, rb_id2sym(rb_intern("scope")), rb_str_new(er.scope->data(), static_cast<long>(er.scope->size())));
|
3104
|
+
}
|
3105
|
+
if (er.collection) {
|
3106
|
+
rb_hash_aset(
|
3107
|
+
role, rb_id2sym(rb_intern("collection")), rb_str_new(er.collection->data(), static_cast<long>(er.collection->size())));
|
3108
|
+
}
|
3109
|
+
rb_ary_push(roles, role);
|
3110
|
+
}
|
3111
|
+
rb_hash_aset(group, rb_id2sym(rb_intern("roles")), roles);
|
3112
|
+
}
|
3113
|
+
|
3114
|
+
static VALUE
|
3115
|
+
cb_Backend_group_get_all(VALUE self, VALUE timeout)
|
3116
|
+
{
|
3117
|
+
cb_backend_data* backend = nullptr;
|
3118
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
3119
|
+
|
3120
|
+
if (!backend->cluster) {
|
3121
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
3122
|
+
}
|
3123
|
+
|
3124
|
+
VALUE exc = Qnil;
|
3125
|
+
do {
|
3126
|
+
couchbase::operations::group_get_all_request req{};
|
3127
|
+
cb__extract_timeout(req, timeout);
|
3128
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::group_get_all_response>>();
|
3129
|
+
auto f = barrier->get_future();
|
3130
|
+
backend->cluster->execute_http(req,
|
3131
|
+
[barrier](couchbase::operations::group_get_all_response resp) mutable { barrier->set_value(resp); });
|
3132
|
+
auto resp = f.get();
|
3133
|
+
if (resp.ec) {
|
3134
|
+
exc = cb__map_error_code(resp.ec, "unable to fetch groups");
|
3135
|
+
break;
|
3136
|
+
}
|
3137
|
+
|
3138
|
+
VALUE res = rb_ary_new_capa(static_cast<long>(resp.groups.size()));
|
3139
|
+
for (const auto& entry : resp.groups) {
|
3140
|
+
VALUE group = rb_hash_new();
|
3141
|
+
cb__extract_group(entry, group);
|
3142
|
+
rb_ary_push(res, group);
|
3143
|
+
}
|
3144
|
+
return res;
|
3145
|
+
} while (false);
|
3146
|
+
rb_exc_raise(exc);
|
3147
|
+
return Qnil;
|
3148
|
+
}
|
3149
|
+
|
3150
|
+
static VALUE
|
3151
|
+
cb_Backend_group_get(VALUE self, VALUE name, VALUE timeout)
|
3152
|
+
{
|
3153
|
+
cb_backend_data* backend = nullptr;
|
3154
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
3155
|
+
|
3156
|
+
if (!backend->cluster) {
|
3157
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
3158
|
+
}
|
3159
|
+
|
3160
|
+
Check_Type(name, T_STRING);
|
3161
|
+
|
3162
|
+
VALUE exc = Qnil;
|
3163
|
+
do {
|
3164
|
+
couchbase::operations::group_get_request req{};
|
3165
|
+
cb__extract_timeout(req, timeout);
|
3166
|
+
req.name.assign(RSTRING_PTR(name), static_cast<size_t>(RSTRING_LEN(name)));
|
3167
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::group_get_response>>();
|
3168
|
+
auto f = barrier->get_future();
|
3169
|
+
backend->cluster->execute_http(req,
|
3170
|
+
[barrier](couchbase::operations::group_get_response resp) mutable { barrier->set_value(resp); });
|
3171
|
+
auto resp = f.get();
|
3172
|
+
if (resp.ec) {
|
3173
|
+
exc = cb__map_error_code(resp.ec, fmt::format(R"(unable to fetch group "{}")", req.name).c_str());
|
3174
|
+
break;
|
3175
|
+
}
|
3176
|
+
|
3177
|
+
VALUE res = rb_hash_new();
|
3178
|
+
cb__extract_group(resp.group, res);
|
3179
|
+
return res;
|
3180
|
+
} while (false);
|
3181
|
+
rb_exc_raise(exc);
|
3182
|
+
return Qnil;
|
3183
|
+
}
|
3184
|
+
|
3185
|
+
static VALUE
|
3186
|
+
cb_Backend_group_drop(VALUE self, VALUE name, VALUE timeout)
|
3187
|
+
{
|
3188
|
+
cb_backend_data* backend = nullptr;
|
3189
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
3190
|
+
|
3191
|
+
if (!backend->cluster) {
|
3192
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
3193
|
+
}
|
3194
|
+
|
3195
|
+
Check_Type(name, T_STRING);
|
3196
|
+
|
3197
|
+
VALUE exc = Qnil;
|
3198
|
+
do {
|
3199
|
+
couchbase::operations::group_drop_request req{};
|
3200
|
+
cb__extract_timeout(req, timeout);
|
3201
|
+
req.name.assign(RSTRING_PTR(name), static_cast<size_t>(RSTRING_LEN(name)));
|
3202
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::group_drop_response>>();
|
3203
|
+
auto f = barrier->get_future();
|
3204
|
+
backend->cluster->execute_http(req,
|
3205
|
+
[barrier](couchbase::operations::group_drop_response resp) mutable { barrier->set_value(resp); });
|
3206
|
+
auto resp = f.get();
|
3207
|
+
if (resp.ec) {
|
3208
|
+
exc = cb__map_error_code(resp.ec, fmt::format(R"(unable to drop group "{}")", req.name).c_str());
|
3209
|
+
break;
|
3210
|
+
}
|
3211
|
+
|
3212
|
+
return Qtrue;
|
3213
|
+
} while (false);
|
3214
|
+
rb_exc_raise(exc);
|
3215
|
+
return Qnil;
|
3216
|
+
}
|
3217
|
+
|
3218
|
+
static VALUE
|
3219
|
+
cb_Backend_group_upsert(VALUE self, VALUE group, VALUE timeout)
|
3220
|
+
{
|
3221
|
+
cb_backend_data* backend = nullptr;
|
3222
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
3223
|
+
|
3224
|
+
if (!backend->cluster) {
|
3225
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
3226
|
+
}
|
3227
|
+
|
3228
|
+
Check_Type(group, T_HASH);
|
3229
|
+
|
3230
|
+
VALUE exc = Qnil;
|
3231
|
+
do {
|
3232
|
+
couchbase::operations::group_upsert_request req{};
|
3233
|
+
cb__extract_timeout(req, timeout);
|
3234
|
+
VALUE name = rb_hash_aref(group, rb_id2sym(rb_intern("name")));
|
3235
|
+
if (NIL_P(name) || TYPE(name) != T_STRING) {
|
3236
|
+
exc = rb_exc_new_cstr(eInvalidArgument, "unable to upsert group: missing name");
|
3237
|
+
}
|
3238
|
+
req.group.name.assign(RSTRING_PTR(name), static_cast<size_t>(RSTRING_LEN(name)));
|
3239
|
+
VALUE ldap_group_ref = rb_hash_aref(group, rb_id2sym(rb_intern("ldap_group_reference")));
|
3240
|
+
if (!NIL_P(ldap_group_ref) && TYPE(ldap_group_ref) == T_STRING) {
|
3241
|
+
req.group.ldap_group_reference = std::string(RSTRING_PTR(ldap_group_ref), static_cast<size_t>(RSTRING_LEN(ldap_group_ref)));
|
3242
|
+
}
|
3243
|
+
VALUE description = rb_hash_aref(group, rb_id2sym(rb_intern("description")));
|
3244
|
+
if (!NIL_P(description) && TYPE(description) == T_STRING) {
|
3245
|
+
req.group.description = std::string(RSTRING_PTR(description), static_cast<size_t>(RSTRING_LEN(description)));
|
3246
|
+
}
|
3247
|
+
VALUE roles = rb_hash_aref(group, rb_id2sym(rb_intern("roles")));
|
3248
|
+
if (!NIL_P(roles) && TYPE(roles) == T_ARRAY) {
|
3249
|
+
auto roles_size = static_cast<size_t>(RARRAY_LEN(roles));
|
3250
|
+
req.group.roles.reserve(roles_size);
|
3251
|
+
for (size_t i = 0; i < roles_size; ++i) {
|
3252
|
+
VALUE entry = rb_ary_entry(roles, static_cast<long>(i));
|
3253
|
+
if (TYPE(entry) == T_HASH) {
|
3254
|
+
couchbase::operations::rbac::role role{};
|
3255
|
+
VALUE role_name = rb_hash_aref(entry, rb_id2sym(rb_intern("name")));
|
3256
|
+
role.name.assign(RSTRING_PTR(role_name), static_cast<size_t>(RSTRING_LEN(role_name)));
|
3257
|
+
VALUE bucket = rb_hash_aref(entry, rb_id2sym(rb_intern("bucket")));
|
3258
|
+
if (!NIL_P(bucket) && TYPE(bucket) == T_STRING) {
|
3259
|
+
role.bucket = std::string(RSTRING_PTR(bucket), static_cast<size_t>(RSTRING_LEN(bucket)));
|
3260
|
+
VALUE scope = rb_hash_aref(entry, rb_id2sym(rb_intern("scope")));
|
3261
|
+
if (!NIL_P(scope) && TYPE(scope) == T_STRING) {
|
3262
|
+
role.scope = std::string(RSTRING_PTR(scope), static_cast<size_t>(RSTRING_LEN(scope)));
|
3263
|
+
VALUE collection = rb_hash_aref(entry, rb_id2sym(rb_intern("collection")));
|
3264
|
+
if (!NIL_P(collection) && TYPE(collection) == T_STRING) {
|
3265
|
+
role.collection = std::string(RSTRING_PTR(collection), static_cast<size_t>(RSTRING_LEN(collection)));
|
3266
|
+
}
|
3267
|
+
}
|
3268
|
+
}
|
3269
|
+
req.group.roles.emplace_back(role);
|
3270
|
+
}
|
3271
|
+
}
|
3272
|
+
}
|
3273
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::group_upsert_response>>();
|
3274
|
+
auto f = barrier->get_future();
|
3275
|
+
backend->cluster->execute_http(req,
|
3276
|
+
[barrier](couchbase::operations::group_upsert_response resp) mutable { barrier->set_value(resp); });
|
3277
|
+
auto resp = f.get();
|
3278
|
+
if (resp.ec) {
|
3279
|
+
exc = cb__map_error_code(
|
3280
|
+
resp.ec, fmt::format(R"(unable to upsert group "{}" ({}))", req.group.name, fmt::join(resp.errors, ", ")).c_str());
|
3281
|
+
break;
|
3282
|
+
}
|
3283
|
+
|
3284
|
+
return Qtrue;
|
3285
|
+
} while (false);
|
3286
|
+
rb_exc_raise(exc);
|
3287
|
+
return Qnil;
|
3288
|
+
}
|
3289
|
+
|
2549
3290
|
static VALUE
|
2550
3291
|
cb_Backend_cluster_enable_developer_preview(VALUE self)
|
2551
3292
|
{
|
@@ -2629,6 +3370,58 @@ cb_Backend_scope_get_all(VALUE self, VALUE bucket_name, VALUE timeout)
|
|
2629
3370
|
return Qnil;
|
2630
3371
|
}
|
2631
3372
|
|
3373
|
+
static VALUE
|
3374
|
+
cb_Backend_collections_manifest_get(VALUE self, VALUE bucket_name, VALUE timeout)
|
3375
|
+
{
|
3376
|
+
cb_backend_data* backend = nullptr;
|
3377
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
3378
|
+
|
3379
|
+
if (!backend->cluster) {
|
3380
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
3381
|
+
}
|
3382
|
+
|
3383
|
+
Check_Type(bucket_name, T_STRING);
|
3384
|
+
|
3385
|
+
VALUE exc = Qnil;
|
3386
|
+
do {
|
3387
|
+
couchbase::operations::collections_manifest_get_request req{};
|
3388
|
+
cb__extract_timeout(req, timeout);
|
3389
|
+
req.id.bucket.assign(RSTRING_PTR(bucket_name), static_cast<size_t>(RSTRING_LEN(bucket_name)));
|
3390
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::collections_manifest_get_response>>();
|
3391
|
+
auto f = barrier->get_future();
|
3392
|
+
backend->cluster->execute(
|
3393
|
+
req, [barrier](couchbase::operations::collections_manifest_get_response resp) mutable { barrier->set_value(resp); });
|
3394
|
+
auto resp = f.get();
|
3395
|
+
if (resp.ec) {
|
3396
|
+
exc = cb__map_error_code(resp.ec, fmt::format("unable to get collections manifest of the bucket \"{}\"", req.id.bucket));
|
3397
|
+
break;
|
3398
|
+
}
|
3399
|
+
|
3400
|
+
VALUE res = rb_hash_new();
|
3401
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("uid")), ULL2NUM(resp.manifest.uid));
|
3402
|
+
VALUE scopes = rb_ary_new_capa(static_cast<long>(resp.manifest.scopes.size()));
|
3403
|
+
for (const auto& s : resp.manifest.scopes) {
|
3404
|
+
VALUE scope = rb_hash_new();
|
3405
|
+
rb_hash_aset(scope, rb_id2sym(rb_intern("uid")), ULL2NUM(s.uid));
|
3406
|
+
rb_hash_aset(scope, rb_id2sym(rb_intern("name")), rb_str_new(s.name.data(), static_cast<long>(s.name.size())));
|
3407
|
+
VALUE collections = rb_ary_new_capa(static_cast<long>(s.collections.size()));
|
3408
|
+
for (const auto& c : s.collections) {
|
3409
|
+
VALUE collection = rb_hash_new();
|
3410
|
+
rb_hash_aset(collection, rb_id2sym(rb_intern("uid")), ULL2NUM(c.uid));
|
3411
|
+
rb_hash_aset(collection, rb_id2sym(rb_intern("name")), rb_str_new(c.name.data(), static_cast<long>(c.name.size())));
|
3412
|
+
rb_ary_push(collections, collection);
|
3413
|
+
}
|
3414
|
+
rb_hash_aset(scope, rb_id2sym(rb_intern("collections")), collections);
|
3415
|
+
rb_ary_push(scopes, scope);
|
3416
|
+
}
|
3417
|
+
rb_hash_aset(res, rb_id2sym(rb_intern("scopes")), scopes);
|
3418
|
+
|
3419
|
+
return res;
|
3420
|
+
} while (false);
|
3421
|
+
rb_exc_raise(exc);
|
3422
|
+
return Qnil;
|
3423
|
+
}
|
3424
|
+
|
2632
3425
|
static VALUE
|
2633
3426
|
cb_Backend_scope_create(VALUE self, VALUE bucket_name, VALUE scope_name, VALUE timeout)
|
2634
3427
|
{
|
@@ -2654,7 +3447,8 @@ cb_Backend_scope_create(VALUE self, VALUE bucket_name, VALUE scope_name, VALUE t
|
|
2654
3447
|
[barrier](couchbase::operations::scope_create_response resp) mutable { barrier->set_value(resp); });
|
2655
3448
|
auto resp = f.get();
|
2656
3449
|
if (resp.ec) {
|
2657
|
-
exc = cb__map_error_code(resp.ec,
|
3450
|
+
exc = cb__map_error_code(resp.ec,
|
3451
|
+
fmt::format(R"(unable to create the scope "{}" on the bucket "{}")", req.scope_name, req.bucket_name));
|
2658
3452
|
break;
|
2659
3453
|
}
|
2660
3454
|
return ULL2NUM(resp.uid);
|
@@ -3525,6 +4319,71 @@ cb_Backend_search_index_get_documents_count(VALUE self, VALUE index_name, VALUE
|
|
3525
4319
|
return Qnil;
|
3526
4320
|
}
|
3527
4321
|
|
4322
|
+
static VALUE
|
4323
|
+
cb_Backend_search_index_get_stats(VALUE self, VALUE index_name, VALUE timeout)
|
4324
|
+
{
|
4325
|
+
cb_backend_data* backend = nullptr;
|
4326
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
4327
|
+
|
4328
|
+
if (!backend->cluster) {
|
4329
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
4330
|
+
}
|
4331
|
+
|
4332
|
+
Check_Type(index_name, T_STRING);
|
4333
|
+
VALUE exc = Qnil;
|
4334
|
+
do {
|
4335
|
+
couchbase::operations::search_index_get_stats_request req{};
|
4336
|
+
cb__extract_timeout(req, timeout);
|
4337
|
+
req.index_name.assign(RSTRING_PTR(index_name), static_cast<size_t>(RSTRING_LEN(index_name)));
|
4338
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::search_index_get_stats_response>>();
|
4339
|
+
auto f = barrier->get_future();
|
4340
|
+
backend->cluster->execute_http(
|
4341
|
+
req, [barrier](couchbase::operations::search_index_get_stats_response resp) mutable { barrier->set_value(resp); });
|
4342
|
+
auto resp = f.get();
|
4343
|
+
if (resp.ec) {
|
4344
|
+
if (resp.error.empty()) {
|
4345
|
+
exc = cb__map_error_code(resp.ec, fmt::format("unable to get stats for the search index \"{}\"", req.index_name));
|
4346
|
+
} else {
|
4347
|
+
exc = cb__map_error_code(resp.ec,
|
4348
|
+
fmt::format("unable to get stats for the search index \"{}\": {}", req.index_name, resp.error));
|
4349
|
+
}
|
4350
|
+
break;
|
4351
|
+
}
|
4352
|
+
return rb_str_new(resp.stats.data(), static_cast<long>(resp.stats.size()));
|
4353
|
+
} while (false);
|
4354
|
+
rb_exc_raise(exc);
|
4355
|
+
return Qnil;
|
4356
|
+
}
|
4357
|
+
|
4358
|
+
static VALUE
|
4359
|
+
cb_Backend_search_get_stats(VALUE self, VALUE timeout)
|
4360
|
+
{
|
4361
|
+
cb_backend_data* backend = nullptr;
|
4362
|
+
TypedData_Get_Struct(self, cb_backend_data, &cb_backend_type, backend);
|
4363
|
+
|
4364
|
+
if (!backend->cluster) {
|
4365
|
+
rb_raise(rb_eArgError, "Cluster has been closed already");
|
4366
|
+
}
|
4367
|
+
|
4368
|
+
VALUE exc = Qnil;
|
4369
|
+
do {
|
4370
|
+
couchbase::operations::search_index_stats_request req{};
|
4371
|
+
cb__extract_timeout(req, timeout);
|
4372
|
+
auto barrier = std::make_shared<std::promise<couchbase::operations::search_index_stats_response>>();
|
4373
|
+
auto f = barrier->get_future();
|
4374
|
+
backend->cluster->execute_http(
|
4375
|
+
req, [barrier](couchbase::operations::search_index_stats_response resp) mutable { barrier->set_value(resp); });
|
4376
|
+
auto resp = f.get();
|
4377
|
+
if (resp.ec) {
|
4378
|
+
exc = cb__map_error_code(resp.ec, "unable to get stats for the search service");
|
4379
|
+
break;
|
4380
|
+
}
|
4381
|
+
return rb_str_new(resp.stats.data(), static_cast<long>(resp.stats.size()));
|
4382
|
+
} while (false);
|
4383
|
+
rb_exc_raise(exc);
|
4384
|
+
return Qnil;
|
4385
|
+
}
|
4386
|
+
|
3528
4387
|
static VALUE
|
3529
4388
|
cb_Backend_search_index_pause_ingest(VALUE self, VALUE index_name, VALUE timeout)
|
3530
4389
|
{
|
@@ -3833,6 +4692,11 @@ cb_Backend_document_search(VALUE self, VALUE index_name, VALUE query, VALUE opti
|
|
3833
4692
|
req.explain = RTEST(explain);
|
3834
4693
|
}
|
3835
4694
|
|
4695
|
+
VALUE disable_scoring = rb_hash_aref(options, rb_id2sym(rb_intern("disable_scoring")));
|
4696
|
+
if (!NIL_P(disable_scoring)) {
|
4697
|
+
req.disable_scoring = RTEST(disable_scoring);
|
4698
|
+
}
|
4699
|
+
|
3836
4700
|
VALUE skip = rb_hash_aref(options, rb_id2sym(rb_intern("skip")));
|
3837
4701
|
if (!NIL_P(skip)) {
|
3838
4702
|
Check_Type(skip, T_FIXNUM);
|
@@ -3962,7 +4826,8 @@ cb_Backend_document_search(VALUE self, VALUE index_name, VALUE query, VALUE opti
|
|
3962
4826
|
backend->cluster->execute_http(req, [barrier](couchbase::operations::search_response resp) mutable { barrier->set_value(resp); });
|
3963
4827
|
auto resp = f.get();
|
3964
4828
|
if (resp.ec) {
|
3965
|
-
exc =
|
4829
|
+
exc =
|
4830
|
+
cb__map_error_code(resp.ec, fmt::format("unable to perform search query for index \"{}\": {}", req.index_name, resp.error));
|
3966
4831
|
break;
|
3967
4832
|
}
|
3968
4833
|
VALUE res = rb_hash_new();
|
@@ -5444,6 +6309,7 @@ init_backend(VALUE mCouchbase)
|
|
5444
6309
|
rb_define_method(cBackend, "open", VALUE_FUNC(cb_Backend_open), 3);
|
5445
6310
|
rb_define_method(cBackend, "close", VALUE_FUNC(cb_Backend_close), 0);
|
5446
6311
|
rb_define_method(cBackend, "open_bucket", VALUE_FUNC(cb_Backend_open_bucket), 2);
|
6312
|
+
rb_define_method(cBackend, "diagnostics", VALUE_FUNC(cb_Backend_diagnostics), 1);
|
5447
6313
|
|
5448
6314
|
rb_define_method(cBackend, "document_get", VALUE_FUNC(cb_Backend_document_get), 4);
|
5449
6315
|
rb_define_method(cBackend, "document_get_projected", VALUE_FUNC(cb_Backend_document_get_projected), 7);
|
@@ -5472,6 +6338,16 @@ init_backend(VALUE mCouchbase)
|
|
5472
6338
|
rb_define_method(cBackend, "bucket_get_all", VALUE_FUNC(cb_Backend_bucket_get_all), 1);
|
5473
6339
|
rb_define_method(cBackend, "bucket_get", VALUE_FUNC(cb_Backend_bucket_get), 2);
|
5474
6340
|
|
6341
|
+
rb_define_method(cBackend, "role_get_all", VALUE_FUNC(cb_Backend_role_get_all), 1);
|
6342
|
+
rb_define_method(cBackend, "user_get_all", VALUE_FUNC(cb_Backend_user_get_all), 2);
|
6343
|
+
rb_define_method(cBackend, "user_get", VALUE_FUNC(cb_Backend_user_get), 3);
|
6344
|
+
rb_define_method(cBackend, "user_drop", VALUE_FUNC(cb_Backend_user_drop), 3);
|
6345
|
+
rb_define_method(cBackend, "user_upsert", VALUE_FUNC(cb_Backend_user_upsert), 3);
|
6346
|
+
rb_define_method(cBackend, "group_get_all", VALUE_FUNC(cb_Backend_group_get_all), 1);
|
6347
|
+
rb_define_method(cBackend, "group_get", VALUE_FUNC(cb_Backend_group_get), 2);
|
6348
|
+
rb_define_method(cBackend, "group_drop", VALUE_FUNC(cb_Backend_group_drop), 2);
|
6349
|
+
rb_define_method(cBackend, "group_upsert", VALUE_FUNC(cb_Backend_group_upsert), 2);
|
6350
|
+
|
5475
6351
|
rb_define_method(cBackend, "cluster_enable_developer_preview!", VALUE_FUNC(cb_Backend_cluster_enable_developer_preview), 0);
|
5476
6352
|
|
5477
6353
|
rb_define_method(cBackend, "scope_get_all", VALUE_FUNC(cb_Backend_scope_get_all), 2);
|
@@ -5488,10 +6364,12 @@ init_backend(VALUE mCouchbase)
|
|
5488
6364
|
rb_define_method(cBackend, "query_index_build_deferred", VALUE_FUNC(cb_Backend_query_index_build_deferred), 2);
|
5489
6365
|
rb_define_method(cBackend, "query_index_watch", VALUE_FUNC(cb_Backend_query_index_watch), 4);
|
5490
6366
|
|
6367
|
+
rb_define_method(cBackend, "search_get_stats", VALUE_FUNC(cb_Backend_search_get_stats), 1);
|
5491
6368
|
rb_define_method(cBackend, "search_index_get_all", VALUE_FUNC(cb_Backend_search_index_get_all), 1);
|
5492
6369
|
rb_define_method(cBackend, "search_index_get", VALUE_FUNC(cb_Backend_search_index_get), 2);
|
5493
6370
|
rb_define_method(cBackend, "search_index_upsert", VALUE_FUNC(cb_Backend_search_index_upsert), 2);
|
5494
6371
|
rb_define_method(cBackend, "search_index_drop", VALUE_FUNC(cb_Backend_search_index_drop), 2);
|
6372
|
+
rb_define_method(cBackend, "search_index_get_stats", VALUE_FUNC(cb_Backend_search_index_get_stats), 2);
|
5495
6373
|
rb_define_method(cBackend, "search_index_get_documents_count", VALUE_FUNC(cb_Backend_search_index_get_documents_count), 2);
|
5496
6374
|
rb_define_method(cBackend, "search_index_pause_ingest", VALUE_FUNC(cb_Backend_search_index_pause_ingest), 2);
|
5497
6375
|
rb_define_method(cBackend, "search_index_resume_ingest", VALUE_FUNC(cb_Backend_search_index_resume_ingest), 2);
|
@@ -5518,6 +6396,8 @@ init_backend(VALUE mCouchbase)
|
|
5518
6396
|
rb_define_method(cBackend, "view_index_drop", VALUE_FUNC(cb_Backend_view_index_drop), 4);
|
5519
6397
|
rb_define_method(cBackend, "view_index_upsert", VALUE_FUNC(cb_Backend_view_index_upsert), 4);
|
5520
6398
|
|
6399
|
+
/* utility function that are not intended for public usage */
|
6400
|
+
rb_define_method(cBackend, "collections_manifest_get", VALUE_FUNC(cb_Backend_collections_manifest_get), 2);
|
5521
6401
|
rb_define_singleton_method(cBackend, "dns_srv", VALUE_FUNC(cb_Backend_dns_srv), 2);
|
5522
6402
|
rb_define_singleton_method(cBackend, "parse_connection_string", VALUE_FUNC(cb_Backend_parse_connection_string), 1);
|
5523
6403
|
}
|
@@ -5529,10 +6409,9 @@ init_logger()
|
|
5529
6409
|
|
5530
6410
|
auto env_val = spdlog::details::os::getenv("COUCHBASE_BACKEND_LOG_LEVEL");
|
5531
6411
|
if (env_val.empty()) {
|
5532
|
-
spdlog::set_level(spdlog::level::
|
6412
|
+
spdlog::set_level(spdlog::level::info);
|
5533
6413
|
} else {
|
5534
|
-
|
5535
|
-
spdlog::details::registry::instance().update_levels(std::move(levels));
|
6414
|
+
spdlog::cfg::helpers::load_levels(env_val);
|
5536
6415
|
}
|
5537
6416
|
|
5538
6417
|
couchbase::platform::install_backtrace_terminate_handler();
|