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
@@ -16,14 +16,25 @@
|
|
16
16
|
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
17
17
|
|
18
18
|
#include "asio/detail/config.hpp"
|
19
|
-
#include "asio/detail/
|
19
|
+
#include "asio/detail/atomic_count.hpp"
|
20
20
|
#include "asio/detail/scheduler.hpp"
|
21
21
|
#include "asio/detail/thread_group.hpp"
|
22
|
+
#include "asio/execution.hpp"
|
22
23
|
#include "asio/execution_context.hpp"
|
23
24
|
|
24
25
|
#include "asio/detail/push_options.hpp"
|
25
26
|
|
26
27
|
namespace asio {
|
28
|
+
namespace detail {
|
29
|
+
struct thread_pool_bits
|
30
|
+
{
|
31
|
+
ASIO_STATIC_CONSTEXPR(unsigned int, blocking_never = 1);
|
32
|
+
ASIO_STATIC_CONSTEXPR(unsigned int, blocking_always = 2);
|
33
|
+
ASIO_STATIC_CONSTEXPR(unsigned int, blocking_mask = 3);
|
34
|
+
ASIO_STATIC_CONSTEXPR(unsigned int, relationship_continuation = 4);
|
35
|
+
ASIO_STATIC_CONSTEXPR(unsigned int, outstanding_work_tracked = 8);
|
36
|
+
};
|
37
|
+
} // namespace detail
|
27
38
|
|
28
39
|
/// A simple fixed-size thread pool.
|
29
40
|
/**
|
@@ -32,7 +43,7 @@ namespace asio {
|
|
32
43
|
*
|
33
44
|
* @par Submitting tasks to the pool
|
34
45
|
*
|
35
|
-
* To submit functions to the
|
46
|
+
* To submit functions to the thread pool, use the @ref asio::dispatch,
|
36
47
|
* @ref asio::post or @ref asio::defer free functions.
|
37
48
|
*
|
38
49
|
* For example:
|
@@ -64,10 +75,22 @@ class thread_pool
|
|
64
75
|
: public execution_context
|
65
76
|
{
|
66
77
|
public:
|
67
|
-
|
78
|
+
template <typename Allocator, unsigned int Bits>
|
79
|
+
class basic_executor_type;
|
80
|
+
|
81
|
+
template <typename Allocator, unsigned int Bits>
|
82
|
+
friend class basic_executor_type;
|
83
|
+
|
84
|
+
/// Executor used to submit functions to a thread pool.
|
85
|
+
typedef basic_executor_type<std::allocator<void>, 0> executor_type;
|
68
86
|
|
87
|
+
/// Scheduler used to schedule receivers on a thread pool.
|
88
|
+
typedef basic_executor_type<std::allocator<void>, 0> scheduler_type;
|
89
|
+
|
90
|
+
#if !defined(ASIO_NO_TS_EXECUTORS)
|
69
91
|
/// Constructs a pool with an automatically determined number of threads.
|
70
92
|
ASIO_DECL thread_pool();
|
93
|
+
#endif // !defined(ASIO_NO_TS_EXECUTORS)
|
71
94
|
|
72
95
|
/// Constructs a pool with a specified number of threads.
|
73
96
|
ASIO_DECL thread_pool(std::size_t num_threads);
|
@@ -81,6 +104,12 @@ public:
|
|
81
104
|
/// Obtains the executor associated with the pool.
|
82
105
|
executor_type get_executor() ASIO_NOEXCEPT;
|
83
106
|
|
107
|
+
/// Obtains the executor associated with the pool.
|
108
|
+
executor_type executor() ASIO_NOEXCEPT;
|
109
|
+
|
110
|
+
/// Obtains the scheduler associated with the pool.
|
111
|
+
scheduler_type scheduler() ASIO_NOEXCEPT;
|
112
|
+
|
84
113
|
/// Stops the threads.
|
85
114
|
/**
|
86
115
|
* This function stops the threads as soon as possible. As a result of calling
|
@@ -88,6 +117,14 @@ public:
|
|
88
117
|
*/
|
89
118
|
ASIO_DECL void stop();
|
90
119
|
|
120
|
+
/// Attaches the current thread to the pool.
|
121
|
+
/**
|
122
|
+
* This function attaches the current thread to the pool so that it may be
|
123
|
+
* used for executing submitted function objects. Blocks the calling thread
|
124
|
+
* until the pool is stopped or joined and has no outstanding work.
|
125
|
+
*/
|
126
|
+
ASIO_DECL void attach();
|
127
|
+
|
91
128
|
/// Joins the threads.
|
92
129
|
/**
|
93
130
|
* This function blocks until the threads in the pool have completed. If @c
|
@@ -96,8 +133,18 @@ public:
|
|
96
133
|
*/
|
97
134
|
ASIO_DECL void join();
|
98
135
|
|
136
|
+
/// Waits for threads to complete.
|
137
|
+
/**
|
138
|
+
* This function blocks until the threads in the pool have completed. If @c
|
139
|
+
* stop() is not called prior to @c wait(), the @c wait() call will wait
|
140
|
+
* until the pool has no more outstanding work.
|
141
|
+
*/
|
142
|
+
ASIO_DECL void wait();
|
143
|
+
|
99
144
|
private:
|
100
|
-
|
145
|
+
thread_pool(const thread_pool&) ASIO_DELETED;
|
146
|
+
thread_pool& operator=(const thread_pool&) ASIO_DELETED;
|
147
|
+
|
101
148
|
struct thread_function;
|
102
149
|
|
103
150
|
// Helper function to create the underlying scheduler.
|
@@ -108,12 +155,485 @@ private:
|
|
108
155
|
|
109
156
|
// The threads in the pool.
|
110
157
|
detail::thread_group threads_;
|
158
|
+
|
159
|
+
// The current number of threads in the pool.
|
160
|
+
detail::atomic_count num_threads_;
|
111
161
|
};
|
112
162
|
|
113
|
-
/// Executor used to submit functions to a thread pool.
|
114
|
-
|
163
|
+
/// Executor implementation type used to submit functions to a thread pool.
|
164
|
+
template <typename Allocator, unsigned int Bits>
|
165
|
+
class thread_pool::basic_executor_type : detail::thread_pool_bits
|
115
166
|
{
|
116
167
|
public:
|
168
|
+
/// The sender type, when this type is used as a scheduler.
|
169
|
+
typedef basic_executor_type sender_type;
|
170
|
+
|
171
|
+
/// The bulk execution shape type.
|
172
|
+
typedef std::size_t shape_type;
|
173
|
+
|
174
|
+
/// The bulk execution index type.
|
175
|
+
typedef std::size_t index_type;
|
176
|
+
|
177
|
+
#if defined(ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT) \
|
178
|
+
&& defined(ASIO_HAS_STD_EXCEPTION_PTR)
|
179
|
+
template <
|
180
|
+
template <typename...> class Tuple,
|
181
|
+
template <typename...> class Variant>
|
182
|
+
using value_types = Variant<Tuple<>>;
|
183
|
+
|
184
|
+
template <template <typename...> class Variant>
|
185
|
+
using error_types = Variant<std::exception_ptr>;
|
186
|
+
|
187
|
+
ASIO_STATIC_CONSTEXPR(bool, sends_done = true);
|
188
|
+
#endif // defined(ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT)
|
189
|
+
// && defined(ASIO_HAS_STD_EXCEPTION_PTR)
|
190
|
+
|
191
|
+
/// Copy constructor.
|
192
|
+
basic_executor_type(
|
193
|
+
const basic_executor_type& other) ASIO_NOEXCEPT
|
194
|
+
: pool_(other.pool_),
|
195
|
+
allocator_(other.allocator_),
|
196
|
+
bits_(other.bits_)
|
197
|
+
{
|
198
|
+
if (Bits & outstanding_work_tracked)
|
199
|
+
if (pool_)
|
200
|
+
pool_->scheduler_.work_started();
|
201
|
+
}
|
202
|
+
|
203
|
+
#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
204
|
+
/// Move constructor.
|
205
|
+
basic_executor_type(basic_executor_type&& other) ASIO_NOEXCEPT
|
206
|
+
: pool_(other.pool_),
|
207
|
+
allocator_(ASIO_MOVE_CAST(Allocator)(other.allocator_)),
|
208
|
+
bits_(other.bits_)
|
209
|
+
{
|
210
|
+
if (Bits & outstanding_work_tracked)
|
211
|
+
other.pool_ = 0;
|
212
|
+
}
|
213
|
+
#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
214
|
+
|
215
|
+
/// Destructor.
|
216
|
+
~basic_executor_type() ASIO_NOEXCEPT
|
217
|
+
{
|
218
|
+
if (Bits & outstanding_work_tracked)
|
219
|
+
if (pool_)
|
220
|
+
pool_->scheduler_.work_finished();
|
221
|
+
}
|
222
|
+
|
223
|
+
/// Assignment operator.
|
224
|
+
basic_executor_type& operator=(
|
225
|
+
const basic_executor_type& other) ASIO_NOEXCEPT;
|
226
|
+
|
227
|
+
#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
228
|
+
/// Move assignment operator.
|
229
|
+
basic_executor_type& operator=(
|
230
|
+
basic_executor_type&& other) ASIO_NOEXCEPT;
|
231
|
+
#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
232
|
+
|
233
|
+
/// Obtain an executor with the @c blocking.possibly property.
|
234
|
+
/**
|
235
|
+
* Do not call this function directly. It is intended for use with the
|
236
|
+
* asio::require customisation point.
|
237
|
+
*
|
238
|
+
* For example:
|
239
|
+
* @code auto ex1 = my_thread_pool.executor();
|
240
|
+
* auto ex2 = asio::require(ex1,
|
241
|
+
* asio::execution::blocking.possibly); @endcode
|
242
|
+
*/
|
243
|
+
ASIO_CONSTEXPR basic_executor_type<Allocator,
|
244
|
+
ASIO_UNSPECIFIED(Bits & ~blocking_mask)>
|
245
|
+
require(execution::blocking_t::possibly_t) const
|
246
|
+
{
|
247
|
+
return basic_executor_type<Allocator, Bits & ~blocking_mask>(
|
248
|
+
pool_, allocator_, bits_ & ~blocking_mask);
|
249
|
+
}
|
250
|
+
|
251
|
+
/// Obtain an executor with the @c blocking.always property.
|
252
|
+
/**
|
253
|
+
* Do not call this function directly. It is intended for use with the
|
254
|
+
* asio::require customisation point.
|
255
|
+
*
|
256
|
+
* For example:
|
257
|
+
* @code auto ex1 = my_thread_pool.executor();
|
258
|
+
* auto ex2 = asio::require(ex1,
|
259
|
+
* asio::execution::blocking.always); @endcode
|
260
|
+
*/
|
261
|
+
ASIO_CONSTEXPR basic_executor_type<Allocator,
|
262
|
+
ASIO_UNSPECIFIED((Bits & ~blocking_mask) | blocking_always)>
|
263
|
+
require(execution::blocking_t::always_t) const
|
264
|
+
{
|
265
|
+
return basic_executor_type<Allocator,
|
266
|
+
ASIO_UNSPECIFIED((Bits & ~blocking_mask) | blocking_always)>(
|
267
|
+
pool_, allocator_, bits_ & ~blocking_mask);
|
268
|
+
}
|
269
|
+
|
270
|
+
/// Obtain an executor with the @c blocking.never property.
|
271
|
+
/**
|
272
|
+
* Do not call this function directly. It is intended for use with the
|
273
|
+
* asio::require customisation point.
|
274
|
+
*
|
275
|
+
* For example:
|
276
|
+
* @code auto ex1 = my_thread_pool.executor();
|
277
|
+
* auto ex2 = asio::require(ex1,
|
278
|
+
* asio::execution::blocking.never); @endcode
|
279
|
+
*/
|
280
|
+
ASIO_CONSTEXPR basic_executor_type<Allocator,
|
281
|
+
ASIO_UNSPECIFIED(Bits & ~blocking_mask)>
|
282
|
+
require(execution::blocking_t::never_t) const
|
283
|
+
{
|
284
|
+
return basic_executor_type<Allocator, Bits & ~blocking_mask>(
|
285
|
+
pool_, allocator_, (bits_ & ~blocking_mask) | blocking_never);
|
286
|
+
}
|
287
|
+
|
288
|
+
/// Obtain an executor with the @c relationship.fork property.
|
289
|
+
/**
|
290
|
+
* Do not call this function directly. It is intended for use with the
|
291
|
+
* asio::require customisation point.
|
292
|
+
*
|
293
|
+
* For example:
|
294
|
+
* @code auto ex1 = my_thread_pool.executor();
|
295
|
+
* auto ex2 = asio::require(ex1,
|
296
|
+
* asio::execution::relationship.fork); @endcode
|
297
|
+
*/
|
298
|
+
ASIO_CONSTEXPR basic_executor_type require(
|
299
|
+
execution::relationship_t::fork_t) const
|
300
|
+
{
|
301
|
+
return basic_executor_type(pool_,
|
302
|
+
allocator_, bits_ & ~relationship_continuation);
|
303
|
+
}
|
304
|
+
|
305
|
+
/// Obtain an executor with the @c relationship.continuation property.
|
306
|
+
/**
|
307
|
+
* Do not call this function directly. It is intended for use with the
|
308
|
+
* asio::require customisation point.
|
309
|
+
*
|
310
|
+
* For example:
|
311
|
+
* @code auto ex1 = my_thread_pool.executor();
|
312
|
+
* auto ex2 = asio::require(ex1,
|
313
|
+
* asio::execution::relationship.continuation); @endcode
|
314
|
+
*/
|
315
|
+
ASIO_CONSTEXPR basic_executor_type require(
|
316
|
+
execution::relationship_t::continuation_t) const
|
317
|
+
{
|
318
|
+
return basic_executor_type(pool_,
|
319
|
+
allocator_, bits_ | relationship_continuation);
|
320
|
+
}
|
321
|
+
|
322
|
+
/// Obtain an executor with the @c outstanding_work.tracked property.
|
323
|
+
/**
|
324
|
+
* Do not call this function directly. It is intended for use with the
|
325
|
+
* asio::require customisation point.
|
326
|
+
*
|
327
|
+
* For example:
|
328
|
+
* @code auto ex1 = my_thread_pool.executor();
|
329
|
+
* auto ex2 = asio::require(ex1,
|
330
|
+
* asio::execution::outstanding_work.tracked); @endcode
|
331
|
+
*/
|
332
|
+
ASIO_CONSTEXPR basic_executor_type<Allocator,
|
333
|
+
ASIO_UNSPECIFIED(Bits | outstanding_work_tracked)>
|
334
|
+
require(execution::outstanding_work_t::tracked_t) const
|
335
|
+
{
|
336
|
+
return basic_executor_type<Allocator, Bits | outstanding_work_tracked>(
|
337
|
+
pool_, allocator_, bits_);
|
338
|
+
}
|
339
|
+
|
340
|
+
/// Obtain an executor with the @c outstanding_work.untracked property.
|
341
|
+
/**
|
342
|
+
* Do not call this function directly. It is intended for use with the
|
343
|
+
* asio::require customisation point.
|
344
|
+
*
|
345
|
+
* For example:
|
346
|
+
* @code auto ex1 = my_thread_pool.executor();
|
347
|
+
* auto ex2 = asio::require(ex1,
|
348
|
+
* asio::execution::outstanding_work.untracked); @endcode
|
349
|
+
*/
|
350
|
+
ASIO_CONSTEXPR basic_executor_type<Allocator,
|
351
|
+
ASIO_UNSPECIFIED(Bits & ~outstanding_work_tracked)>
|
352
|
+
require(execution::outstanding_work_t::untracked_t) const
|
353
|
+
{
|
354
|
+
return basic_executor_type<Allocator, Bits & ~outstanding_work_tracked>(
|
355
|
+
pool_, allocator_, bits_);
|
356
|
+
}
|
357
|
+
|
358
|
+
/// Obtain an executor with the specified @c allocator property.
|
359
|
+
/**
|
360
|
+
* Do not call this function directly. It is intended for use with the
|
361
|
+
* asio::require customisation point.
|
362
|
+
*
|
363
|
+
* For example:
|
364
|
+
* @code auto ex1 = my_thread_pool.executor();
|
365
|
+
* auto ex2 = asio::require(ex1,
|
366
|
+
* asio::execution::allocator(my_allocator)); @endcode
|
367
|
+
*/
|
368
|
+
template <typename OtherAllocator>
|
369
|
+
ASIO_CONSTEXPR basic_executor_type<OtherAllocator, Bits>
|
370
|
+
require(execution::allocator_t<OtherAllocator> a) const
|
371
|
+
{
|
372
|
+
return basic_executor_type<OtherAllocator, Bits>(
|
373
|
+
pool_, a.value(), bits_);
|
374
|
+
}
|
375
|
+
|
376
|
+
/// Obtain an executor with the default @c allocator property.
|
377
|
+
/**
|
378
|
+
* Do not call this function directly. It is intended for use with the
|
379
|
+
* asio::require customisation point.
|
380
|
+
*
|
381
|
+
* For example:
|
382
|
+
* @code auto ex1 = my_thread_pool.executor();
|
383
|
+
* auto ex2 = asio::require(ex1,
|
384
|
+
* asio::execution::allocator); @endcode
|
385
|
+
*/
|
386
|
+
ASIO_CONSTEXPR basic_executor_type<std::allocator<void>, Bits>
|
387
|
+
require(execution::allocator_t<void>) const
|
388
|
+
{
|
389
|
+
return basic_executor_type<std::allocator<void>, Bits>(
|
390
|
+
pool_, std::allocator<void>(), bits_);
|
391
|
+
}
|
392
|
+
|
393
|
+
/// Query the current value of the @c bulk_guarantee property.
|
394
|
+
/**
|
395
|
+
* Do not call this function directly. It is intended for use with the
|
396
|
+
* asio::query customisation point.
|
397
|
+
*
|
398
|
+
* For example:
|
399
|
+
* @code auto ex = my_thread_pool.executor();
|
400
|
+
* if (asio::query(ex, asio::execution::bulk_guarantee)
|
401
|
+
* == asio::execution::bulk_guarantee.parallel)
|
402
|
+
* ... @endcode
|
403
|
+
*/
|
404
|
+
static ASIO_CONSTEXPR execution::bulk_guarantee_t query(
|
405
|
+
execution::bulk_guarantee_t) ASIO_NOEXCEPT
|
406
|
+
{
|
407
|
+
return execution::bulk_guarantee.parallel;
|
408
|
+
}
|
409
|
+
|
410
|
+
/// Query the current value of the @c mapping property.
|
411
|
+
/**
|
412
|
+
* Do not call this function directly. It is intended for use with the
|
413
|
+
* asio::query customisation point.
|
414
|
+
*
|
415
|
+
* For example:
|
416
|
+
* @code auto ex = my_thread_pool.executor();
|
417
|
+
* if (asio::query(ex, asio::execution::mapping)
|
418
|
+
* == asio::execution::mapping.thread)
|
419
|
+
* ... @endcode
|
420
|
+
*/
|
421
|
+
static ASIO_CONSTEXPR execution::mapping_t query(
|
422
|
+
execution::mapping_t) ASIO_NOEXCEPT
|
423
|
+
{
|
424
|
+
return execution::mapping.thread;
|
425
|
+
}
|
426
|
+
|
427
|
+
/// Query the current value of the @c context property.
|
428
|
+
/**
|
429
|
+
* Do not call this function directly. It is intended for use with the
|
430
|
+
* asio::query customisation point.
|
431
|
+
*
|
432
|
+
* For example:
|
433
|
+
* @code auto ex = my_thread_pool.executor();
|
434
|
+
* asio::thread_pool& pool = asio::query(
|
435
|
+
* ex, asio::execution::context); @endcode
|
436
|
+
*/
|
437
|
+
thread_pool& query(execution::context_t) const ASIO_NOEXCEPT
|
438
|
+
{
|
439
|
+
return *pool_;
|
440
|
+
}
|
441
|
+
|
442
|
+
/// Query the current value of the @c blocking property.
|
443
|
+
/**
|
444
|
+
* Do not call this function directly. It is intended for use with the
|
445
|
+
* asio::query customisation point.
|
446
|
+
*
|
447
|
+
* For example:
|
448
|
+
* @code auto ex = my_thread_pool.executor();
|
449
|
+
* if (asio::query(ex, asio::execution::blocking)
|
450
|
+
* == asio::execution::blocking.always)
|
451
|
+
* ... @endcode
|
452
|
+
*/
|
453
|
+
ASIO_CONSTEXPR execution::blocking_t query(
|
454
|
+
execution::blocking_t) const ASIO_NOEXCEPT
|
455
|
+
{
|
456
|
+
return (bits_ & blocking_never)
|
457
|
+
? execution::blocking_t(execution::blocking.never)
|
458
|
+
: ((Bits & blocking_always)
|
459
|
+
? execution::blocking_t(execution::blocking.always)
|
460
|
+
: execution::blocking_t(execution::blocking.possibly));
|
461
|
+
}
|
462
|
+
|
463
|
+
/// Query the current value of the @c relationship property.
|
464
|
+
/**
|
465
|
+
* Do not call this function directly. It is intended for use with the
|
466
|
+
* asio::query customisation point.
|
467
|
+
*
|
468
|
+
* For example:
|
469
|
+
* @code auto ex = my_thread_pool.executor();
|
470
|
+
* if (asio::query(ex, asio::execution::relationship)
|
471
|
+
* == asio::execution::relationship.continuation)
|
472
|
+
* ... @endcode
|
473
|
+
*/
|
474
|
+
ASIO_CONSTEXPR execution::relationship_t query(
|
475
|
+
execution::relationship_t) const ASIO_NOEXCEPT
|
476
|
+
{
|
477
|
+
return (bits_ & relationship_continuation)
|
478
|
+
? execution::relationship_t(execution::relationship.continuation)
|
479
|
+
: execution::relationship_t(execution::relationship.fork);
|
480
|
+
}
|
481
|
+
|
482
|
+
/// Query the current value of the @c outstanding_work property.
|
483
|
+
/**
|
484
|
+
* Do not call this function directly. It is intended for use with the
|
485
|
+
* asio::query customisation point.
|
486
|
+
*
|
487
|
+
* For example:
|
488
|
+
* @code auto ex = my_thread_pool.executor();
|
489
|
+
* if (asio::query(ex, asio::execution::outstanding_work)
|
490
|
+
* == asio::execution::outstanding_work.tracked)
|
491
|
+
* ... @endcode
|
492
|
+
*/
|
493
|
+
static ASIO_CONSTEXPR execution::outstanding_work_t query(
|
494
|
+
execution::outstanding_work_t) ASIO_NOEXCEPT
|
495
|
+
{
|
496
|
+
return (Bits & outstanding_work_tracked)
|
497
|
+
? execution::outstanding_work_t(execution::outstanding_work.tracked)
|
498
|
+
: execution::outstanding_work_t(execution::outstanding_work.untracked);
|
499
|
+
}
|
500
|
+
|
501
|
+
/// Query the current value of the @c allocator property.
|
502
|
+
/**
|
503
|
+
* Do not call this function directly. It is intended for use with the
|
504
|
+
* asio::query customisation point.
|
505
|
+
*
|
506
|
+
* For example:
|
507
|
+
* @code auto ex = my_thread_pool.executor();
|
508
|
+
* auto alloc = asio::query(ex,
|
509
|
+
* asio::execution::allocator); @endcode
|
510
|
+
*/
|
511
|
+
template <typename OtherAllocator>
|
512
|
+
ASIO_CONSTEXPR Allocator query(
|
513
|
+
execution::allocator_t<OtherAllocator>) const ASIO_NOEXCEPT
|
514
|
+
{
|
515
|
+
return allocator_;
|
516
|
+
}
|
517
|
+
|
518
|
+
/// Query the current value of the @c allocator property.
|
519
|
+
/**
|
520
|
+
* Do not call this function directly. It is intended for use with the
|
521
|
+
* asio::query customisation point.
|
522
|
+
*
|
523
|
+
* For example:
|
524
|
+
* @code auto ex = my_thread_pool.executor();
|
525
|
+
* auto alloc = asio::query(ex,
|
526
|
+
* asio::execution::allocator); @endcode
|
527
|
+
*/
|
528
|
+
ASIO_CONSTEXPR Allocator query(
|
529
|
+
execution::allocator_t<void>) const ASIO_NOEXCEPT
|
530
|
+
{
|
531
|
+
return allocator_;
|
532
|
+
}
|
533
|
+
|
534
|
+
/// Query the occupancy (recommended number of work items) for the pool.
|
535
|
+
/**
|
536
|
+
* Do not call this function directly. It is intended for use with the
|
537
|
+
* asio::query customisation point.
|
538
|
+
*
|
539
|
+
* For example:
|
540
|
+
* @code auto ex = my_thread_pool.executor();
|
541
|
+
* std::size_t occupancy = asio::query(
|
542
|
+
* ex, asio::execution::occupancy); @endcode
|
543
|
+
*/
|
544
|
+
std::size_t query(execution::occupancy_t) const ASIO_NOEXCEPT
|
545
|
+
{
|
546
|
+
return static_cast<std::size_t>(pool_->num_threads_);
|
547
|
+
}
|
548
|
+
|
549
|
+
/// Determine whether the thread pool is running in the current thread.
|
550
|
+
/**
|
551
|
+
* @return @c true if the current thread is running the thread pool. Otherwise
|
552
|
+
* returns @c false.
|
553
|
+
*/
|
554
|
+
bool running_in_this_thread() const ASIO_NOEXCEPT;
|
555
|
+
|
556
|
+
/// Compare two executors for equality.
|
557
|
+
/**
|
558
|
+
* Two executors are equal if they refer to the same underlying thread pool.
|
559
|
+
*/
|
560
|
+
friend bool operator==(const basic_executor_type& a,
|
561
|
+
const basic_executor_type& b) ASIO_NOEXCEPT
|
562
|
+
{
|
563
|
+
return a.pool_ == b.pool_
|
564
|
+
&& a.allocator_ == b.allocator_
|
565
|
+
&& a.bits_ == b.bits_;
|
566
|
+
}
|
567
|
+
|
568
|
+
/// Compare two executors for inequality.
|
569
|
+
/**
|
570
|
+
* Two executors are equal if they refer to the same underlying thread pool.
|
571
|
+
*/
|
572
|
+
friend bool operator!=(const basic_executor_type& a,
|
573
|
+
const basic_executor_type& b) ASIO_NOEXCEPT
|
574
|
+
{
|
575
|
+
return a.pool_ != b.pool_
|
576
|
+
|| a.allocator_ != b.allocator_
|
577
|
+
|| a.bits_ != b.bits_;
|
578
|
+
}
|
579
|
+
|
580
|
+
/// Execution function.
|
581
|
+
/**
|
582
|
+
* Do not call this function directly. It is intended for use with the
|
583
|
+
* execution::execute customisation point.
|
584
|
+
*
|
585
|
+
* For example:
|
586
|
+
* @code auto ex = my_thread_pool.executor();
|
587
|
+
* execution::execute(ex, my_function_object); @endcode
|
588
|
+
*/
|
589
|
+
template <typename Function>
|
590
|
+
void execute(ASIO_MOVE_ARG(Function) f) const
|
591
|
+
{
|
592
|
+
this->do_execute(ASIO_MOVE_CAST(Function)(f),
|
593
|
+
integral_constant<bool, (Bits & blocking_always) != 0>());
|
594
|
+
}
|
595
|
+
|
596
|
+
/// Bulk execution function.
|
597
|
+
template <typename Function>
|
598
|
+
void bulk_execute(ASIO_MOVE_ARG(Function) f, std::size_t n) const
|
599
|
+
{
|
600
|
+
this->do_bulk_execute(ASIO_MOVE_CAST(Function)(f), n,
|
601
|
+
integral_constant<bool, (Bits & blocking_always) != 0>());
|
602
|
+
}
|
603
|
+
|
604
|
+
/// Schedule function.
|
605
|
+
/**
|
606
|
+
* Do not call this function directly. It is intended for use with the
|
607
|
+
* execution::schedule customisation point.
|
608
|
+
*
|
609
|
+
* @return An object that satisfies the sender concept.
|
610
|
+
*/
|
611
|
+
sender_type schedule() const ASIO_NOEXCEPT
|
612
|
+
{
|
613
|
+
return *this;
|
614
|
+
}
|
615
|
+
|
616
|
+
/// Connect function.
|
617
|
+
/**
|
618
|
+
* Do not call this function directly. It is intended for use with the
|
619
|
+
* execution::connect customisation point.
|
620
|
+
*
|
621
|
+
* @return An object of an unspecified type that satisfies the @c
|
622
|
+
* operation_state concept.
|
623
|
+
*/
|
624
|
+
template <ASIO_EXECUTION_RECEIVER_OF_0 Receiver>
|
625
|
+
#if defined(GENERATING_DOCUMENTATION)
|
626
|
+
unspecified
|
627
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
628
|
+
execution::detail::as_operation<basic_executor_type, Receiver>
|
629
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
630
|
+
connect(ASIO_MOVE_ARG(Receiver) r) const
|
631
|
+
{
|
632
|
+
return execution::detail::as_operation<basic_executor_type, Receiver>(
|
633
|
+
*this, ASIO_MOVE_CAST(Receiver)(r));
|
634
|
+
}
|
635
|
+
|
636
|
+
#if !defined(ASIO_NO_TS_EXECUTORS)
|
117
637
|
/// Obtain the underlying execution context.
|
118
638
|
thread_pool& context() const ASIO_NOEXCEPT;
|
119
639
|
|
@@ -147,8 +667,9 @@ public:
|
|
147
667
|
* @param a An allocator that may be used by the executor to allocate the
|
148
668
|
* internal storage needed for function invocation.
|
149
669
|
*/
|
150
|
-
template <typename Function, typename
|
151
|
-
void dispatch(ASIO_MOVE_ARG(Function) f,
|
670
|
+
template <typename Function, typename OtherAllocator>
|
671
|
+
void dispatch(ASIO_MOVE_ARG(Function) f,
|
672
|
+
const OtherAllocator& a) const;
|
152
673
|
|
153
674
|
/// Request the thread pool to invoke the given function object.
|
154
675
|
/**
|
@@ -163,8 +684,9 @@ public:
|
|
163
684
|
* @param a An allocator that may be used by the executor to allocate the
|
164
685
|
* internal storage needed for function invocation.
|
165
686
|
*/
|
166
|
-
template <typename Function, typename
|
167
|
-
void post(ASIO_MOVE_ARG(Function) f,
|
687
|
+
template <typename Function, typename OtherAllocator>
|
688
|
+
void post(ASIO_MOVE_ARG(Function) f,
|
689
|
+
const OtherAllocator& a) const;
|
168
690
|
|
169
691
|
/// Request the thread pool to invoke the given function object.
|
170
692
|
/**
|
@@ -183,46 +705,400 @@ public:
|
|
183
705
|
* @param a An allocator that may be used by the executor to allocate the
|
184
706
|
* internal storage needed for function invocation.
|
185
707
|
*/
|
186
|
-
template <typename Function, typename
|
187
|
-
void defer(ASIO_MOVE_ARG(Function) f,
|
708
|
+
template <typename Function, typename OtherAllocator>
|
709
|
+
void defer(ASIO_MOVE_ARG(Function) f,
|
710
|
+
const OtherAllocator& a) const;
|
711
|
+
#endif // !defined(ASIO_NO_TS_EXECUTORS)
|
188
712
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
* returns @c false.
|
193
|
-
*/
|
194
|
-
bool running_in_this_thread() const ASIO_NOEXCEPT;
|
713
|
+
private:
|
714
|
+
friend class thread_pool;
|
715
|
+
template <typename, unsigned int> friend class basic_executor_type;
|
195
716
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
const executor_type& b) ASIO_NOEXCEPT
|
717
|
+
// Constructor used by thread_pool::get_executor().
|
718
|
+
explicit basic_executor_type(thread_pool& p) ASIO_NOEXCEPT
|
719
|
+
: pool_(&p),
|
720
|
+
allocator_(),
|
721
|
+
bits_(0)
|
202
722
|
{
|
203
|
-
|
723
|
+
if (Bits & outstanding_work_tracked)
|
724
|
+
pool_->scheduler_.work_started();
|
204
725
|
}
|
205
726
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
727
|
+
// Constructor used by require().
|
728
|
+
basic_executor_type(thread_pool* p,
|
729
|
+
const Allocator& a, unsigned int bits) ASIO_NOEXCEPT
|
730
|
+
: pool_(p),
|
731
|
+
allocator_(a),
|
732
|
+
bits_(bits)
|
212
733
|
{
|
213
|
-
|
734
|
+
if (Bits & outstanding_work_tracked)
|
735
|
+
if (pool_)
|
736
|
+
pool_->scheduler_.work_started();
|
214
737
|
}
|
215
738
|
|
216
|
-
|
217
|
-
|
739
|
+
/// Execution helper implementation for possibly and never blocking.
|
740
|
+
template <typename Function>
|
741
|
+
void do_execute(ASIO_MOVE_ARG(Function) f, false_type) const;
|
742
|
+
|
743
|
+
/// Execution helper implementation for always blocking.
|
744
|
+
template <typename Function>
|
745
|
+
void do_execute(ASIO_MOVE_ARG(Function) f, true_type) const;
|
218
746
|
|
219
|
-
|
220
|
-
|
747
|
+
/// Bulk execution helper implementation for possibly and never blocking.
|
748
|
+
template <typename Function>
|
749
|
+
void do_bulk_execute(ASIO_MOVE_ARG(Function) f,
|
750
|
+
std::size_t n, false_type) const;
|
751
|
+
|
752
|
+
/// Bulk execution helper implementation for always blocking.
|
753
|
+
template <typename Function>
|
754
|
+
void do_bulk_execute(ASIO_MOVE_ARG(Function) f,
|
755
|
+
std::size_t n, true_type) const;
|
221
756
|
|
222
757
|
// The underlying thread pool.
|
223
|
-
thread_pool
|
758
|
+
thread_pool* pool_;
|
759
|
+
|
760
|
+
// The allocator used for execution functions.
|
761
|
+
Allocator allocator_;
|
762
|
+
|
763
|
+
// The runtime-switched properties of the thread pool executor.
|
764
|
+
unsigned int bits_;
|
224
765
|
};
|
225
766
|
|
767
|
+
#if !defined(GENERATING_DOCUMENTATION)
|
768
|
+
|
769
|
+
namespace traits {
|
770
|
+
|
771
|
+
#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
|
772
|
+
|
773
|
+
template <typename Allocator, unsigned int Bits>
|
774
|
+
struct equality_comparable<
|
775
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>
|
776
|
+
>
|
777
|
+
{
|
778
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
779
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
780
|
+
};
|
781
|
+
|
782
|
+
#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
|
783
|
+
|
784
|
+
#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
|
785
|
+
|
786
|
+
template <typename Allocator, unsigned int Bits, typename Function>
|
787
|
+
struct execute_member<
|
788
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
789
|
+
Function
|
790
|
+
>
|
791
|
+
{
|
792
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
793
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
794
|
+
typedef void result_type;
|
795
|
+
};
|
796
|
+
|
797
|
+
#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
|
798
|
+
|
799
|
+
#if !defined(ASIO_HAS_DEDUCED_SCHEDULE_MEMBER_TRAIT)
|
800
|
+
|
801
|
+
template <typename Allocator, unsigned int Bits>
|
802
|
+
struct schedule_member<
|
803
|
+
const asio::thread_pool::basic_executor_type<Allocator, Bits>
|
804
|
+
>
|
805
|
+
{
|
806
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
807
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
808
|
+
typedef asio::thread_pool::basic_executor_type<
|
809
|
+
Allocator, Bits> result_type;
|
810
|
+
};
|
811
|
+
|
812
|
+
#endif // !defined(ASIO_HAS_DEDUCED_SCHEDULE_MEMBER_TRAIT)
|
813
|
+
|
814
|
+
#if !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT)
|
815
|
+
|
816
|
+
template <typename Allocator, unsigned int Bits, typename Receiver>
|
817
|
+
struct connect_member<
|
818
|
+
const asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
819
|
+
Receiver
|
820
|
+
>
|
821
|
+
{
|
822
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
823
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
824
|
+
typedef asio::execution::detail::as_operation<
|
825
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
826
|
+
Receiver> result_type;
|
827
|
+
};
|
828
|
+
|
829
|
+
#endif // !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT)
|
830
|
+
|
831
|
+
#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
|
832
|
+
|
833
|
+
template <typename Allocator, unsigned int Bits>
|
834
|
+
struct require_member<
|
835
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
836
|
+
asio::execution::blocking_t::possibly_t
|
837
|
+
> : asio::detail::thread_pool_bits
|
838
|
+
{
|
839
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
840
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
841
|
+
typedef asio::thread_pool::basic_executor_type<
|
842
|
+
Allocator, Bits & ~blocking_mask> result_type;
|
843
|
+
};
|
844
|
+
|
845
|
+
template <typename Allocator, unsigned int Bits>
|
846
|
+
struct require_member<
|
847
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
848
|
+
asio::execution::blocking_t::always_t
|
849
|
+
> : asio::detail::thread_pool_bits
|
850
|
+
{
|
851
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
852
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
853
|
+
typedef asio::thread_pool::basic_executor_type<Allocator,
|
854
|
+
(Bits & ~blocking_mask) | blocking_always> result_type;
|
855
|
+
};
|
856
|
+
|
857
|
+
template <typename Allocator, unsigned int Bits>
|
858
|
+
struct require_member<
|
859
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
860
|
+
asio::execution::blocking_t::never_t
|
861
|
+
> : asio::detail::thread_pool_bits
|
862
|
+
{
|
863
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
864
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
865
|
+
typedef asio::thread_pool::basic_executor_type<
|
866
|
+
Allocator, Bits & ~blocking_mask> result_type;
|
867
|
+
};
|
868
|
+
|
869
|
+
template <typename Allocator, unsigned int Bits>
|
870
|
+
struct require_member<
|
871
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
872
|
+
asio::execution::relationship_t::fork_t
|
873
|
+
>
|
874
|
+
{
|
875
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
876
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
877
|
+
typedef asio::thread_pool::basic_executor_type<
|
878
|
+
Allocator, Bits> result_type;
|
879
|
+
};
|
880
|
+
|
881
|
+
template <typename Allocator, unsigned int Bits>
|
882
|
+
struct require_member<
|
883
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
884
|
+
asio::execution::relationship_t::continuation_t
|
885
|
+
>
|
886
|
+
{
|
887
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
888
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
889
|
+
typedef asio::thread_pool::basic_executor_type<
|
890
|
+
Allocator, Bits> result_type;
|
891
|
+
};
|
892
|
+
|
893
|
+
template <typename Allocator, unsigned int Bits>
|
894
|
+
struct require_member<
|
895
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
896
|
+
asio::execution::outstanding_work_t::tracked_t
|
897
|
+
> : asio::detail::thread_pool_bits
|
898
|
+
{
|
899
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
900
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
901
|
+
typedef asio::thread_pool::basic_executor_type<
|
902
|
+
Allocator, Bits | outstanding_work_tracked> result_type;
|
903
|
+
};
|
904
|
+
|
905
|
+
template <typename Allocator, unsigned int Bits>
|
906
|
+
struct require_member<
|
907
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
908
|
+
asio::execution::outstanding_work_t::untracked_t
|
909
|
+
> : asio::detail::thread_pool_bits
|
910
|
+
{
|
911
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
912
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
913
|
+
typedef asio::thread_pool::basic_executor_type<
|
914
|
+
Allocator, Bits & ~outstanding_work_tracked> result_type;
|
915
|
+
};
|
916
|
+
|
917
|
+
template <typename Allocator, unsigned int Bits>
|
918
|
+
struct require_member<
|
919
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
920
|
+
asio::execution::allocator_t<void>
|
921
|
+
>
|
922
|
+
{
|
923
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
924
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
925
|
+
typedef asio::thread_pool::basic_executor_type<
|
926
|
+
std::allocator<void>, Bits> result_type;
|
927
|
+
};
|
928
|
+
|
929
|
+
template <unsigned int Bits,
|
930
|
+
typename Allocator, typename OtherAllocator>
|
931
|
+
struct require_member<
|
932
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
933
|
+
asio::execution::allocator_t<OtherAllocator>
|
934
|
+
>
|
935
|
+
{
|
936
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
937
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
|
938
|
+
typedef asio::thread_pool::basic_executor_type<
|
939
|
+
OtherAllocator, Bits> result_type;
|
940
|
+
};
|
941
|
+
|
942
|
+
#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
|
943
|
+
|
944
|
+
#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
|
945
|
+
|
946
|
+
template <typename Allocator, unsigned int Bits, typename Property>
|
947
|
+
struct query_static_constexpr_member<
|
948
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
949
|
+
Property,
|
950
|
+
typename asio::enable_if<
|
951
|
+
asio::is_convertible<
|
952
|
+
Property,
|
953
|
+
asio::execution::bulk_guarantee_t
|
954
|
+
>::value
|
955
|
+
>::type
|
956
|
+
>
|
957
|
+
{
|
958
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
959
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
960
|
+
typedef asio::execution::bulk_guarantee_t::parallel_t result_type;
|
961
|
+
|
962
|
+
static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
|
963
|
+
{
|
964
|
+
return result_type();
|
965
|
+
}
|
966
|
+
};
|
967
|
+
|
968
|
+
template <typename Allocator, unsigned int Bits, typename Property>
|
969
|
+
struct query_static_constexpr_member<
|
970
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
971
|
+
Property,
|
972
|
+
typename asio::enable_if<
|
973
|
+
asio::is_convertible<
|
974
|
+
Property,
|
975
|
+
asio::execution::outstanding_work_t
|
976
|
+
>::value
|
977
|
+
>::type
|
978
|
+
> : asio::detail::thread_pool_bits
|
979
|
+
{
|
980
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
981
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
982
|
+
typedef asio::execution::outstanding_work_t result_type;
|
983
|
+
|
984
|
+
static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
|
985
|
+
{
|
986
|
+
return (Bits & outstanding_work_tracked)
|
987
|
+
? execution::outstanding_work_t(execution::outstanding_work.tracked)
|
988
|
+
: execution::outstanding_work_t(execution::outstanding_work.untracked);
|
989
|
+
}
|
990
|
+
};
|
991
|
+
|
992
|
+
template <typename Allocator, unsigned int Bits, typename Property>
|
993
|
+
struct query_static_constexpr_member<
|
994
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
995
|
+
Property,
|
996
|
+
typename asio::enable_if<
|
997
|
+
asio::is_convertible<
|
998
|
+
Property,
|
999
|
+
asio::execution::mapping_t
|
1000
|
+
>::value
|
1001
|
+
>::type
|
1002
|
+
>
|
1003
|
+
{
|
1004
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1005
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1006
|
+
typedef asio::execution::mapping_t::thread_t result_type;
|
1007
|
+
|
1008
|
+
static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
|
1009
|
+
{
|
1010
|
+
return result_type();
|
1011
|
+
}
|
1012
|
+
};
|
1013
|
+
|
1014
|
+
#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
|
1015
|
+
|
1016
|
+
#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
|
1017
|
+
|
1018
|
+
template <typename Allocator, unsigned int Bits, typename Property>
|
1019
|
+
struct query_member<
|
1020
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1021
|
+
Property,
|
1022
|
+
typename asio::enable_if<
|
1023
|
+
asio::is_convertible<
|
1024
|
+
Property,
|
1025
|
+
asio::execution::blocking_t
|
1026
|
+
>::value
|
1027
|
+
>::type
|
1028
|
+
>
|
1029
|
+
{
|
1030
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1031
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1032
|
+
typedef asio::execution::blocking_t result_type;
|
1033
|
+
};
|
1034
|
+
|
1035
|
+
template <typename Allocator, unsigned int Bits, typename Property>
|
1036
|
+
struct query_member<
|
1037
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1038
|
+
Property,
|
1039
|
+
typename asio::enable_if<
|
1040
|
+
asio::is_convertible<
|
1041
|
+
Property,
|
1042
|
+
asio::execution::relationship_t
|
1043
|
+
>::value
|
1044
|
+
>::type
|
1045
|
+
>
|
1046
|
+
{
|
1047
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1048
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1049
|
+
typedef asio::execution::relationship_t result_type;
|
1050
|
+
};
|
1051
|
+
|
1052
|
+
template <typename Allocator, unsigned int Bits>
|
1053
|
+
struct query_member<
|
1054
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1055
|
+
asio::execution::occupancy_t
|
1056
|
+
>
|
1057
|
+
{
|
1058
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1059
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1060
|
+
typedef std::size_t result_type;
|
1061
|
+
};
|
1062
|
+
|
1063
|
+
template <typename Allocator, unsigned int Bits>
|
1064
|
+
struct query_member<
|
1065
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1066
|
+
asio::execution::context_t
|
1067
|
+
>
|
1068
|
+
{
|
1069
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1070
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1071
|
+
typedef asio::thread_pool& result_type;
|
1072
|
+
};
|
1073
|
+
|
1074
|
+
template <typename Allocator, unsigned int Bits>
|
1075
|
+
struct query_member<
|
1076
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1077
|
+
asio::execution::allocator_t<void>
|
1078
|
+
>
|
1079
|
+
{
|
1080
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1081
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1082
|
+
typedef Allocator result_type;
|
1083
|
+
};
|
1084
|
+
|
1085
|
+
template <typename Allocator, unsigned int Bits, typename OtherAllocator>
|
1086
|
+
struct query_member<
|
1087
|
+
asio::thread_pool::basic_executor_type<Allocator, Bits>,
|
1088
|
+
asio::execution::allocator_t<OtherAllocator>
|
1089
|
+
>
|
1090
|
+
{
|
1091
|
+
ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
|
1092
|
+
ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
|
1093
|
+
typedef Allocator result_type;
|
1094
|
+
};
|
1095
|
+
|
1096
|
+
#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
|
1097
|
+
|
1098
|
+
} // namespace traits
|
1099
|
+
|
1100
|
+
#endif // !defined(GENERATING_DOCUMENTATION)
|
1101
|
+
|
226
1102
|
} // namespace asio
|
227
1103
|
|
228
1104
|
#include "asio/detail/pop_options.hpp"
|