couchbase 3.0.0-universal-darwin-19 → 3.0.1-universal-darwin-19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/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/libcouchbase.bundle +0 -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 +171 -267
- 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
Binary file
|
@@ -1,149 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:protocols TCP, UDP and ICMP]
|
9
|
-
|
10
|
-
Asio provides off-the-shelf support for the internet protocols TCP, UDP and
|
11
|
-
ICMP.
|
12
|
-
|
13
|
-
[heading TCP Clients]
|
14
|
-
|
15
|
-
Hostname resolution is performed using a resolver, where host and service names
|
16
|
-
are looked up and converted into one or more endpoints:
|
17
|
-
|
18
|
-
ip::tcp::resolver resolver(my_io_context);
|
19
|
-
ip::tcp::resolver::query query("www.boost.org", "http");
|
20
|
-
ip::tcp::resolver::iterator iter = resolver.resolve(query);
|
21
|
-
ip::tcp::resolver::iterator end; // End marker.
|
22
|
-
while (iter != end)
|
23
|
-
{
|
24
|
-
ip::tcp::endpoint endpoint = *iter++;
|
25
|
-
std::cout << endpoint << std::endl;
|
26
|
-
}
|
27
|
-
|
28
|
-
The list of endpoints obtained above could contain both IPv4 and IPv6 endpoints,
|
29
|
-
so a program should try each of them until it finds one that works. This keeps the
|
30
|
-
client program independent of a specific IP version.
|
31
|
-
|
32
|
-
To simplify the development of protocol-independent programs, TCP clients may
|
33
|
-
establish connections using the free functions [link asio.reference.connect
|
34
|
-
connect()] and [link asio.reference.async_connect async_connect()]. These
|
35
|
-
operations try each endpoint in a list until the socket is successfully
|
36
|
-
connected. For example, a single call:
|
37
|
-
|
38
|
-
ip::tcp::socket socket(my_io_context);
|
39
|
-
asio::connect(socket, resolver.resolve(query));
|
40
|
-
|
41
|
-
will synchronously try all endpoints until one is successfully connected.
|
42
|
-
Similarly, an asynchronous connect may be performed by writing:
|
43
|
-
|
44
|
-
asio::async_connect(socket_, iter,
|
45
|
-
boost::bind(&client::handle_connect, this,
|
46
|
-
asio::placeholders::error));
|
47
|
-
|
48
|
-
// ...
|
49
|
-
|
50
|
-
void handle_connect(const error_code& error)
|
51
|
-
{
|
52
|
-
if (!error)
|
53
|
-
{
|
54
|
-
// Start read or write operations.
|
55
|
-
}
|
56
|
-
else
|
57
|
-
{
|
58
|
-
// Handle error.
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
When a specific endpoint is available, a socket can be created and connected:
|
63
|
-
|
64
|
-
ip::tcp::socket socket(my_io_context);
|
65
|
-
socket.connect(endpoint);
|
66
|
-
|
67
|
-
Data may be read from or written to a connected TCP socket using the [link
|
68
|
-
asio.reference.basic_stream_socket.receive receive()], [link
|
69
|
-
asio.reference.basic_stream_socket.async_receive async_receive()], [link
|
70
|
-
asio.reference.basic_stream_socket.send send()] or [link
|
71
|
-
asio.reference.basic_stream_socket.async_send async_send()] member functions.
|
72
|
-
However, as these could result in [link asio.overview.core.streams short writes
|
73
|
-
or reads], an application will typically use the following operations instead:
|
74
|
-
[link asio.reference.read read()], [link asio.reference.async_read
|
75
|
-
async_read()], [link asio.reference.write write()] and [link
|
76
|
-
asio.reference.async_write async_write()].
|
77
|
-
|
78
|
-
[heading TCP Servers]
|
79
|
-
|
80
|
-
A program uses an acceptor to accept incoming TCP connections:
|
81
|
-
|
82
|
-
ip::tcp::acceptor acceptor(my_io_context, my_endpoint);
|
83
|
-
...
|
84
|
-
ip::tcp::socket socket(my_io_context);
|
85
|
-
acceptor.accept(socket);
|
86
|
-
|
87
|
-
After a socket has been successfully accepted, it may be read from or written
|
88
|
-
to as illustrated for TCP clients above.
|
89
|
-
|
90
|
-
[heading UDP]
|
91
|
-
|
92
|
-
UDP hostname resolution is also performed using a resolver:
|
93
|
-
|
94
|
-
ip::udp::resolver resolver(my_io_context);
|
95
|
-
ip::udp::resolver::query query("localhost", "daytime");
|
96
|
-
ip::udp::resolver::iterator iter = resolver.resolve(query);
|
97
|
-
...
|
98
|
-
|
99
|
-
A UDP socket is typically bound to a local endpoint. The following code will
|
100
|
-
create an IP version 4 UDP socket and bind it to the "any" address on port
|
101
|
-
`12345`:
|
102
|
-
|
103
|
-
ip::udp::endpoint endpoint(ip::udp::v4(), 12345);
|
104
|
-
ip::udp::socket socket(my_io_context, endpoint);
|
105
|
-
|
106
|
-
Data may be read from or written to an unconnected UDP socket using the [link
|
107
|
-
asio.reference.basic_datagram_socket.receive_from receive_from()], [link
|
108
|
-
asio.reference.basic_datagram_socket.async_receive_from async_receive_from()],
|
109
|
-
[link asio.reference.basic_datagram_socket.send_to send_to()] or [link
|
110
|
-
asio.reference.basic_datagram_socket.async_send_to async_send_to()] member
|
111
|
-
functions. For a connected UDP socket, use the [link
|
112
|
-
asio.reference.basic_datagram_socket.receive receive()], [link
|
113
|
-
asio.reference.basic_datagram_socket.async_receive async_receive()], [link
|
114
|
-
asio.reference.basic_datagram_socket.send send()] or [link
|
115
|
-
asio.reference.basic_datagram_socket.async_send async_send()] member functions.
|
116
|
-
|
117
|
-
[heading ICMP]
|
118
|
-
|
119
|
-
As with TCP and UDP, ICMP hostname resolution is performed using a resolver:
|
120
|
-
|
121
|
-
ip::icmp::resolver resolver(my_io_context);
|
122
|
-
ip::icmp::resolver::query query("localhost", "");
|
123
|
-
ip::icmp::resolver::iterator iter = resolver.resolve(query);
|
124
|
-
...
|
125
|
-
|
126
|
-
An ICMP socket may be bound to a local endpoint. The following code will create
|
127
|
-
an IP version 6 ICMP socket and bind it to the "any" address:
|
128
|
-
|
129
|
-
ip::icmp::endpoint endpoint(ip::icmp::v6(), 0);
|
130
|
-
ip::icmp::socket socket(my_io_context, endpoint);
|
131
|
-
|
132
|
-
The port number is not used for ICMP.
|
133
|
-
|
134
|
-
Data may be read from or written to an unconnected ICMP socket using the [link
|
135
|
-
asio.reference.basic_raw_socket.receive_from receive_from()], [link
|
136
|
-
asio.reference.basic_raw_socket.async_receive_from async_receive_from()],
|
137
|
-
[link asio.reference.basic_raw_socket.send_to send_to()] or [link
|
138
|
-
asio.reference.basic_raw_socket.async_send_to async_send_to()] member
|
139
|
-
functions.
|
140
|
-
|
141
|
-
[heading See Also]
|
142
|
-
|
143
|
-
[link asio.reference.ip__tcp ip::tcp],
|
144
|
-
[link asio.reference.ip__udp ip::udp],
|
145
|
-
[link asio.reference.ip__icmp ip::icmp],
|
146
|
-
[link asio.tutorial.tutdaytime1 daytime protocol tutorials],
|
147
|
-
[link asio.examples.cpp03_examples.icmp ICMP ping example].
|
148
|
-
|
149
|
-
[endsect]
|
@@ -1,54 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:rationale Rationale]
|
9
|
-
|
10
|
-
Most programs interact with the outside world in some way, whether it be via a
|
11
|
-
file, a network, a serial cable, or the console. Sometimes, as is the case with
|
12
|
-
networking, individual I/O operations can take a long time to complete. This
|
13
|
-
poses particular challenges to application development.
|
14
|
-
|
15
|
-
Asio provides the tools to manage these long running operations, without
|
16
|
-
requiring programs to use concurrency models based on threads and explicit
|
17
|
-
locking.
|
18
|
-
|
19
|
-
The Asio library is intended for programmers using C++ for systems programming,
|
20
|
-
where access to operating system functionality such as networking is often
|
21
|
-
required. In particular, Asio addresses the following goals:
|
22
|
-
|
23
|
-
* [*Portability.] The library should support a range of commonly used operating
|
24
|
-
systems, and provide consistent behaviour across these operating systems.
|
25
|
-
|
26
|
-
* [*Scalability.] The library should facilitate the development of network
|
27
|
-
applications that scale to thousands of concurrent connections. The library
|
28
|
-
implementation for each operating system should use the mechanism that best
|
29
|
-
enables this scalability.
|
30
|
-
|
31
|
-
* [*Efficiency.] The library should support techniques such as scatter-gather
|
32
|
-
I/O, and allow programs to minimise data copying.
|
33
|
-
|
34
|
-
* [*Model concepts from established APIs, such as BSD sockets.] The
|
35
|
-
BSD socket API is widely implemented and understood, and is covered in much
|
36
|
-
literature. Other programming languages often use a similar interface for
|
37
|
-
networking APIs. As far as is reasonable, Asio should leverage existing
|
38
|
-
practice.
|
39
|
-
|
40
|
-
* [*Ease of use.] The library should provide a lower entry barrier for new
|
41
|
-
users by taking a toolkit, rather than framework, approach. That is, it should
|
42
|
-
try to minimise the up-front investment in time to just learning a few basic
|
43
|
-
rules and guidelines. After that, a library user should only need to understand
|
44
|
-
the specific functions that are being used.
|
45
|
-
|
46
|
-
* [*Basis for further abstraction.] The library should permit the development
|
47
|
-
of other libraries that provide higher levels of abstraction. For example,
|
48
|
-
implementations of commonly used protocols such as HTTP.
|
49
|
-
|
50
|
-
Although Asio started life focused primarily on networking, its concepts of
|
51
|
-
asynchronous I/O have been extended to include other operating system resources
|
52
|
-
such as serial ports, file descriptors, and so on.
|
53
|
-
|
54
|
-
[endsect]
|
@@ -1,44 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:reactor Reactor-Style Operations]
|
9
|
-
|
10
|
-
Sometimes a program must be integrated with a third-party library that wants to
|
11
|
-
perform the I/O operations itself. To facilitate this, Asio includes
|
12
|
-
synchronous and asynchronous operations that may be used to wait for a socket
|
13
|
-
to become ready to read, ready to write, or to have a pending error condition.
|
14
|
-
|
15
|
-
As an example, to perform a non-blocking read something like the following may
|
16
|
-
be used:
|
17
|
-
|
18
|
-
ip::tcp::socket socket(my_io_context);
|
19
|
-
...
|
20
|
-
socket.non_blocking(true);
|
21
|
-
...
|
22
|
-
socket.async_wait(ip::tcp::socket::wait_read, read_handler);
|
23
|
-
...
|
24
|
-
void read_handler(asio::error_code ec)
|
25
|
-
{
|
26
|
-
if (!ec)
|
27
|
-
{
|
28
|
-
std::vector<char> buf(socket.available());
|
29
|
-
socket.read_some(buffer(buf));
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
These operations are supported for sockets on all platforms, and for the POSIX
|
34
|
-
stream-oriented descriptor classes.
|
35
|
-
|
36
|
-
[heading See Also]
|
37
|
-
|
38
|
-
[link asio.reference.basic_socket.wait basic_socket::wait()],
|
39
|
-
[link asio.reference.basic_socket.async_wait basic_socket::async_wait()],
|
40
|
-
[link asio.reference.basic_socket.non_blocking basic_socket::non_blocking()],
|
41
|
-
[link asio.reference.basic_socket.native_non_blocking basic_socket::native_non_blocking()],
|
42
|
-
[link asio.examples.cpp03_examples.nonblocking nonblocking example].
|
43
|
-
|
44
|
-
[endsect]
|
@@ -1,45 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:serial_ports Serial Ports]
|
9
|
-
|
10
|
-
Asio includes classes for creating and manipulating serial ports in a portable
|
11
|
-
manner. For example, a serial port may be opened using:
|
12
|
-
|
13
|
-
serial_port port(my_io_context, name);
|
14
|
-
|
15
|
-
where name is something like `"COM1"` on Windows, and `"/dev/ttyS0"` on POSIX
|
16
|
-
platforms.
|
17
|
-
|
18
|
-
Once opened, the serial port may be used as a [link asio.overview.core.streams
|
19
|
-
stream]. This means the objects can be used with any of the [link
|
20
|
-
asio.reference.read read()], [link asio.reference.async_read async_read()],
|
21
|
-
[link asio.reference.write write()], [link asio.reference.async_write
|
22
|
-
async_write()], [link asio.reference.read_until read_until()] or [link
|
23
|
-
asio.reference.async_read_until async_read_until()] free functions.
|
24
|
-
|
25
|
-
The serial port implementation also includes option classes for configuring the
|
26
|
-
port's baud rate, flow control type, parity, stop bits and character size.
|
27
|
-
|
28
|
-
[heading See Also]
|
29
|
-
|
30
|
-
[link asio.reference.serial_port serial_port],
|
31
|
-
[link asio.reference.serial_port_base serial_port_base],
|
32
|
-
[link asio.reference.serial_port_base__baud_rate serial_port_base::baud_rate],
|
33
|
-
[link asio.reference.serial_port_base__flow_control serial_port_base::flow_control],
|
34
|
-
[link asio.reference.serial_port_base__parity serial_port_base::parity],
|
35
|
-
[link asio.reference.serial_port_base__stop_bits serial_port_base::stop_bits],
|
36
|
-
[link asio.reference.serial_port_base__character_size serial_port_base::character_size].
|
37
|
-
|
38
|
-
[heading Notes]
|
39
|
-
|
40
|
-
Serial ports are available on all POSIX platforms. For Windows, serial ports
|
41
|
-
are only available at compile time when the I/O completion port backend is used
|
42
|
-
(which is the default). A program may test for the macro
|
43
|
-
`ASIO_HAS_SERIAL_PORT` to determine whether they are supported.
|
44
|
-
|
45
|
-
[endsect]
|
@@ -1,44 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:signals Signal Handling]
|
9
|
-
|
10
|
-
Asio supports signal handling using a class called [link
|
11
|
-
asio.reference.signal_set signal_set]. Programs may add one or more signals to
|
12
|
-
the set, and then perform an `async_wait()` operation. The specified handler
|
13
|
-
will be called when one of the signals occurs. The same signal number may be
|
14
|
-
registered with multiple [link asio.reference.signal_set signal_set] objects,
|
15
|
-
however the signal number must be used only with Asio.
|
16
|
-
|
17
|
-
void handler(
|
18
|
-
const asio::error_code& error,
|
19
|
-
int signal_number)
|
20
|
-
{
|
21
|
-
if (!error)
|
22
|
-
{
|
23
|
-
// A signal occurred.
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
...
|
28
|
-
|
29
|
-
// Construct a signal set registered for process termination.
|
30
|
-
asio::signal_set signals(io_context, SIGINT, SIGTERM);
|
31
|
-
|
32
|
-
// Start an asynchronous wait for one of the signals to occur.
|
33
|
-
signals.async_wait(handler);
|
34
|
-
|
35
|
-
Signal handling also works on Windows, as the Microsoft Visual C++ runtime
|
36
|
-
library maps console events like Ctrl+C to the equivalent signal.
|
37
|
-
|
38
|
-
[heading See Also]
|
39
|
-
|
40
|
-
[link asio.reference.signal_set signal_set],
|
41
|
-
[link asio.examples.cpp03_examples.http_server HTTP server example (C++03)],
|
42
|
-
[link asio.examples.cpp11_examples.http_server HTTP server example (C++11)].
|
43
|
-
|
44
|
-
[endsect]
|
@@ -1,102 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:spawn Stackful Coroutines]
|
9
|
-
|
10
|
-
The [link asio.reference.spawn `spawn()`] function is a high-level wrapper for
|
11
|
-
running stackful coroutines. It is based on the Boost.Coroutine library. The
|
12
|
-
`spawn()` function enables programs to implement asynchronous logic in a
|
13
|
-
synchronous manner, as shown in the following example:
|
14
|
-
|
15
|
-
asio::spawn(my_strand, do_echo);
|
16
|
-
|
17
|
-
// ...
|
18
|
-
|
19
|
-
void do_echo(asio::yield_context yield)
|
20
|
-
{
|
21
|
-
try
|
22
|
-
{
|
23
|
-
char data[128];
|
24
|
-
for (;;)
|
25
|
-
{
|
26
|
-
std::size_t length =
|
27
|
-
my_socket.async_read_some(
|
28
|
-
asio::buffer(data), yield);
|
29
|
-
|
30
|
-
asio::async_write(my_socket,
|
31
|
-
asio::buffer(data, length), yield);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
catch (std::exception& e)
|
35
|
-
{
|
36
|
-
// ...
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
The first argument to `spawn()` may be a
|
41
|
-
[link asio.reference.io_context__strand `strand`],
|
42
|
-
[link asio.reference.io_context `io_context`], or
|
43
|
-
[link asio.reference.CompletionHandler completion handler].
|
44
|
-
This argument determines the context in which the coroutine is permitted to
|
45
|
-
execute. For example, a server's per-client object may consist of multiple
|
46
|
-
coroutines; they should all run on the same `strand` so that no explicit
|
47
|
-
synchronisation is required.
|
48
|
-
|
49
|
-
The second argument is a function object with signature:
|
50
|
-
|
51
|
-
void coroutine(asio::yield_context yield);
|
52
|
-
|
53
|
-
that specifies the code to be run as part of the coroutine. The parameter
|
54
|
-
`yield` may be passed to an asynchronous operation in place of the completion
|
55
|
-
handler, as in:
|
56
|
-
|
57
|
-
std::size_t length =
|
58
|
-
my_socket.async_read_some(
|
59
|
-
asio::buffer(data), yield);
|
60
|
-
|
61
|
-
This starts the asynchronous operation and suspends the coroutine. The
|
62
|
-
coroutine will be resumed automatically when the asynchronous operation
|
63
|
-
completes.
|
64
|
-
|
65
|
-
Where an asynchronous operation's handler signature has the form:
|
66
|
-
|
67
|
-
void handler(asio::error_code ec, result_type result);
|
68
|
-
|
69
|
-
the initiating function returns the result_type. In the `async_read_some`
|
70
|
-
example above, this is `size_t`. If the asynchronous operation fails, the
|
71
|
-
`error_code` is converted into a `system_error` exception and thrown.
|
72
|
-
|
73
|
-
Where a handler signature has the form:
|
74
|
-
|
75
|
-
void handler(asio::error_code ec);
|
76
|
-
|
77
|
-
the initiating function returns `void`. As above, an error is passed back to
|
78
|
-
the coroutine as a `system_error` exception.
|
79
|
-
|
80
|
-
To collect the `error_code` from an operation, rather than have it throw an
|
81
|
-
exception, associate the output variable with the `yield_context` as follows:
|
82
|
-
|
83
|
-
asio::error_code ec;
|
84
|
-
std::size_t length =
|
85
|
-
my_socket.async_read_some(
|
86
|
-
asio::buffer(data), yield[ec]);
|
87
|
-
|
88
|
-
[*Note:] if `spawn()` is used with a custom completion handler of type
|
89
|
-
`Handler`, the function object signature is actually:
|
90
|
-
|
91
|
-
void coroutine(asio::basic_yield_context<Handler> yield);
|
92
|
-
|
93
|
-
[heading See Also]
|
94
|
-
|
95
|
-
[link asio.reference.spawn spawn],
|
96
|
-
[link asio.reference.yield_context yield_context],
|
97
|
-
[link asio.reference.basic_yield_context basic_yield_context],
|
98
|
-
[link asio.examples.cpp03_examples.spawn Spawn example (C++03)],
|
99
|
-
[link asio.examples.cpp11_examples.spawn Spawn example (C++11)],
|
100
|
-
[link asio.overview.core.coroutine Stackless Coroutines].
|
101
|
-
|
102
|
-
[endsect]
|
@@ -1,124 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:ssl SSL]
|
9
|
-
|
10
|
-
Asio contains classes and class templates for basic SSL support. These classes
|
11
|
-
allow encrypted communication to be layered on top of an existing stream, such
|
12
|
-
as a TCP socket.
|
13
|
-
|
14
|
-
Before creating an encrypted stream, an application must construct an SSL
|
15
|
-
context object. This object is used to set SSL options such as verification
|
16
|
-
mode, certificate files, and so on. As an illustration, client-side
|
17
|
-
initialisation may look something like:
|
18
|
-
|
19
|
-
ssl::context ctx(ssl::context::sslv23);
|
20
|
-
ctx.set_verify_mode(ssl::verify_peer);
|
21
|
-
ctx.load_verify_file("ca.pem");
|
22
|
-
|
23
|
-
To use SSL with a TCP socket, one may write:
|
24
|
-
|
25
|
-
ssl::stream<ip::tcp::socket> ssl_sock(my_io_context, ctx);
|
26
|
-
|
27
|
-
To perform socket-specific operations, such as establishing an outbound
|
28
|
-
connection or accepting an incoming one, the underlying socket must first be
|
29
|
-
obtained using the `ssl::stream` template's [link
|
30
|
-
asio.reference.ssl__stream.lowest_layer `lowest_layer()`] member function:
|
31
|
-
|
32
|
-
ip::tcp::socket::lowest_layer_type& sock = ssl_sock.lowest_layer();
|
33
|
-
sock.connect(my_endpoint);
|
34
|
-
|
35
|
-
In some use cases the underlying stream object will need to have a longer
|
36
|
-
lifetime than the SSL stream, in which case the template parameter should be a
|
37
|
-
reference to the stream type:
|
38
|
-
|
39
|
-
ip::tcp::socket sock(my_io_context);
|
40
|
-
ssl::stream<ip::tcp::socket&> ssl_sock(sock, ctx);
|
41
|
-
|
42
|
-
SSL handshaking must be performed prior to transmitting or receiving data over
|
43
|
-
an encrypted connection. This is accomplished using the `ssl::stream`
|
44
|
-
template's [link asio.reference.ssl__stream.handshake handshake()] or [link
|
45
|
-
asio.reference.ssl__stream.async_handshake async_handshake()] member functions.
|
46
|
-
|
47
|
-
Once connected, SSL stream objects are used as synchronous or asynchronous read
|
48
|
-
and write streams. This means the objects can be used with any of the [link
|
49
|
-
asio.reference.read read()], [link asio.reference.async_read async_read()],
|
50
|
-
[link asio.reference.write write()], [link asio.reference.async_write
|
51
|
-
async_write()], [link asio.reference.read_until read_until()] or [link
|
52
|
-
asio.reference.async_read_until async_read_until()] free functions.
|
53
|
-
|
54
|
-
[heading Certificate Verification]
|
55
|
-
|
56
|
-
Asio provides various methods for configuring the way SSL certificates are
|
57
|
-
verified:
|
58
|
-
|
59
|
-
* [link asio.reference.ssl__context.set_default_verify_paths ssl::context::set_default_verify_paths()]
|
60
|
-
* [link asio.reference.ssl__context.set_verify_mode ssl::context::set_verify_mode()]
|
61
|
-
* [link asio.reference.ssl__context.set_verify_callback ssl::context::set_verify_callback()]
|
62
|
-
* [link asio.reference.ssl__context.load_verify_file ssl::context::load_verify_file()]
|
63
|
-
* [link asio.reference.ssl__stream.set_verify_mode ssl::stream::set_verify_mode()]
|
64
|
-
* [link asio.reference.ssl__stream.set_verify_callback ssl::stream::set_verify_callback()]
|
65
|
-
|
66
|
-
To simplify use cases where certificates are verified according to the rules in
|
67
|
-
RFC 6125 (identity verification in the context of Transport Layer Security),
|
68
|
-
Asio provides a reusable verification callback as a function object:
|
69
|
-
|
70
|
-
* [link asio.reference.ssl__host_name_verification ssl::host_name_verification]
|
71
|
-
|
72
|
-
The following example shows verification of a remote host's certificate
|
73
|
-
according to the rules used by HTTPS:
|
74
|
-
|
75
|
-
using asio::ip::tcp;
|
76
|
-
namespace ssl = asio::ssl;
|
77
|
-
typedef ssl::stream<tcp::socket> ssl_socket;
|
78
|
-
|
79
|
-
// Create a context that uses the default paths for
|
80
|
-
// finding CA certificates.
|
81
|
-
ssl::context ctx(ssl::context::sslv23);
|
82
|
-
ctx.set_default_verify_paths();
|
83
|
-
|
84
|
-
// Open a socket and connect it to the remote host.
|
85
|
-
asio::io_context io_context;
|
86
|
-
ssl_socket sock(io_context, ctx);
|
87
|
-
tcp::resolver resolver(io_context);
|
88
|
-
tcp::resolver::query query("host.name", "https");
|
89
|
-
asio::connect(sock.lowest_layer(), resolver.resolve(query));
|
90
|
-
sock.lowest_layer().set_option(tcp::no_delay(true));
|
91
|
-
|
92
|
-
// Perform SSL handshake and verify the remote host's
|
93
|
-
// certificate.
|
94
|
-
sock.set_verify_mode(ssl::verify_peer);
|
95
|
-
sock.set_verify_callback(ssl::host_name_verification("host.name"));
|
96
|
-
sock.handshake(ssl_socket::client);
|
97
|
-
|
98
|
-
// ... read and write as normal ...
|
99
|
-
|
100
|
-
[heading SSL and Threads]
|
101
|
-
|
102
|
-
SSL stream objects perform no locking of their own. Therefore, it is essential
|
103
|
-
that all asynchronous SSL operations are performed in an implicit or explicit
|
104
|
-
[link asio.overview.core.strands strand]. Note that this means that no
|
105
|
-
synchronisation is required (and so no locking overhead is incurred) in single
|
106
|
-
threaded programs.
|
107
|
-
|
108
|
-
[heading See Also]
|
109
|
-
|
110
|
-
[link asio.reference.ssl__context ssl::context],
|
111
|
-
[link asio.reference.ssl__host_name_verification ssl::host_name_verification],
|
112
|
-
[link asio.reference.ssl__stream ssl::stream],
|
113
|
-
[link asio.examples.cpp03_examples.ssl SSL example (C++03)],
|
114
|
-
[link asio.examples.cpp11_examples.ssl SSL example (C++11)].
|
115
|
-
|
116
|
-
[heading Notes]
|
117
|
-
|
118
|
-
[@http://www.openssl.org OpenSSL] is required to make use of Asio's SSL
|
119
|
-
support. When an application needs to use OpenSSL functionality that is not
|
120
|
-
wrapped by Asio, the underlying OpenSSL types may be obtained by calling [link
|
121
|
-
asio.reference.ssl__context.native_handle `ssl::context::native_handle()`] or
|
122
|
-
[link asio.reference.ssl__stream.native_handle `ssl::stream::native_handle()`].
|
123
|
-
|
124
|
-
[endsect]
|