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
@@ -73,11 +73,12 @@ struct handler_tracking::tracking_state
|
|
73
73
|
static_mutex mutex_;
|
74
74
|
uint64_t next_id_;
|
75
75
|
tss_ptr<completion>* current_completion_;
|
76
|
+
tss_ptr<location>* current_location_;
|
76
77
|
};
|
77
78
|
|
78
79
|
handler_tracking::tracking_state* handler_tracking::get_state()
|
79
80
|
{
|
80
|
-
static tracking_state state = { ASIO_STATIC_MUTEX_INIT, 1, 0 };
|
81
|
+
static tracking_state state = { ASIO_STATIC_MUTEX_INIT, 1, 0, 0 };
|
81
82
|
return &state;
|
82
83
|
}
|
83
84
|
|
@@ -90,6 +91,25 @@ void handler_tracking::init()
|
|
90
91
|
static_mutex::scoped_lock lock(state->mutex_);
|
91
92
|
if (state->current_completion_ == 0)
|
92
93
|
state->current_completion_ = new tss_ptr<completion>;
|
94
|
+
if (state->current_location_ == 0)
|
95
|
+
state->current_location_ = new tss_ptr<location>;
|
96
|
+
}
|
97
|
+
|
98
|
+
handler_tracking::location::location(
|
99
|
+
const char* file, int line, const char* func)
|
100
|
+
: file_(file),
|
101
|
+
line_(line),
|
102
|
+
func_(func),
|
103
|
+
next_(*get_state()->current_location_)
|
104
|
+
{
|
105
|
+
if (file_)
|
106
|
+
*get_state()->current_location_ = this;
|
107
|
+
}
|
108
|
+
|
109
|
+
handler_tracking::location::~location()
|
110
|
+
{
|
111
|
+
if (file_)
|
112
|
+
*get_state()->current_location_ = next_;
|
93
113
|
}
|
94
114
|
|
95
115
|
void handler_tracking::creation(execution_context&,
|
@@ -109,6 +129,24 @@ void handler_tracking::creation(execution_context&,
|
|
109
129
|
if (completion* current_completion = *state->current_completion_)
|
110
130
|
current_id = current_completion->id_;
|
111
131
|
|
132
|
+
for (location* current_location = *state->current_location_;
|
133
|
+
current_location; current_location = current_location->next_)
|
134
|
+
{
|
135
|
+
write_line(
|
136
|
+
#if defined(ASIO_WINDOWS)
|
137
|
+
"@asio|%I64u.%06I64u|%I64u^%I64u|%s%s%.80s%s(%.80s:%d)\n",
|
138
|
+
#else // defined(ASIO_WINDOWS)
|
139
|
+
"@asio|%llu.%06llu|%llu^%llu|%s%s%.80s%s(%.80s:%d)\n",
|
140
|
+
#endif // defined(ASIO_WINDOWS)
|
141
|
+
timestamp.seconds, timestamp.microseconds,
|
142
|
+
current_id, h.id_,
|
143
|
+
current_location == *state->current_location_ ? "in " : "called from ",
|
144
|
+
current_location->func_ ? "'" : "",
|
145
|
+
current_location->func_ ? current_location->func_ : "",
|
146
|
+
current_location->func_ ? "' " : "",
|
147
|
+
current_location->file_, current_location->line_);
|
148
|
+
}
|
149
|
+
|
112
150
|
write_line(
|
113
151
|
#if defined(ASIO_WINDOWS)
|
114
152
|
"@asio|%I64u.%06I64u|%I64u*%I64u|%.20s@%p.%.50s\n",
|
@@ -69,8 +69,8 @@ asio::error_code reactive_serial_port_service::open(
|
|
69
69
|
|
70
70
|
// Set up default serial port options.
|
71
71
|
termios ios;
|
72
|
-
|
73
|
-
|
72
|
+
s = ::tcgetattr(fd, &ios);
|
73
|
+
descriptor_ops::get_last_error(ec, s < 0);
|
74
74
|
if (s >= 0)
|
75
75
|
{
|
76
76
|
#if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)
|
@@ -85,8 +85,8 @@ asio::error_code reactive_serial_port_service::open(
|
|
85
85
|
#endif
|
86
86
|
ios.c_iflag |= IGNPAR;
|
87
87
|
ios.c_cflag |= CREAD | CLOCAL;
|
88
|
-
|
89
|
-
|
88
|
+
s = ::tcsetattr(fd, TCSANOW, &ios);
|
89
|
+
descriptor_ops::get_last_error(ec, s < 0);
|
90
90
|
}
|
91
91
|
if (s < 0)
|
92
92
|
{
|
@@ -111,18 +111,16 @@ asio::error_code reactive_serial_port_service::do_set_option(
|
|
111
111
|
const void* option, asio::error_code& ec)
|
112
112
|
{
|
113
113
|
termios ios;
|
114
|
-
|
115
|
-
descriptor_ops::
|
116
|
-
|
117
|
-
if (ec)
|
114
|
+
int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios);
|
115
|
+
descriptor_ops::get_last_error(ec, s < 0);
|
116
|
+
if (s < 0)
|
118
117
|
return ec;
|
119
118
|
|
120
119
|
if (store(option, ios, ec))
|
121
120
|
return ec;
|
122
121
|
|
123
|
-
|
124
|
-
descriptor_ops::
|
125
|
-
descriptor_service_.native_handle(impl), TCSANOW, &ios), ec);
|
122
|
+
s = ::tcsetattr(descriptor_service_.native_handle(impl), TCSANOW, &ios);
|
123
|
+
descriptor_ops::get_last_error(ec, s < 0);
|
126
124
|
return ec;
|
127
125
|
}
|
128
126
|
|
@@ -132,10 +130,9 @@ asio::error_code reactive_serial_port_service::do_get_option(
|
|
132
130
|
void* option, asio::error_code& ec) const
|
133
131
|
{
|
134
132
|
termios ios;
|
135
|
-
|
136
|
-
descriptor_ops::
|
137
|
-
|
138
|
-
if (ec)
|
133
|
+
int s = ::tcgetattr(descriptor_service_.native_handle(impl), &ios);
|
134
|
+
descriptor_ops::get_last_error(ec, s < 0);
|
135
|
+
if (s < 0)
|
139
136
|
return ec;
|
140
137
|
|
141
138
|
return load(option, ios, ec);
|
@@ -135,6 +135,10 @@ scheduler::~scheduler()
|
|
135
135
|
{
|
136
136
|
if (thread_)
|
137
137
|
{
|
138
|
+
mutex::scoped_lock lock(mutex_);
|
139
|
+
shutdown_ = true;
|
140
|
+
stop_all_threads(lock);
|
141
|
+
lock.unlock();
|
138
142
|
thread_->join();
|
139
143
|
delete thread_;
|
140
144
|
}
|
@@ -320,6 +324,12 @@ void scheduler::compensating_work_started()
|
|
320
324
|
++static_cast<thread_info*>(this_thread)->private_outstanding_work;
|
321
325
|
}
|
322
326
|
|
327
|
+
void scheduler::capture_current_exception()
|
328
|
+
{
|
329
|
+
if (thread_info_base* this_thread = thread_call_stack::contains(this))
|
330
|
+
this_thread->capture_current_exception();
|
331
|
+
}
|
332
|
+
|
323
333
|
void scheduler::post_immediate_completion(
|
324
334
|
scheduler::operation* op, bool is_continuation)
|
325
335
|
{
|
@@ -343,6 +353,30 @@ void scheduler::post_immediate_completion(
|
|
343
353
|
wake_one_thread_and_unlock(lock);
|
344
354
|
}
|
345
355
|
|
356
|
+
void scheduler::post_immediate_completions(std::size_t n,
|
357
|
+
op_queue<scheduler::operation>& ops, bool is_continuation)
|
358
|
+
{
|
359
|
+
#if defined(ASIO_HAS_THREADS)
|
360
|
+
if (one_thread_ || is_continuation)
|
361
|
+
{
|
362
|
+
if (thread_info_base* this_thread = thread_call_stack::contains(this))
|
363
|
+
{
|
364
|
+
static_cast<thread_info*>(this_thread)->private_outstanding_work
|
365
|
+
+= static_cast<long>(n);
|
366
|
+
static_cast<thread_info*>(this_thread)->private_op_queue.push(ops);
|
367
|
+
return;
|
368
|
+
}
|
369
|
+
}
|
370
|
+
#else // defined(ASIO_HAS_THREADS)
|
371
|
+
(void)is_continuation;
|
372
|
+
#endif // defined(ASIO_HAS_THREADS)
|
373
|
+
|
374
|
+
increment(outstanding_work_, static_cast<long>(n));
|
375
|
+
mutex::scoped_lock lock(mutex_);
|
376
|
+
op_queue_.push(ops);
|
377
|
+
wake_one_thread_and_unlock(lock);
|
378
|
+
}
|
379
|
+
|
346
380
|
void scheduler::post_deferred_completion(scheduler::operation* op)
|
347
381
|
{
|
348
382
|
#if defined(ASIO_HAS_THREADS)
|
@@ -444,6 +478,7 @@ std::size_t scheduler::do_run_one(mutex::scoped_lock& lock,
|
|
444
478
|
|
445
479
|
// Complete the operation. May throw an exception. Deletes the object.
|
446
480
|
o->complete(this, ec, task_result);
|
481
|
+
this_thread.rethrow_pending_exception();
|
447
482
|
|
448
483
|
return 1;
|
449
484
|
}
|
@@ -524,6 +559,7 @@ std::size_t scheduler::do_wait_one(mutex::scoped_lock& lock,
|
|
524
559
|
|
525
560
|
// Complete the operation. May throw an exception. Deletes the object.
|
526
561
|
o->complete(this, ec, task_result);
|
562
|
+
this_thread.rethrow_pending_exception();
|
527
563
|
|
528
564
|
return 1;
|
529
565
|
}
|
@@ -578,6 +614,7 @@ std::size_t scheduler::do_poll_one(mutex::scoped_lock& lock,
|
|
578
614
|
|
579
615
|
// Complete the operation. May throw an exception. Deletes the object.
|
580
616
|
o->complete(this, ec, task_result);
|
617
|
+
this_thread.rethrow_pending_exception();
|
581
618
|
|
582
619
|
return 1;
|
583
620
|
}
|
@@ -89,7 +89,8 @@ class signal_set_service::pipe_read_op : public reactor_op
|
|
89
89
|
{
|
90
90
|
public:
|
91
91
|
pipe_read_op()
|
92
|
-
: reactor_op(
|
92
|
+
: reactor_op(asio::error_code(),
|
93
|
+
&pipe_read_op::do_perform, pipe_read_op::do_complete)
|
93
94
|
{
|
94
95
|
}
|
95
96
|
|
@@ -73,18 +73,23 @@ inline void clear_last_error()
|
|
73
73
|
|
74
74
|
#if !defined(ASIO_WINDOWS_RUNTIME)
|
75
75
|
|
76
|
-
|
77
|
-
|
78
|
-
asio::error_code& ec)
|
76
|
+
inline void get_last_error(
|
77
|
+
asio::error_code& ec, bool is_error_condition)
|
79
78
|
{
|
79
|
+
if (!is_error_condition)
|
80
|
+
{
|
81
|
+
ec.assign(0, ec.category());
|
82
|
+
}
|
83
|
+
else
|
84
|
+
{
|
80
85
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
81
|
-
|
82
|
-
|
86
|
+
ec = asio::error_code(WSAGetLastError(),
|
87
|
+
asio::error::get_system_category());
|
83
88
|
#else
|
84
|
-
|
85
|
-
|
89
|
+
ec = asio::error_code(errno,
|
90
|
+
asio::error::get_system_category());
|
86
91
|
#endif
|
87
|
-
|
92
|
+
}
|
88
93
|
}
|
89
94
|
|
90
95
|
template <typename SockLenType>
|
@@ -107,17 +112,16 @@ socket_type accept(socket_type s, socket_addr_type* addr,
|
|
107
112
|
return invalid_socket;
|
108
113
|
}
|
109
114
|
|
110
|
-
|
111
|
-
|
112
|
-
socket_type new_s = error_wrapper(call_accept(
|
113
|
-
&msghdr::msg_namelen, s, addr, addrlen), ec);
|
115
|
+
socket_type new_s = call_accept(&msghdr::msg_namelen, s, addr, addrlen);
|
116
|
+
get_last_error(ec, new_s == invalid_socket);
|
114
117
|
if (new_s == invalid_socket)
|
115
118
|
return new_s;
|
116
119
|
|
117
120
|
#if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
|
118
121
|
int optval = 1;
|
119
|
-
int result =
|
120
|
-
|
122
|
+
int result = ::setsockopt(new_s, SOL_SOCKET,
|
123
|
+
SO_NOSIGPIPE, &optval, sizeof(optval));
|
124
|
+
get_last_error(ec, result != 0);
|
121
125
|
if (result != 0)
|
122
126
|
{
|
123
127
|
::close(new_s);
|
@@ -125,7 +129,7 @@ socket_type accept(socket_type s, socket_addr_type* addr,
|
|
125
129
|
}
|
126
130
|
#endif
|
127
131
|
|
128
|
-
ec
|
132
|
+
ec.assign(0, ec.category());
|
129
133
|
return new_s;
|
130
134
|
}
|
131
135
|
|
@@ -282,11 +286,8 @@ int bind(socket_type s, const socket_addr_type* addr,
|
|
282
286
|
return socket_error_retval;
|
283
287
|
}
|
284
288
|
|
285
|
-
|
286
|
-
|
287
|
-
&msghdr::msg_namelen, s, addr, addrlen), ec);
|
288
|
-
if (result == 0)
|
289
|
-
ec = asio::error_code();
|
289
|
+
int result = call_bind(&msghdr::msg_namelen, s, addr, addrlen);
|
290
|
+
get_last_error(ec, result != 0);
|
290
291
|
return result;
|
291
292
|
}
|
292
293
|
|
@@ -309,12 +310,12 @@ int close(socket_type s, state_type& state,
|
|
309
310
|
SO_LINGER, &opt, sizeof(opt), ignored_ec);
|
310
311
|
}
|
311
312
|
|
312
|
-
clear_last_error();
|
313
313
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
314
|
-
result =
|
314
|
+
result = ::closesocket(s);
|
315
315
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
316
|
-
result =
|
316
|
+
result = ::close(s);
|
317
317
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
318
|
+
get_last_error(ec, result != 0);
|
318
319
|
|
319
320
|
if (result != 0
|
320
321
|
&& (ec == asio::error::would_block
|
@@ -341,17 +342,15 @@ int close(socket_type s, state_type& state,
|
|
341
342
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
342
343
|
state &= ~non_blocking;
|
343
344
|
|
344
|
-
clear_last_error();
|
345
345
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
346
|
-
result =
|
346
|
+
result = ::closesocket(s);
|
347
347
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
348
|
-
result =
|
348
|
+
result = ::close(s);
|
349
349
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
350
|
+
get_last_error(ec, result != 0);
|
350
351
|
}
|
351
352
|
}
|
352
353
|
|
353
|
-
if (result == 0)
|
354
|
-
ec = asio::error_code();
|
355
354
|
return result;
|
356
355
|
}
|
357
356
|
|
@@ -364,26 +363,27 @@ bool set_user_non_blocking(socket_type s,
|
|
364
363
|
return false;
|
365
364
|
}
|
366
365
|
|
367
|
-
clear_last_error();
|
368
366
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
369
367
|
ioctl_arg_type arg = (value ? 1 : 0);
|
370
|
-
int result =
|
368
|
+
int result = ::ioctlsocket(s, FIONBIO, &arg);
|
369
|
+
get_last_error(ec, result < 0);
|
371
370
|
#elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
|
372
|
-
int result =
|
371
|
+
int result = ::fcntl(s, F_GETFL, 0);
|
372
|
+
get_last_error(ec, result < 0);
|
373
373
|
if (result >= 0)
|
374
374
|
{
|
375
|
-
clear_last_error();
|
376
375
|
int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
|
377
|
-
result =
|
376
|
+
result = ::fcntl(s, F_SETFL, flag);
|
377
|
+
get_last_error(ec, result < 0);
|
378
378
|
}
|
379
379
|
#else
|
380
380
|
ioctl_arg_type arg = (value ? 1 : 0);
|
381
|
-
int result =
|
381
|
+
int result = ::ioctl(s, FIONBIO, &arg);
|
382
|
+
get_last_error(ec, result < 0);
|
382
383
|
#endif
|
383
384
|
|
384
385
|
if (result >= 0)
|
385
386
|
{
|
386
|
-
ec = asio::error_code();
|
387
387
|
if (value)
|
388
388
|
state |= user_set_non_blocking;
|
389
389
|
else
|
@@ -417,26 +417,27 @@ bool set_internal_non_blocking(socket_type s,
|
|
417
417
|
return false;
|
418
418
|
}
|
419
419
|
|
420
|
-
clear_last_error();
|
421
420
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
422
421
|
ioctl_arg_type arg = (value ? 1 : 0);
|
423
|
-
int result =
|
422
|
+
int result = ::ioctlsocket(s, FIONBIO, &arg);
|
423
|
+
get_last_error(ec, result < 0);
|
424
424
|
#elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
|
425
|
-
int result =
|
425
|
+
int result = ::fcntl(s, F_GETFL, 0);
|
426
|
+
get_last_error(ec, result < 0);
|
426
427
|
if (result >= 0)
|
427
428
|
{
|
428
|
-
clear_last_error();
|
429
429
|
int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
|
430
|
-
result =
|
430
|
+
result = ::fcntl(s, F_SETFL, flag);
|
431
|
+
get_last_error(ec, result < 0);
|
431
432
|
}
|
432
433
|
#else
|
433
434
|
ioctl_arg_type arg = (value ? 1 : 0);
|
434
|
-
int result =
|
435
|
+
int result = ::ioctl(s, FIONBIO, &arg);
|
436
|
+
get_last_error(ec, result < 0);
|
435
437
|
#endif
|
436
438
|
|
437
439
|
if (result >= 0)
|
438
440
|
{
|
439
|
-
ec = asio::error_code();
|
440
441
|
if (value)
|
441
442
|
state |= internal_non_blocking;
|
442
443
|
else
|
@@ -455,10 +456,8 @@ int shutdown(socket_type s, int what, asio::error_code& ec)
|
|
455
456
|
return socket_error_retval;
|
456
457
|
}
|
457
458
|
|
458
|
-
|
459
|
-
|
460
|
-
if (result == 0)
|
461
|
-
ec = asio::error_code();
|
459
|
+
int result = ::shutdown(s, what);
|
460
|
+
get_last_error(ec, result != 0);
|
462
461
|
return result;
|
463
462
|
}
|
464
463
|
|
@@ -478,13 +477,10 @@ int connect(socket_type s, const socket_addr_type* addr,
|
|
478
477
|
return socket_error_retval;
|
479
478
|
}
|
480
479
|
|
481
|
-
|
482
|
-
|
483
|
-
&msghdr::msg_namelen, s, addr, addrlen), ec);
|
484
|
-
if (result == 0)
|
485
|
-
ec = asio::error_code();
|
480
|
+
int result = call_connect(&msghdr::msg_namelen, s, addr, addrlen);
|
481
|
+
get_last_error(ec, result != 0);
|
486
482
|
#if defined(__linux__)
|
487
|
-
|
483
|
+
if (result != 0 && ec == asio::error::try_again)
|
488
484
|
ec = asio::error::no_buffer_space;
|
489
485
|
#endif // defined(__linux__)
|
490
486
|
return result;
|
@@ -600,7 +596,7 @@ bool non_blocking_connect(socket_type s, asio::error_code& ec)
|
|
600
596
|
asio::error::get_system_category());
|
601
597
|
}
|
602
598
|
else
|
603
|
-
ec
|
599
|
+
ec.assign(0, ec.category());
|
604
600
|
}
|
605
601
|
|
606
602
|
return true;
|
@@ -617,10 +613,8 @@ int socketpair(int af, int type, int protocol,
|
|
617
613
|
ec = asio::error::operation_not_supported;
|
618
614
|
return socket_error_retval;
|
619
615
|
#else
|
620
|
-
|
621
|
-
|
622
|
-
if (result == 0)
|
623
|
-
ec = asio::error_code();
|
616
|
+
int result = ::socketpair(af, type, protocol, sv);
|
617
|
+
get_last_error(ec, result != 0);
|
624
618
|
return result;
|
625
619
|
#endif
|
626
620
|
}
|
@@ -636,20 +630,18 @@ bool sockatmark(socket_type s, asio::error_code& ec)
|
|
636
630
|
#if defined(SIOCATMARK)
|
637
631
|
ioctl_arg_type value = 0;
|
638
632
|
# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
639
|
-
int result =
|
633
|
+
int result = ::ioctlsocket(s, SIOCATMARK, &value);
|
640
634
|
# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
641
|
-
int result =
|
635
|
+
int result = ::ioctl(s, SIOCATMARK, &value);
|
642
636
|
# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
643
|
-
|
644
|
-
ec = asio::error_code();
|
637
|
+
get_last_error(ec, result < 0);
|
645
638
|
# if defined(ENOTTY)
|
646
639
|
if (ec.value() == ENOTTY)
|
647
640
|
ec = asio::error::not_socket;
|
648
641
|
# endif // defined(ENOTTY)
|
649
642
|
#else // defined(SIOCATMARK)
|
650
|
-
int value =
|
651
|
-
|
652
|
-
ec = asio::error_code();
|
643
|
+
int value = ::sockatmark(s);
|
644
|
+
get_last_error(ec, result < 0);
|
653
645
|
#endif // defined(SIOCATMARK)
|
654
646
|
|
655
647
|
return ec ? false : value != 0;
|
@@ -665,12 +657,11 @@ size_t available(socket_type s, asio::error_code& ec)
|
|
665
657
|
|
666
658
|
ioctl_arg_type value = 0;
|
667
659
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
668
|
-
int result =
|
660
|
+
int result = ::ioctlsocket(s, FIONREAD, &value);
|
669
661
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
670
|
-
int result =
|
662
|
+
int result = ::ioctl(s, FIONREAD, &value);
|
671
663
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
672
|
-
|
673
|
-
ec = asio::error_code();
|
664
|
+
get_last_error(ec, result < 0);
|
674
665
|
#if defined(ENOTTY)
|
675
666
|
if (ec.value() == ENOTTY)
|
676
667
|
ec = asio::error::not_socket;
|
@@ -687,10 +678,8 @@ int listen(socket_type s, int backlog, asio::error_code& ec)
|
|
687
678
|
return socket_error_retval;
|
688
679
|
}
|
689
680
|
|
690
|
-
|
691
|
-
|
692
|
-
if (result == 0)
|
693
|
-
ec = asio::error_code();
|
681
|
+
int result = ::listen(s, backlog);
|
682
|
+
get_last_error(ec, result != 0);
|
694
683
|
return result;
|
695
684
|
}
|
696
685
|
|
@@ -758,14 +747,14 @@ inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr)
|
|
758
747
|
signed_size_type recv(socket_type s, buf* bufs, size_t count,
|
759
748
|
int flags, asio::error_code& ec)
|
760
749
|
{
|
761
|
-
clear_last_error();
|
762
750
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
763
751
|
// Receive some data.
|
764
752
|
DWORD recv_buf_count = static_cast<DWORD>(count);
|
765
753
|
DWORD bytes_transferred = 0;
|
766
754
|
DWORD recv_flags = flags;
|
767
|
-
int result =
|
768
|
-
|
755
|
+
int result = ::WSARecv(s, bufs, recv_buf_count,
|
756
|
+
&bytes_transferred, &recv_flags, 0, 0);
|
757
|
+
get_last_error(ec, true);
|
769
758
|
if (ec.value() == ERROR_NETNAME_DELETED)
|
770
759
|
ec = asio::error::connection_reset;
|
771
760
|
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
@@ -774,15 +763,44 @@ signed_size_type recv(socket_type s, buf* bufs, size_t count,
|
|
774
763
|
result = 0;
|
775
764
|
if (result != 0)
|
776
765
|
return socket_error_retval;
|
777
|
-
ec
|
766
|
+
ec.assign(0, ec.category());
|
778
767
|
return bytes_transferred;
|
779
768
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
780
769
|
msghdr msg = msghdr();
|
781
770
|
msg.msg_iov = bufs;
|
782
771
|
msg.msg_iovlen = static_cast<int>(count);
|
783
|
-
signed_size_type result =
|
784
|
-
|
785
|
-
|
772
|
+
signed_size_type result = ::recvmsg(s, &msg, flags);
|
773
|
+
get_last_error(ec, result < 0);
|
774
|
+
return result;
|
775
|
+
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
776
|
+
}
|
777
|
+
|
778
|
+
signed_size_type recv1(socket_type s, void* data, size_t size,
|
779
|
+
int flags, asio::error_code& ec)
|
780
|
+
{
|
781
|
+
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
782
|
+
// Receive some data.
|
783
|
+
WSABUF buf;
|
784
|
+
buf.buf = const_cast<char*>(static_cast<const char*>(data));
|
785
|
+
buf.len = static_cast<ULONG>(size);
|
786
|
+
DWORD bytes_transferred = 0;
|
787
|
+
DWORD recv_flags = flags;
|
788
|
+
int result = ::WSARecv(s, &buf, 1,
|
789
|
+
&bytes_transferred, &recv_flags, 0, 0);
|
790
|
+
get_last_error(ec, true);
|
791
|
+
if (ec.value() == ERROR_NETNAME_DELETED)
|
792
|
+
ec = asio::error::connection_reset;
|
793
|
+
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
794
|
+
ec = asio::error::connection_refused;
|
795
|
+
else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
|
796
|
+
result = 0;
|
797
|
+
if (result != 0)
|
798
|
+
return socket_error_retval;
|
799
|
+
ec.assign(0, ec.category());
|
800
|
+
return bytes_transferred;
|
801
|
+
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
802
|
+
signed_size_type result = ::recv(s, static_cast<char*>(data), size, flags);
|
803
|
+
get_last_error(ec, result < 0);
|
786
804
|
return result;
|
787
805
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
788
806
|
}
|
@@ -799,7 +817,7 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
|
|
799
817
|
// A request to read 0 bytes on a stream is a no-op.
|
800
818
|
if (all_empty && (state & stream_oriented))
|
801
819
|
{
|
802
|
-
ec
|
820
|
+
ec.assign(0, ec.category());
|
803
821
|
return 0;
|
804
822
|
}
|
805
823
|
|
@@ -809,10 +827,51 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
|
|
809
827
|
// Try to complete the operation without blocking.
|
810
828
|
signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
|
811
829
|
|
830
|
+
// Check for EOF.
|
831
|
+
if ((state & stream_oriented) && bytes == 0)
|
832
|
+
{
|
833
|
+
ec = asio::error::eof;
|
834
|
+
return 0;
|
835
|
+
}
|
836
|
+
|
812
837
|
// Check if operation succeeded.
|
813
|
-
if (bytes
|
838
|
+
if (bytes >= 0)
|
814
839
|
return bytes;
|
815
840
|
|
841
|
+
// Operation failed.
|
842
|
+
if ((state & user_set_non_blocking)
|
843
|
+
|| (ec != asio::error::would_block
|
844
|
+
&& ec != asio::error::try_again))
|
845
|
+
return 0;
|
846
|
+
|
847
|
+
// Wait for socket to become ready.
|
848
|
+
if (socket_ops::poll_read(s, 0, -1, ec) < 0)
|
849
|
+
return 0;
|
850
|
+
}
|
851
|
+
}
|
852
|
+
|
853
|
+
size_t sync_recv1(socket_type s, state_type state, void* data,
|
854
|
+
size_t size, int flags, asio::error_code& ec)
|
855
|
+
{
|
856
|
+
if (s == invalid_socket)
|
857
|
+
{
|
858
|
+
ec = asio::error::bad_descriptor;
|
859
|
+
return 0;
|
860
|
+
}
|
861
|
+
|
862
|
+
// A request to read 0 bytes on a stream is a no-op.
|
863
|
+
if (size == 0 && (state & stream_oriented))
|
864
|
+
{
|
865
|
+
ec.assign(0, ec.category());
|
866
|
+
return 0;
|
867
|
+
}
|
868
|
+
|
869
|
+
// Read some data.
|
870
|
+
for (;;)
|
871
|
+
{
|
872
|
+
// Try to complete the operation without blocking.
|
873
|
+
signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec);
|
874
|
+
|
816
875
|
// Check for EOF.
|
817
876
|
if ((state & stream_oriented) && bytes == 0)
|
818
877
|
{
|
@@ -820,6 +879,10 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
|
|
820
879
|
return 0;
|
821
880
|
}
|
822
881
|
|
882
|
+
// Check if operation succeeded.
|
883
|
+
if (bytes >= 0)
|
884
|
+
return bytes;
|
885
|
+
|
823
886
|
// Operation failed.
|
824
887
|
if ((state & user_set_non_blocking)
|
825
888
|
|| (ec != asio::error::would_block
|
@@ -882,6 +945,13 @@ bool non_blocking_recv(socket_type s,
|
|
882
945
|
return true;
|
883
946
|
}
|
884
947
|
|
948
|
+
// Check if operation succeeded.
|
949
|
+
if (bytes >= 0)
|
950
|
+
{
|
951
|
+
bytes_transferred = bytes;
|
952
|
+
return true;
|
953
|
+
}
|
954
|
+
|
885
955
|
// Retry operation if interrupted by signal.
|
886
956
|
if (ec == asio::error::interrupted)
|
887
957
|
continue;
|
@@ -891,15 +961,46 @@ bool non_blocking_recv(socket_type s,
|
|
891
961
|
|| ec == asio::error::try_again)
|
892
962
|
return false;
|
893
963
|
|
894
|
-
// Operation
|
964
|
+
// Operation failed.
|
965
|
+
bytes_transferred = 0;
|
966
|
+
return true;
|
967
|
+
}
|
968
|
+
}
|
969
|
+
|
970
|
+
bool non_blocking_recv1(socket_type s,
|
971
|
+
void* data, size_t size, int flags, bool is_stream,
|
972
|
+
asio::error_code& ec, size_t& bytes_transferred)
|
973
|
+
{
|
974
|
+
for (;;)
|
975
|
+
{
|
976
|
+
// Read some data.
|
977
|
+
signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec);
|
978
|
+
|
979
|
+
// Check for end of stream.
|
980
|
+
if (is_stream && bytes == 0)
|
981
|
+
{
|
982
|
+
ec = asio::error::eof;
|
983
|
+
return true;
|
984
|
+
}
|
985
|
+
|
986
|
+
// Check if operation succeeded.
|
895
987
|
if (bytes >= 0)
|
896
988
|
{
|
897
|
-
ec = asio::error_code();
|
898
989
|
bytes_transferred = bytes;
|
990
|
+
return true;
|
899
991
|
}
|
900
|
-
else
|
901
|
-
bytes_transferred = 0;
|
902
992
|
|
993
|
+
// Retry operation if interrupted by signal.
|
994
|
+
if (ec == asio::error::interrupted)
|
995
|
+
continue;
|
996
|
+
|
997
|
+
// Check if we need to run the operation again.
|
998
|
+
if (ec == asio::error::would_block
|
999
|
+
|| ec == asio::error::try_again)
|
1000
|
+
return false;
|
1001
|
+
|
1002
|
+
// Operation failed.
|
1003
|
+
bytes_transferred = 0;
|
903
1004
|
return true;
|
904
1005
|
}
|
905
1006
|
}
|
@@ -910,15 +1011,15 @@ signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
|
|
910
1011
|
int flags, socket_addr_type* addr, std::size_t* addrlen,
|
911
1012
|
asio::error_code& ec)
|
912
1013
|
{
|
913
|
-
clear_last_error();
|
914
1014
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
915
1015
|
// Receive some data.
|
916
1016
|
DWORD recv_buf_count = static_cast<DWORD>(count);
|
917
1017
|
DWORD bytes_transferred = 0;
|
918
1018
|
DWORD recv_flags = flags;
|
919
1019
|
int tmp_addrlen = (int)*addrlen;
|
920
|
-
int result =
|
921
|
-
&bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0)
|
1020
|
+
int result = ::WSARecvFrom(s, bufs, recv_buf_count,
|
1021
|
+
&bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0);
|
1022
|
+
get_last_error(ec, true);
|
922
1023
|
*addrlen = (std::size_t)tmp_addrlen;
|
923
1024
|
if (ec.value() == ERROR_NETNAME_DELETED)
|
924
1025
|
ec = asio::error::connection_reset;
|
@@ -928,7 +1029,7 @@ signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
|
|
928
1029
|
result = 0;
|
929
1030
|
if (result != 0)
|
930
1031
|
return socket_error_retval;
|
931
|
-
ec
|
1032
|
+
ec.assign(0, ec.category());
|
932
1033
|
return bytes_transferred;
|
933
1034
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
934
1035
|
msghdr msg = msghdr();
|
@@ -936,10 +1037,56 @@ signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
|
|
936
1037
|
msg.msg_namelen = static_cast<int>(*addrlen);
|
937
1038
|
msg.msg_iov = bufs;
|
938
1039
|
msg.msg_iovlen = static_cast<int>(count);
|
939
|
-
signed_size_type result =
|
1040
|
+
signed_size_type result = ::recvmsg(s, &msg, flags);
|
1041
|
+
get_last_error(ec, result < 0);
|
940
1042
|
*addrlen = msg.msg_namelen;
|
941
|
-
|
942
|
-
|
1043
|
+
return result;
|
1044
|
+
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1045
|
+
}
|
1046
|
+
|
1047
|
+
template <typename SockLenType>
|
1048
|
+
inline signed_size_type call_recvfrom(SockLenType msghdr::*,
|
1049
|
+
socket_type s, void* data, size_t size, int flags,
|
1050
|
+
socket_addr_type* addr, std::size_t* addrlen)
|
1051
|
+
{
|
1052
|
+
SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0;
|
1053
|
+
signed_size_type result = ::recvfrom(s, static_cast<char*>(data),
|
1054
|
+
size, flags, addr, addrlen ? &tmp_addrlen : 0);
|
1055
|
+
if (addrlen)
|
1056
|
+
*addrlen = (std::size_t)tmp_addrlen;
|
1057
|
+
return result;
|
1058
|
+
}
|
1059
|
+
|
1060
|
+
signed_size_type recvfrom1(socket_type s, void* data, size_t size,
|
1061
|
+
int flags, socket_addr_type* addr, std::size_t* addrlen,
|
1062
|
+
asio::error_code& ec)
|
1063
|
+
{
|
1064
|
+
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1065
|
+
// Receive some data.
|
1066
|
+
WSABUF buf;
|
1067
|
+
buf.buf = static_cast<char*>(data);
|
1068
|
+
buf.len = static_cast<ULONG>(size);
|
1069
|
+
DWORD bytes_transferred = 0;
|
1070
|
+
DWORD recv_flags = flags;
|
1071
|
+
int tmp_addrlen = (int)*addrlen;
|
1072
|
+
int result = ::WSARecvFrom(s, &buf, 1, &bytes_transferred,
|
1073
|
+
&recv_flags, addr, &tmp_addrlen, 0, 0);
|
1074
|
+
get_last_error(ec, true);
|
1075
|
+
*addrlen = (std::size_t)tmp_addrlen;
|
1076
|
+
if (ec.value() == ERROR_NETNAME_DELETED)
|
1077
|
+
ec = asio::error::connection_reset;
|
1078
|
+
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
1079
|
+
ec = asio::error::connection_refused;
|
1080
|
+
else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
|
1081
|
+
result = 0;
|
1082
|
+
if (result != 0)
|
1083
|
+
return socket_error_retval;
|
1084
|
+
ec.assign(0, ec.category());
|
1085
|
+
return bytes_transferred;
|
1086
|
+
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1087
|
+
signed_size_type result = call_recvfrom(&msghdr::msg_namelen,
|
1088
|
+
s, data, size, flags, addr, addrlen);
|
1089
|
+
get_last_error(ec, result < 0);
|
943
1090
|
return result;
|
944
1091
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
945
1092
|
}
|
@@ -977,6 +1124,39 @@ size_t sync_recvfrom(socket_type s, state_type state, buf* bufs,
|
|
977
1124
|
}
|
978
1125
|
}
|
979
1126
|
|
1127
|
+
size_t sync_recvfrom1(socket_type s, state_type state, void* data,
|
1128
|
+
size_t size, int flags, socket_addr_type* addr,
|
1129
|
+
std::size_t* addrlen, asio::error_code& ec)
|
1130
|
+
{
|
1131
|
+
if (s == invalid_socket)
|
1132
|
+
{
|
1133
|
+
ec = asio::error::bad_descriptor;
|
1134
|
+
return 0;
|
1135
|
+
}
|
1136
|
+
|
1137
|
+
// Read some data.
|
1138
|
+
for (;;)
|
1139
|
+
{
|
1140
|
+
// Try to complete the operation without blocking.
|
1141
|
+
signed_size_type bytes = socket_ops::recvfrom1(
|
1142
|
+
s, data, size, flags, addr, addrlen, ec);
|
1143
|
+
|
1144
|
+
// Check if operation succeeded.
|
1145
|
+
if (bytes >= 0)
|
1146
|
+
return bytes;
|
1147
|
+
|
1148
|
+
// Operation failed.
|
1149
|
+
if ((state & user_set_non_blocking)
|
1150
|
+
|| (ec != asio::error::would_block
|
1151
|
+
&& ec != asio::error::try_again))
|
1152
|
+
return 0;
|
1153
|
+
|
1154
|
+
// Wait for socket to become ready.
|
1155
|
+
if (socket_ops::poll_read(s, 0, -1, ec) < 0)
|
1156
|
+
return 0;
|
1157
|
+
}
|
1158
|
+
}
|
1159
|
+
|
980
1160
|
#if defined(ASIO_HAS_IOCP)
|
981
1161
|
|
982
1162
|
void complete_iocp_recvfrom(
|
@@ -1014,6 +1194,13 @@ bool non_blocking_recvfrom(socket_type s,
|
|
1014
1194
|
signed_size_type bytes = socket_ops::recvfrom(
|
1015
1195
|
s, bufs, count, flags, addr, addrlen, ec);
|
1016
1196
|
|
1197
|
+
// Check if operation succeeded.
|
1198
|
+
if (bytes >= 0)
|
1199
|
+
{
|
1200
|
+
bytes_transferred = bytes;
|
1201
|
+
return true;
|
1202
|
+
}
|
1203
|
+
|
1017
1204
|
// Retry operation if interrupted by signal.
|
1018
1205
|
if (ec == asio::error::interrupted)
|
1019
1206
|
continue;
|
@@ -1023,15 +1210,41 @@ bool non_blocking_recvfrom(socket_type s,
|
|
1023
1210
|
|| ec == asio::error::try_again)
|
1024
1211
|
return false;
|
1025
1212
|
|
1026
|
-
// Operation
|
1213
|
+
// Operation failed.
|
1214
|
+
bytes_transferred = 0;
|
1215
|
+
return true;
|
1216
|
+
}
|
1217
|
+
}
|
1218
|
+
|
1219
|
+
bool non_blocking_recvfrom1(socket_type s,
|
1220
|
+
void* data, size_t size, int flags,
|
1221
|
+
socket_addr_type* addr, std::size_t* addrlen,
|
1222
|
+
asio::error_code& ec, size_t& bytes_transferred)
|
1223
|
+
{
|
1224
|
+
for (;;)
|
1225
|
+
{
|
1226
|
+
// Read some data.
|
1227
|
+
signed_size_type bytes = socket_ops::recvfrom1(
|
1228
|
+
s, data, size, flags, addr, addrlen, ec);
|
1229
|
+
|
1230
|
+
// Check if operation succeeded.
|
1027
1231
|
if (bytes >= 0)
|
1028
1232
|
{
|
1029
|
-
ec = asio::error_code();
|
1030
1233
|
bytes_transferred = bytes;
|
1234
|
+
return true;
|
1031
1235
|
}
|
1032
|
-
else
|
1033
|
-
bytes_transferred = 0;
|
1034
1236
|
|
1237
|
+
// Retry operation if interrupted by signal.
|
1238
|
+
if (ec == asio::error::interrupted)
|
1239
|
+
continue;
|
1240
|
+
|
1241
|
+
// Check if we need to run the operation again.
|
1242
|
+
if (ec == asio::error::would_block
|
1243
|
+
|| ec == asio::error::try_again)
|
1244
|
+
return false;
|
1245
|
+
|
1246
|
+
// Operation failed.
|
1247
|
+
bytes_transferred = 0;
|
1035
1248
|
return true;
|
1036
1249
|
}
|
1037
1250
|
}
|
@@ -1041,7 +1254,6 @@ bool non_blocking_recvfrom(socket_type s,
|
|
1041
1254
|
signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
|
1042
1255
|
int in_flags, int& out_flags, asio::error_code& ec)
|
1043
1256
|
{
|
1044
|
-
clear_last_error();
|
1045
1257
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1046
1258
|
out_flags = 0;
|
1047
1259
|
return socket_ops::recv(s, bufs, count, in_flags, ec);
|
@@ -1049,12 +1261,10 @@ signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
|
|
1049
1261
|
msghdr msg = msghdr();
|
1050
1262
|
msg.msg_iov = bufs;
|
1051
1263
|
msg.msg_iovlen = static_cast<int>(count);
|
1052
|
-
signed_size_type result =
|
1264
|
+
signed_size_type result = ::recvmsg(s, &msg, in_flags);
|
1265
|
+
get_last_error(ec, result < 0);
|
1053
1266
|
if (result >= 0)
|
1054
|
-
{
|
1055
|
-
ec = asio::error_code();
|
1056
1267
|
out_flags = msg.msg_flags;
|
1057
|
-
}
|
1058
1268
|
else
|
1059
1269
|
out_flags = 0;
|
1060
1270
|
return result;
|
@@ -1130,6 +1340,13 @@ bool non_blocking_recvmsg(socket_type s,
|
|
1130
1340
|
signed_size_type bytes = socket_ops::recvmsg(
|
1131
1341
|
s, bufs, count, in_flags, out_flags, ec);
|
1132
1342
|
|
1343
|
+
// Check if operation succeeded.
|
1344
|
+
if (bytes >= 0)
|
1345
|
+
{
|
1346
|
+
bytes_transferred = bytes;
|
1347
|
+
return true;
|
1348
|
+
}
|
1349
|
+
|
1133
1350
|
// Retry operation if interrupted by signal.
|
1134
1351
|
if (ec == asio::error::interrupted)
|
1135
1352
|
continue;
|
@@ -1139,15 +1356,8 @@ bool non_blocking_recvmsg(socket_type s,
|
|
1139
1356
|
|| ec == asio::error::try_again)
|
1140
1357
|
return false;
|
1141
1358
|
|
1142
|
-
// Operation
|
1143
|
-
|
1144
|
-
{
|
1145
|
-
ec = asio::error_code();
|
1146
|
-
bytes_transferred = bytes;
|
1147
|
-
}
|
1148
|
-
else
|
1149
|
-
bytes_transferred = 0;
|
1150
|
-
|
1359
|
+
// Operation failed.
|
1360
|
+
bytes_transferred = 0;
|
1151
1361
|
return true;
|
1152
1362
|
}
|
1153
1363
|
}
|
@@ -1157,21 +1367,21 @@ bool non_blocking_recvmsg(socket_type s,
|
|
1157
1367
|
signed_size_type send(socket_type s, const buf* bufs, size_t count,
|
1158
1368
|
int flags, asio::error_code& ec)
|
1159
1369
|
{
|
1160
|
-
clear_last_error();
|
1161
1370
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1162
1371
|
// Send the data.
|
1163
1372
|
DWORD send_buf_count = static_cast<DWORD>(count);
|
1164
1373
|
DWORD bytes_transferred = 0;
|
1165
1374
|
DWORD send_flags = flags;
|
1166
|
-
int result =
|
1167
|
-
send_buf_count, &bytes_transferred, send_flags, 0, 0)
|
1375
|
+
int result = ::WSASend(s, const_cast<buf*>(bufs),
|
1376
|
+
send_buf_count, &bytes_transferred, send_flags, 0, 0);
|
1377
|
+
get_last_error(ec, true);
|
1168
1378
|
if (ec.value() == ERROR_NETNAME_DELETED)
|
1169
1379
|
ec = asio::error::connection_reset;
|
1170
1380
|
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
1171
1381
|
ec = asio::error::connection_refused;
|
1172
1382
|
if (result != 0)
|
1173
1383
|
return socket_error_retval;
|
1174
|
-
ec
|
1384
|
+
ec.assign(0, ec.category());
|
1175
1385
|
return bytes_transferred;
|
1176
1386
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1177
1387
|
msghdr msg = msghdr();
|
@@ -1180,9 +1390,40 @@ signed_size_type send(socket_type s, const buf* bufs, size_t count,
|
|
1180
1390
|
#if defined(__linux__)
|
1181
1391
|
flags |= MSG_NOSIGNAL;
|
1182
1392
|
#endif // defined(__linux__)
|
1183
|
-
signed_size_type result =
|
1184
|
-
|
1185
|
-
|
1393
|
+
signed_size_type result = ::sendmsg(s, &msg, flags);
|
1394
|
+
get_last_error(ec, result < 0);
|
1395
|
+
return result;
|
1396
|
+
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1397
|
+
}
|
1398
|
+
|
1399
|
+
signed_size_type send1(socket_type s, const void* data, size_t size,
|
1400
|
+
int flags, asio::error_code& ec)
|
1401
|
+
{
|
1402
|
+
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1403
|
+
// Send the data.
|
1404
|
+
WSABUF buf;
|
1405
|
+
buf.buf = const_cast<char*>(static_cast<const char*>(data));
|
1406
|
+
buf.len = static_cast<ULONG>(size);
|
1407
|
+
DWORD bytes_transferred = 0;
|
1408
|
+
DWORD send_flags = flags;
|
1409
|
+
int result = ::WSASend(s, &buf, 1,
|
1410
|
+
&bytes_transferred, send_flags, 0, 0);
|
1411
|
+
get_last_error(ec, true);
|
1412
|
+
if (ec.value() == ERROR_NETNAME_DELETED)
|
1413
|
+
ec = asio::error::connection_reset;
|
1414
|
+
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
1415
|
+
ec = asio::error::connection_refused;
|
1416
|
+
if (result != 0)
|
1417
|
+
return socket_error_retval;
|
1418
|
+
ec.assign(0, ec.category());
|
1419
|
+
return bytes_transferred;
|
1420
|
+
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1421
|
+
#if defined(__linux__)
|
1422
|
+
flags |= MSG_NOSIGNAL;
|
1423
|
+
#endif // defined(__linux__)
|
1424
|
+
signed_size_type result = ::send(s,
|
1425
|
+
static_cast<const char*>(data), size, flags);
|
1426
|
+
get_last_error(ec, result < 0);
|
1186
1427
|
return result;
|
1187
1428
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1188
1429
|
}
|
@@ -1199,7 +1440,7 @@ size_t sync_send(socket_type s, state_type state, const buf* bufs,
|
|
1199
1440
|
// A request to write 0 bytes to a stream is a no-op.
|
1200
1441
|
if (all_empty && (state & stream_oriented))
|
1201
1442
|
{
|
1202
|
-
ec
|
1443
|
+
ec.assign(0, ec.category());
|
1203
1444
|
return 0;
|
1204
1445
|
}
|
1205
1446
|
|
@@ -1225,6 +1466,44 @@ size_t sync_send(socket_type s, state_type state, const buf* bufs,
|
|
1225
1466
|
}
|
1226
1467
|
}
|
1227
1468
|
|
1469
|
+
size_t sync_send1(socket_type s, state_type state, const void* data,
|
1470
|
+
size_t size, int flags, asio::error_code& ec)
|
1471
|
+
{
|
1472
|
+
if (s == invalid_socket)
|
1473
|
+
{
|
1474
|
+
ec = asio::error::bad_descriptor;
|
1475
|
+
return 0;
|
1476
|
+
}
|
1477
|
+
|
1478
|
+
// A request to write 0 bytes to a stream is a no-op.
|
1479
|
+
if (size == 0 && (state & stream_oriented))
|
1480
|
+
{
|
1481
|
+
ec.assign(0, ec.category());
|
1482
|
+
return 0;
|
1483
|
+
}
|
1484
|
+
|
1485
|
+
// Read some data.
|
1486
|
+
for (;;)
|
1487
|
+
{
|
1488
|
+
// Try to complete the operation without blocking.
|
1489
|
+
signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec);
|
1490
|
+
|
1491
|
+
// Check if operation succeeded.
|
1492
|
+
if (bytes >= 0)
|
1493
|
+
return bytes;
|
1494
|
+
|
1495
|
+
// Operation failed.
|
1496
|
+
if ((state & user_set_non_blocking)
|
1497
|
+
|| (ec != asio::error::would_block
|
1498
|
+
&& ec != asio::error::try_again))
|
1499
|
+
return 0;
|
1500
|
+
|
1501
|
+
// Wait for socket to become ready.
|
1502
|
+
if (socket_ops::poll_write(s, 0, -1, ec) < 0)
|
1503
|
+
return 0;
|
1504
|
+
}
|
1505
|
+
}
|
1506
|
+
|
1228
1507
|
#if defined(ASIO_HAS_IOCP)
|
1229
1508
|
|
1230
1509
|
void complete_iocp_send(
|
@@ -1256,6 +1535,13 @@ bool non_blocking_send(socket_type s,
|
|
1256
1535
|
// Write some data.
|
1257
1536
|
signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
|
1258
1537
|
|
1538
|
+
// Check if operation succeeded.
|
1539
|
+
if (bytes >= 0)
|
1540
|
+
{
|
1541
|
+
bytes_transferred = bytes;
|
1542
|
+
return true;
|
1543
|
+
}
|
1544
|
+
|
1259
1545
|
// Retry operation if interrupted by signal.
|
1260
1546
|
if (ec == asio::error::interrupted)
|
1261
1547
|
continue;
|
@@ -1265,15 +1551,39 @@ bool non_blocking_send(socket_type s,
|
|
1265
1551
|
|| ec == asio::error::try_again)
|
1266
1552
|
return false;
|
1267
1553
|
|
1268
|
-
// Operation
|
1554
|
+
// Operation failed.
|
1555
|
+
bytes_transferred = 0;
|
1556
|
+
return true;
|
1557
|
+
}
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
bool non_blocking_send1(socket_type s,
|
1561
|
+
const void* data, size_t size, int flags,
|
1562
|
+
asio::error_code& ec, size_t& bytes_transferred)
|
1563
|
+
{
|
1564
|
+
for (;;)
|
1565
|
+
{
|
1566
|
+
// Write some data.
|
1567
|
+
signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec);
|
1568
|
+
|
1569
|
+
// Check if operation succeeded.
|
1269
1570
|
if (bytes >= 0)
|
1270
1571
|
{
|
1271
|
-
ec = asio::error_code();
|
1272
1572
|
bytes_transferred = bytes;
|
1573
|
+
return true;
|
1273
1574
|
}
|
1274
|
-
else
|
1275
|
-
bytes_transferred = 0;
|
1276
1575
|
|
1576
|
+
// Retry operation if interrupted by signal.
|
1577
|
+
if (ec == asio::error::interrupted)
|
1578
|
+
continue;
|
1579
|
+
|
1580
|
+
// Check if we need to run the operation again.
|
1581
|
+
if (ec == asio::error::would_block
|
1582
|
+
|| ec == asio::error::try_again)
|
1583
|
+
return false;
|
1584
|
+
|
1585
|
+
// Operation failed.
|
1586
|
+
bytes_transferred = 0;
|
1277
1587
|
return true;
|
1278
1588
|
}
|
1279
1589
|
}
|
@@ -1284,21 +1594,21 @@ signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
|
|
1284
1594
|
int flags, const socket_addr_type* addr, std::size_t addrlen,
|
1285
1595
|
asio::error_code& ec)
|
1286
1596
|
{
|
1287
|
-
clear_last_error();
|
1288
1597
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1289
1598
|
// Send the data.
|
1290
1599
|
DWORD send_buf_count = static_cast<DWORD>(count);
|
1291
1600
|
DWORD bytes_transferred = 0;
|
1292
|
-
int result =
|
1601
|
+
int result = ::WSASendTo(s, const_cast<buf*>(bufs),
|
1293
1602
|
send_buf_count, &bytes_transferred, flags, addr,
|
1294
|
-
static_cast<int>(addrlen), 0, 0)
|
1603
|
+
static_cast<int>(addrlen), 0, 0);
|
1604
|
+
get_last_error(ec, true);
|
1295
1605
|
if (ec.value() == ERROR_NETNAME_DELETED)
|
1296
1606
|
ec = asio::error::connection_reset;
|
1297
1607
|
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
1298
1608
|
ec = asio::error::connection_refused;
|
1299
1609
|
if (result != 0)
|
1300
1610
|
return socket_error_retval;
|
1301
|
-
ec
|
1611
|
+
ec.assign(0, ec.category());
|
1302
1612
|
return bytes_transferred;
|
1303
1613
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1304
1614
|
msghdr msg = msghdr();
|
@@ -1309,9 +1619,49 @@ signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
|
|
1309
1619
|
#if defined(__linux__)
|
1310
1620
|
flags |= MSG_NOSIGNAL;
|
1311
1621
|
#endif // defined(__linux__)
|
1312
|
-
signed_size_type result =
|
1313
|
-
|
1314
|
-
|
1622
|
+
signed_size_type result = ::sendmsg(s, &msg, flags);
|
1623
|
+
get_last_error(ec, result < 0);
|
1624
|
+
return result;
|
1625
|
+
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1626
|
+
}
|
1627
|
+
|
1628
|
+
template <typename SockLenType>
|
1629
|
+
inline signed_size_type call_sendto(SockLenType msghdr::*,
|
1630
|
+
socket_type s, const void* data, size_t size, int flags,
|
1631
|
+
const socket_addr_type* addr, std::size_t addrlen)
|
1632
|
+
{
|
1633
|
+
return ::sendto(s, static_cast<char*>(const_cast<void*>(data)),
|
1634
|
+
size, flags, addr, (SockLenType)addrlen);
|
1635
|
+
}
|
1636
|
+
|
1637
|
+
signed_size_type sendto1(socket_type s, const void* data, size_t size,
|
1638
|
+
int flags, const socket_addr_type* addr, std::size_t addrlen,
|
1639
|
+
asio::error_code& ec)
|
1640
|
+
{
|
1641
|
+
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1642
|
+
// Send the data.
|
1643
|
+
WSABUF buf;
|
1644
|
+
buf.buf = const_cast<char*>(static_cast<const char*>(data));
|
1645
|
+
buf.len = static_cast<ULONG>(size);
|
1646
|
+
DWORD bytes_transferred = 0;
|
1647
|
+
int result = ::WSASendTo(s, &buf, 1, &bytes_transferred,
|
1648
|
+
flags, addr, static_cast<int>(addrlen), 0, 0);
|
1649
|
+
get_last_error(ec, true);
|
1650
|
+
if (ec.value() == ERROR_NETNAME_DELETED)
|
1651
|
+
ec = asio::error::connection_reset;
|
1652
|
+
else if (ec.value() == ERROR_PORT_UNREACHABLE)
|
1653
|
+
ec = asio::error::connection_refused;
|
1654
|
+
if (result != 0)
|
1655
|
+
return socket_error_retval;
|
1656
|
+
ec.assign(0, ec.category());
|
1657
|
+
return bytes_transferred;
|
1658
|
+
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1659
|
+
#if defined(__linux__)
|
1660
|
+
flags |= MSG_NOSIGNAL;
|
1661
|
+
#endif // defined(__linux__)
|
1662
|
+
signed_size_type result = call_sendto(&msghdr::msg_namelen,
|
1663
|
+
s, data, size, flags, addr, addrlen);
|
1664
|
+
get_last_error(ec, result < 0);
|
1315
1665
|
return result;
|
1316
1666
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1317
1667
|
}
|
@@ -1349,6 +1699,39 @@ size_t sync_sendto(socket_type s, state_type state, const buf* bufs,
|
|
1349
1699
|
}
|
1350
1700
|
}
|
1351
1701
|
|
1702
|
+
size_t sync_sendto1(socket_type s, state_type state, const void* data,
|
1703
|
+
size_t size, int flags, const socket_addr_type* addr,
|
1704
|
+
std::size_t addrlen, asio::error_code& ec)
|
1705
|
+
{
|
1706
|
+
if (s == invalid_socket)
|
1707
|
+
{
|
1708
|
+
ec = asio::error::bad_descriptor;
|
1709
|
+
return 0;
|
1710
|
+
}
|
1711
|
+
|
1712
|
+
// Write some data.
|
1713
|
+
for (;;)
|
1714
|
+
{
|
1715
|
+
// Try to complete the operation without blocking.
|
1716
|
+
signed_size_type bytes = socket_ops::sendto1(
|
1717
|
+
s, data, size, flags, addr, addrlen, ec);
|
1718
|
+
|
1719
|
+
// Check if operation succeeded.
|
1720
|
+
if (bytes >= 0)
|
1721
|
+
return bytes;
|
1722
|
+
|
1723
|
+
// Operation failed.
|
1724
|
+
if ((state & user_set_non_blocking)
|
1725
|
+
|| (ec != asio::error::would_block
|
1726
|
+
&& ec != asio::error::try_again))
|
1727
|
+
return 0;
|
1728
|
+
|
1729
|
+
// Wait for socket to become ready.
|
1730
|
+
if (socket_ops::poll_write(s, 0, -1, ec) < 0)
|
1731
|
+
return 0;
|
1732
|
+
}
|
1733
|
+
}
|
1734
|
+
|
1352
1735
|
#if !defined(ASIO_HAS_IOCP)
|
1353
1736
|
|
1354
1737
|
bool non_blocking_sendto(socket_type s,
|
@@ -1362,6 +1745,13 @@ bool non_blocking_sendto(socket_type s,
|
|
1362
1745
|
signed_size_type bytes = socket_ops::sendto(
|
1363
1746
|
s, bufs, count, flags, addr, addrlen, ec);
|
1364
1747
|
|
1748
|
+
// Check if operation succeeded.
|
1749
|
+
if (bytes >= 0)
|
1750
|
+
{
|
1751
|
+
bytes_transferred = bytes;
|
1752
|
+
return true;
|
1753
|
+
}
|
1754
|
+
|
1365
1755
|
// Retry operation if interrupted by signal.
|
1366
1756
|
if (ec == asio::error::interrupted)
|
1367
1757
|
continue;
|
@@ -1371,15 +1761,41 @@ bool non_blocking_sendto(socket_type s,
|
|
1371
1761
|
|| ec == asio::error::try_again)
|
1372
1762
|
return false;
|
1373
1763
|
|
1374
|
-
// Operation
|
1764
|
+
// Operation failed.
|
1765
|
+
bytes_transferred = 0;
|
1766
|
+
return true;
|
1767
|
+
}
|
1768
|
+
}
|
1769
|
+
|
1770
|
+
bool non_blocking_sendto1(socket_type s,
|
1771
|
+
const void* data, size_t size, int flags,
|
1772
|
+
const socket_addr_type* addr, std::size_t addrlen,
|
1773
|
+
asio::error_code& ec, size_t& bytes_transferred)
|
1774
|
+
{
|
1775
|
+
for (;;)
|
1776
|
+
{
|
1777
|
+
// Write some data.
|
1778
|
+
signed_size_type bytes = socket_ops::sendto1(
|
1779
|
+
s, data, size, flags, addr, addrlen, ec);
|
1780
|
+
|
1781
|
+
// Check if operation succeeded.
|
1375
1782
|
if (bytes >= 0)
|
1376
1783
|
{
|
1377
|
-
ec = asio::error_code();
|
1378
1784
|
bytes_transferred = bytes;
|
1785
|
+
return true;
|
1379
1786
|
}
|
1380
|
-
else
|
1381
|
-
bytes_transferred = 0;
|
1382
1787
|
|
1788
|
+
// Retry operation if interrupted by signal.
|
1789
|
+
if (ec == asio::error::interrupted)
|
1790
|
+
continue;
|
1791
|
+
|
1792
|
+
// Check if we need to run the operation again.
|
1793
|
+
if (ec == asio::error::would_block
|
1794
|
+
|| ec == asio::error::try_again)
|
1795
|
+
return false;
|
1796
|
+
|
1797
|
+
// Operation failed.
|
1798
|
+
bytes_transferred = 0;
|
1383
1799
|
return true;
|
1384
1800
|
}
|
1385
1801
|
}
|
@@ -1389,10 +1805,9 @@ bool non_blocking_sendto(socket_type s,
|
|
1389
1805
|
socket_type socket(int af, int type, int protocol,
|
1390
1806
|
asio::error_code& ec)
|
1391
1807
|
{
|
1392
|
-
clear_last_error();
|
1393
1808
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1394
|
-
socket_type s =
|
1395
|
-
|
1809
|
+
socket_type s = ::WSASocketW(af, type, protocol, 0, 0, WSA_FLAG_OVERLAPPED);
|
1810
|
+
get_last_error(ec, s == invalid_socket);
|
1396
1811
|
if (s == invalid_socket)
|
1397
1812
|
return s;
|
1398
1813
|
|
@@ -1406,17 +1821,15 @@ socket_type socket(int af, int type, int protocol,
|
|
1406
1821
|
reinterpret_cast<const char*>(&optval), sizeof(optval));
|
1407
1822
|
}
|
1408
1823
|
|
1409
|
-
ec = asio::error_code();
|
1410
|
-
|
1411
1824
|
return s;
|
1412
1825
|
#elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
|
1413
|
-
socket_type s =
|
1414
|
-
|
1415
|
-
return s;
|
1826
|
+
socket_type s = ::socket(af, type, protocol);
|
1827
|
+
get_last_error(ec, s < 0);
|
1416
1828
|
|
1417
1829
|
int optval = 1;
|
1418
|
-
int result =
|
1419
|
-
|
1830
|
+
int result = ::setsockopt(s, SOL_SOCKET,
|
1831
|
+
SO_NOSIGPIPE, &optval, sizeof(optval));
|
1832
|
+
get_last_error(ec, result != 0);
|
1420
1833
|
if (result != 0)
|
1421
1834
|
{
|
1422
1835
|
::close(s);
|
@@ -1425,9 +1838,8 @@ socket_type socket(int af, int type, int protocol,
|
|
1425
1838
|
|
1426
1839
|
return s;
|
1427
1840
|
#else
|
1428
|
-
int s =
|
1429
|
-
|
1430
|
-
ec = asio::error_code();
|
1841
|
+
int s = ::socket(af, type, protocol);
|
1842
|
+
get_last_error(ec, s < 0);
|
1431
1843
|
return s;
|
1432
1844
|
#endif
|
1433
1845
|
}
|
@@ -1469,7 +1881,7 @@ int setsockopt(socket_type s, state_type& state, int level, int optname,
|
|
1469
1881
|
state |= enable_connection_aborted;
|
1470
1882
|
else
|
1471
1883
|
state &= ~enable_connection_aborted;
|
1472
|
-
ec
|
1884
|
+
ec.assign(0, ec.category());
|
1473
1885
|
return 0;
|
1474
1886
|
}
|
1475
1887
|
|
@@ -1485,22 +1897,21 @@ int setsockopt(socket_type s, state_type& state, int level, int optname,
|
|
1485
1897
|
typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int);
|
1486
1898
|
if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt"))
|
1487
1899
|
{
|
1488
|
-
|
1489
|
-
return error_wrapper(sso(s, level, optname,
|
1900
|
+
int result = sso(s, level, optname,
|
1490
1901
|
reinterpret_cast<const char*>(optval),
|
1491
|
-
static_cast<int>(optlen))
|
1902
|
+
static_cast<int>(optlen));
|
1903
|
+
get_last_error(ec, result != 0);
|
1904
|
+
return result;
|
1492
1905
|
}
|
1493
1906
|
}
|
1494
1907
|
ec = asio::error::fault;
|
1495
1908
|
return socket_error_retval;
|
1496
1909
|
#else // defined(__BORLANDC__)
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1910
|
+
int result = call_setsockopt(&msghdr::msg_namelen,
|
1911
|
+
s, level, optname, optval, optlen);
|
1912
|
+
get_last_error(ec, result != 0);
|
1500
1913
|
if (result == 0)
|
1501
1914
|
{
|
1502
|
-
ec = asio::error_code();
|
1503
|
-
|
1504
1915
|
#if defined(__MACH__) && defined(__APPLE__) \
|
1505
1916
|
|| defined(__NetBSD__) || defined(__FreeBSD__) \
|
1506
1917
|
|| defined(__OpenBSD__) || defined(__QNX__)
|
@@ -1555,7 +1966,7 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1555
1966
|
}
|
1556
1967
|
|
1557
1968
|
*static_cast<int*>(optval) = (state & enable_connection_aborted) ? 1 : 0;
|
1558
|
-
ec
|
1969
|
+
ec.assign(0, ec.category());
|
1559
1970
|
return 0;
|
1560
1971
|
}
|
1561
1972
|
|
@@ -1568,10 +1979,10 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1568
1979
|
typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*);
|
1569
1980
|
if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt"))
|
1570
1981
|
{
|
1571
|
-
clear_last_error();
|
1572
1982
|
int tmp_optlen = static_cast<int>(*optlen);
|
1573
|
-
int result =
|
1574
|
-
reinterpret_cast<char*>(optval), &tmp_optlen)
|
1983
|
+
int result = gso(s, level, optname,
|
1984
|
+
reinterpret_cast<char*>(optval), &tmp_optlen);
|
1985
|
+
get_last_error(ec, result != 0);
|
1575
1986
|
*optlen = static_cast<size_t>(tmp_optlen);
|
1576
1987
|
if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
|
1577
1988
|
&& ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
|
@@ -1582,7 +1993,7 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1582
1993
|
// value is non-zero (i.e. true). This corresponds to the behavior of
|
1583
1994
|
// IPv6 sockets on Windows platforms pre-Vista.
|
1584
1995
|
*static_cast<DWORD*>(optval) = 1;
|
1585
|
-
ec
|
1996
|
+
ec.assign(0, ec.category());
|
1586
1997
|
}
|
1587
1998
|
return result;
|
1588
1999
|
}
|
@@ -1590,9 +2001,9 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1590
2001
|
ec = asio::error::fault;
|
1591
2002
|
return socket_error_retval;
|
1592
2003
|
#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
2004
|
+
int result = call_getsockopt(&msghdr::msg_namelen,
|
2005
|
+
s, level, optname, optval, optlen);
|
2006
|
+
get_last_error(ec, result != 0);
|
1596
2007
|
if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
|
1597
2008
|
&& ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
|
1598
2009
|
{
|
@@ -1602,15 +2013,13 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1602
2013
|
// non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets
|
1603
2014
|
// on Windows platforms pre-Vista.
|
1604
2015
|
*static_cast<DWORD*>(optval) = 1;
|
1605
|
-
ec
|
2016
|
+
ec.assign(0, ec.category());
|
1606
2017
|
}
|
1607
|
-
if (result == 0)
|
1608
|
-
ec = asio::error_code();
|
1609
2018
|
return result;
|
1610
2019
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
2020
|
+
int result = call_getsockopt(&msghdr::msg_namelen,
|
2021
|
+
s, level, optname, optval, optlen);
|
2022
|
+
get_last_error(ec, result != 0);
|
1614
2023
|
#if defined(__linux__)
|
1615
2024
|
if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int)
|
1616
2025
|
&& (optname == SO_SNDBUF || optname == SO_RCVBUF))
|
@@ -1623,8 +2032,6 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
|
|
1623
2032
|
*static_cast<int*>(optval) /= 2;
|
1624
2033
|
}
|
1625
2034
|
#endif // defined(__linux__)
|
1626
|
-
if (result == 0)
|
1627
|
-
ec = asio::error_code();
|
1628
2035
|
return result;
|
1629
2036
|
#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1630
2037
|
}
|
@@ -1667,7 +2074,7 @@ int getpeername(socket_type s, socket_addr_type* addr,
|
|
1667
2074
|
}
|
1668
2075
|
|
1669
2076
|
// The cached value is still valid.
|
1670
|
-
ec
|
2077
|
+
ec.assign(0, ec.category());
|
1671
2078
|
return 0;
|
1672
2079
|
}
|
1673
2080
|
#else // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP)
|
@@ -1676,11 +2083,8 @@ int getpeername(socket_type s, socket_addr_type* addr,
|
|
1676
2083
|
#endif // defined(ASIO_WINDOWS) && !defined(ASIO_WINDOWS_APP)
|
1677
2084
|
// || defined(__CYGWIN__)
|
1678
2085
|
|
1679
|
-
|
1680
|
-
|
1681
|
-
&msghdr::msg_namelen, s, addr, addrlen), ec);
|
1682
|
-
if (result == 0)
|
1683
|
-
ec = asio::error_code();
|
2086
|
+
int result = call_getpeername(&msghdr::msg_namelen, s, addr, addrlen);
|
2087
|
+
get_last_error(ec, result != 0);
|
1684
2088
|
return result;
|
1685
2089
|
}
|
1686
2090
|
|
@@ -1703,11 +2107,8 @@ int getsockname(socket_type s, socket_addr_type* addr,
|
|
1703
2107
|
return socket_error_retval;
|
1704
2108
|
}
|
1705
2109
|
|
1706
|
-
|
1707
|
-
|
1708
|
-
&msghdr::msg_namelen, s, addr, addrlen), ec);
|
1709
|
-
if (result == 0)
|
1710
|
-
ec = asio::error_code();
|
2110
|
+
int result = call_getsockname(&msghdr::msg_namelen, s, addr, addrlen);
|
2111
|
+
get_last_error(ec, result != 0);
|
1711
2112
|
return result;
|
1712
2113
|
}
|
1713
2114
|
|
@@ -1720,20 +2121,17 @@ int ioctl(socket_type s, state_type& state, int cmd,
|
|
1720
2121
|
return socket_error_retval;
|
1721
2122
|
}
|
1722
2123
|
|
1723
|
-
clear_last_error();
|
1724
2124
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
1725
|
-
int result =
|
2125
|
+
int result = ::ioctlsocket(s, cmd, arg);
|
1726
2126
|
#elif defined(__MACH__) && defined(__APPLE__) \
|
1727
2127
|
|| defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
|
1728
|
-
int result =
|
1729
|
-
static_cast<unsigned int>(cmd), arg), ec);
|
2128
|
+
int result = ::ioctl(s, static_cast<unsigned int>(cmd), arg);
|
1730
2129
|
#else
|
1731
|
-
int result =
|
2130
|
+
int result = ::ioctl(s, cmd, arg);
|
1732
2131
|
#endif
|
2132
|
+
get_last_error(ec, result < 0);
|
1733
2133
|
if (result >= 0)
|
1734
2134
|
{
|
1735
|
-
ec = asio::error_code();
|
1736
|
-
|
1737
2135
|
// When updating the non-blocking mode we always perform the ioctl syscall,
|
1738
2136
|
// even if the flags would otherwise indicate that the socket is already in
|
1739
2137
|
// the correct state. This ensures that the underlying socket is put into
|
@@ -1761,7 +2159,6 @@ int ioctl(socket_type s, state_type& state, int cmd,
|
|
1761
2159
|
int select(int nfds, fd_set* readfds, fd_set* writefds,
|
1762
2160
|
fd_set* exceptfds, timeval* timeout, asio::error_code& ec)
|
1763
2161
|
{
|
1764
|
-
clear_last_error();
|
1765
2162
|
#if defined(__EMSCRIPTEN__)
|
1766
2163
|
exceptfds = 0;
|
1767
2164
|
#endif // defined(__EMSCRIPTEN__)
|
@@ -1772,7 +2169,7 @@ int select(int nfds, fd_set* readfds, fd_set* writefds,
|
|
1772
2169
|
if (milliseconds == 0)
|
1773
2170
|
milliseconds = 1; // Force context switch.
|
1774
2171
|
::Sleep(milliseconds);
|
1775
|
-
ec
|
2172
|
+
ec.assign(0, ec.category());
|
1776
2173
|
return 0;
|
1777
2174
|
}
|
1778
2175
|
|
@@ -1791,15 +2188,13 @@ int select(int nfds, fd_set* readfds, fd_set* writefds,
|
|
1791
2188
|
timespec ts;
|
1792
2189
|
ts.tv_sec = timeout ? timeout->tv_sec : 0;
|
1793
2190
|
ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0;
|
1794
|
-
|
1795
|
-
writefds, exceptfds, timeout ? &ts : 0, 0)
|
2191
|
+
int result = ::pselect(nfds, readfds,
|
2192
|
+
writefds, exceptfds, timeout ? &ts : 0, 0);
|
1796
2193
|
#else
|
1797
|
-
int result =
|
1798
|
-
writefds, exceptfds, timeout), ec);
|
1799
|
-
if (result >= 0)
|
1800
|
-
ec = asio::error_code();
|
1801
|
-
return result;
|
2194
|
+
int result = ::select(nfds, readfds, writefds, exceptfds, timeout);
|
1802
2195
|
#endif
|
2196
|
+
get_last_error(ec, result < 0);
|
2197
|
+
return result;
|
1803
2198
|
}
|
1804
2199
|
|
1805
2200
|
int poll_read(socket_type s, state_type state,
|
@@ -1833,8 +2228,8 @@ int poll_read(socket_type s, state_type state,
|
|
1833
2228
|
}
|
1834
2229
|
else
|
1835
2230
|
timeout = 0;
|
1836
|
-
|
1837
|
-
|
2231
|
+
int result = ::select(s + 1, &fds, 0, 0, timeout);
|
2232
|
+
get_last_error(ec, result < 0);
|
1838
2233
|
#else // defined(ASIO_WINDOWS)
|
1839
2234
|
// || defined(__CYGWIN__)
|
1840
2235
|
// || defined(__SYMBIAN32__)
|
@@ -1843,16 +2238,14 @@ int poll_read(socket_type s, state_type state,
|
|
1843
2238
|
fds.events = POLLIN;
|
1844
2239
|
fds.revents = 0;
|
1845
2240
|
int timeout = (state & user_set_non_blocking) ? 0 : msec;
|
1846
|
-
|
1847
|
-
|
2241
|
+
int result = ::poll(&fds, 1, timeout);
|
2242
|
+
get_last_error(ec, result < 0);
|
1848
2243
|
#endif // defined(ASIO_WINDOWS)
|
1849
2244
|
// || defined(__CYGWIN__)
|
1850
2245
|
// || defined(__SYMBIAN32__)
|
1851
2246
|
if (result == 0)
|
1852
|
-
|
1853
|
-
|
1854
|
-
else if (result > 0)
|
1855
|
-
ec = asio::error_code();
|
2247
|
+
if (state & user_set_non_blocking)
|
2248
|
+
ec = asio::error::would_block;
|
1856
2249
|
return result;
|
1857
2250
|
}
|
1858
2251
|
|
@@ -1887,8 +2280,8 @@ int poll_write(socket_type s, state_type state,
|
|
1887
2280
|
}
|
1888
2281
|
else
|
1889
2282
|
timeout = 0;
|
1890
|
-
|
1891
|
-
|
2283
|
+
int result = ::select(s + 1, 0, &fds, 0, timeout);
|
2284
|
+
get_last_error(ec, result < 0);
|
1892
2285
|
#else // defined(ASIO_WINDOWS)
|
1893
2286
|
// || defined(__CYGWIN__)
|
1894
2287
|
// || defined(__SYMBIAN32__)
|
@@ -1897,16 +2290,14 @@ int poll_write(socket_type s, state_type state,
|
|
1897
2290
|
fds.events = POLLOUT;
|
1898
2291
|
fds.revents = 0;
|
1899
2292
|
int timeout = (state & user_set_non_blocking) ? 0 : msec;
|
1900
|
-
|
1901
|
-
|
2293
|
+
int result = ::poll(&fds, 1, timeout);
|
2294
|
+
get_last_error(ec, result < 0);
|
1902
2295
|
#endif // defined(ASIO_WINDOWS)
|
1903
2296
|
// || defined(__CYGWIN__)
|
1904
2297
|
// || defined(__SYMBIAN32__)
|
1905
2298
|
if (result == 0)
|
1906
|
-
|
1907
|
-
|
1908
|
-
else if (result > 0)
|
1909
|
-
ec = asio::error_code();
|
2299
|
+
if (state & user_set_non_blocking)
|
2300
|
+
ec = asio::error::would_block;
|
1910
2301
|
return result;
|
1911
2302
|
}
|
1912
2303
|
|
@@ -1941,8 +2332,8 @@ int poll_error(socket_type s, state_type state,
|
|
1941
2332
|
}
|
1942
2333
|
else
|
1943
2334
|
timeout = 0;
|
1944
|
-
|
1945
|
-
|
2335
|
+
int result = ::select(s + 1, 0, 0, &fds, timeout);
|
2336
|
+
get_last_error(ec, result < 0);
|
1946
2337
|
#else // defined(ASIO_WINDOWS)
|
1947
2338
|
// || defined(__CYGWIN__)
|
1948
2339
|
// || defined(__SYMBIAN32__)
|
@@ -1951,16 +2342,14 @@ int poll_error(socket_type s, state_type state,
|
|
1951
2342
|
fds.events = POLLPRI | POLLERR | POLLHUP;
|
1952
2343
|
fds.revents = 0;
|
1953
2344
|
int timeout = (state & user_set_non_blocking) ? 0 : msec;
|
1954
|
-
|
1955
|
-
|
2345
|
+
int result = ::poll(&fds, 1, timeout);
|
2346
|
+
get_last_error(ec, result < 0);
|
1956
2347
|
#endif // defined(ASIO_WINDOWS)
|
1957
2348
|
// || defined(__CYGWIN__)
|
1958
2349
|
// || defined(__SYMBIAN32__)
|
1959
2350
|
if (result == 0)
|
1960
|
-
|
1961
|
-
|
1962
|
-
else if (result > 0)
|
1963
|
-
ec = asio::error_code();
|
2351
|
+
if (state & user_set_non_blocking)
|
2352
|
+
ec = asio::error::would_block;
|
1964
2353
|
return result;
|
1965
2354
|
}
|
1966
2355
|
|
@@ -1991,11 +2380,8 @@ int poll_connect(socket_type s, int msec, asio::error_code& ec)
|
|
1991
2380
|
}
|
1992
2381
|
else
|
1993
2382
|
timeout = 0;
|
1994
|
-
|
1995
|
-
|
1996
|
-
s + 1, 0, &write_fds, &except_fds, timeout), ec);
|
1997
|
-
if (result >= 0)
|
1998
|
-
ec = asio::error_code();
|
2383
|
+
int result = ::select(s + 1, 0, &write_fds, &except_fds, timeout);
|
2384
|
+
get_last_error(ec, result < 0);
|
1999
2385
|
return result;
|
2000
2386
|
#else // defined(ASIO_WINDOWS)
|
2001
2387
|
// || defined(__CYGWIN__)
|
@@ -2004,10 +2390,8 @@ int poll_connect(socket_type s, int msec, asio::error_code& ec)
|
|
2004
2390
|
fds.fd = s;
|
2005
2391
|
fds.events = POLLOUT;
|
2006
2392
|
fds.revents = 0;
|
2007
|
-
|
2008
|
-
|
2009
|
-
if (result >= 0)
|
2010
|
-
ec = asio::error_code();
|
2393
|
+
int result = ::poll(&fds, 1, msec);
|
2394
|
+
get_last_error(ec, result < 0);
|
2011
2395
|
return result;
|
2012
2396
|
#endif // defined(ASIO_WINDOWS)
|
2013
2397
|
// || defined(__CYGWIN__)
|
@@ -2092,18 +2476,20 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length,
|
|
2092
2476
|
DWORD string_length = static_cast<DWORD>(length);
|
2093
2477
|
#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800))
|
2094
2478
|
LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR));
|
2095
|
-
int result =
|
2096
|
-
address_length, 0, string_buffer, &string_length)
|
2479
|
+
int result = ::WSAAddressToStringW(&address.base,
|
2480
|
+
address_length, 0, string_buffer, &string_length);
|
2481
|
+
get_last_error(ec, true);
|
2097
2482
|
::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1,
|
2098
2483
|
dest, static_cast<int>(length), 0, 0);
|
2099
2484
|
#else
|
2100
|
-
int result =
|
2101
|
-
|
2485
|
+
int result = ::WSAAddressToStringA(&address.base,
|
2486
|
+
address_length, 0, dest, &string_length);
|
2487
|
+
get_last_error(ec, true);
|
2102
2488
|
#endif
|
2103
2489
|
|
2104
2490
|
// Windows may set error code on success.
|
2105
2491
|
if (result != socket_error_retval)
|
2106
|
-
ec
|
2492
|
+
ec.assign(0, ec.category());
|
2107
2493
|
|
2108
2494
|
// Windows may not set an error code on failure.
|
2109
2495
|
else if (result == socket_error_retval && !ec)
|
@@ -2111,8 +2497,8 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length,
|
|
2111
2497
|
|
2112
2498
|
return result == socket_error_retval ? 0 : dest;
|
2113
2499
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
2114
|
-
const char* result =
|
2115
|
-
|
2500
|
+
const char* result = ::inet_ntop(af, src, dest, static_cast<int>(length));
|
2501
|
+
get_last_error(ec, true);
|
2116
2502
|
if (result == 0 && !ec)
|
2117
2503
|
ec = asio::error::invalid_argument;
|
2118
2504
|
if (result != 0 && af == ASIO_OS_DEF(AF_INET6) && scope_id != 0)
|
@@ -2157,7 +2543,7 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2157
2543
|
bytes[1] = static_cast<unsigned char>(b1);
|
2158
2544
|
bytes[2] = static_cast<unsigned char>(b2);
|
2159
2545
|
bytes[3] = static_cast<unsigned char>(b3);
|
2160
|
-
ec
|
2546
|
+
ec.assign(), ec.category());
|
2161
2547
|
return 1;
|
2162
2548
|
}
|
2163
2549
|
else if (af == ASIO_OS_DEF(AF_INET6))
|
@@ -2273,7 +2659,7 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2273
2659
|
for (int i = 0; i < num_back_bytes; ++i)
|
2274
2660
|
bytes[16 - num_back_bytes + i] = back_bytes[i];
|
2275
2661
|
|
2276
|
-
ec
|
2662
|
+
ec.assign(0, ec.category());
|
2277
2663
|
return 1;
|
2278
2664
|
}
|
2279
2665
|
else
|
@@ -2302,11 +2688,13 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2302
2688
|
int num_wide_chars = static_cast<int>(strlen(src)) + 1;
|
2303
2689
|
LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR));
|
2304
2690
|
::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars);
|
2305
|
-
int result =
|
2306
|
-
|
2691
|
+
int result = ::WSAStringToAddressW(wide_buffer,
|
2692
|
+
af, 0, &address.base, &address_length);
|
2693
|
+
get_last_error(ec, true);
|
2307
2694
|
#else
|
2308
|
-
int result =
|
2309
|
-
|
2695
|
+
int result = ::WSAStringToAddressA(const_cast<char*>(src),
|
2696
|
+
af, 0, &address.base, &address_length);
|
2697
|
+
get_last_error(ec, true);
|
2310
2698
|
#endif
|
2311
2699
|
|
2312
2700
|
if (af == ASIO_OS_DEF(AF_INET))
|
@@ -2314,12 +2702,12 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2314
2702
|
if (result != socket_error_retval)
|
2315
2703
|
{
|
2316
2704
|
memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type));
|
2317
|
-
ec
|
2705
|
+
ec.assign(0, ec.category());
|
2318
2706
|
}
|
2319
2707
|
else if (strcmp(src, "255.255.255.255") == 0)
|
2320
2708
|
{
|
2321
2709
|
static_cast<in4_addr_type*>(dest)->s_addr = INADDR_NONE;
|
2322
|
-
ec
|
2710
|
+
ec.assign(0, ec.category());
|
2323
2711
|
}
|
2324
2712
|
}
|
2325
2713
|
else // AF_INET6
|
@@ -2329,7 +2717,7 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2329
2717
|
memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type));
|
2330
2718
|
if (scope_id)
|
2331
2719
|
*scope_id = address.v6.sin6_scope_id;
|
2332
|
-
ec
|
2720
|
+
ec.assign(0, ec.category());
|
2333
2721
|
}
|
2334
2722
|
}
|
2335
2723
|
|
@@ -2338,7 +2726,7 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2338
2726
|
ec = asio::error::invalid_argument;
|
2339
2727
|
|
2340
2728
|
if (result != socket_error_retval)
|
2341
|
-
ec
|
2729
|
+
ec.assign(0, ec.category());
|
2342
2730
|
|
2343
2731
|
return result == socket_error_retval ? -1 : 1;
|
2344
2732
|
#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
@@ -2362,7 +2750,8 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2362
2750
|
src_ptr = src_buf;
|
2363
2751
|
}
|
2364
2752
|
|
2365
|
-
int result =
|
2753
|
+
int result = ::inet_pton(af, src_ptr, dest);
|
2754
|
+
get_last_error(ec, true);
|
2366
2755
|
if (result <= 0 && !ec)
|
2367
2756
|
ec = asio::error::invalid_argument;
|
2368
2757
|
if (result > 0 && is_v6 && scope_id)
|
@@ -2388,7 +2777,6 @@ int inet_pton(int af, const char* src, void* dest,
|
|
2388
2777
|
|
2389
2778
|
int gethostname(char* name, int namelen, asio::error_code& ec)
|
2390
2779
|
{
|
2391
|
-
clear_last_error();
|
2392
2780
|
#if defined(ASIO_WINDOWS_RUNTIME)
|
2393
2781
|
try
|
2394
2782
|
{
|
@@ -2419,11 +2807,8 @@ int gethostname(char* name, int namelen, asio::error_code& ec)
|
|
2419
2807
|
return -1;
|
2420
2808
|
}
|
2421
2809
|
#else // defined(ASIO_WINDOWS_RUNTIME)
|
2422
|
-
int result =
|
2423
|
-
|
2424
|
-
if (result == 0)
|
2425
|
-
ec = asio::error_code();
|
2426
|
-
# endif // defined(ASIO_WINDOWS)
|
2810
|
+
int result = ::gethostname(name, namelen);
|
2811
|
+
get_last_error(ec, result != 0);
|
2427
2812
|
return result;
|
2428
2813
|
#endif // defined(ASIO_WINDOWS_RUNTIME)
|
2429
2814
|
}
|
@@ -2458,20 +2843,20 @@ inline asio::error_code translate_netdb_error(int error)
|
|
2458
2843
|
inline hostent* gethostbyaddr(const char* addr, int length, int af,
|
2459
2844
|
hostent* result, char* buffer, int buflength, asio::error_code& ec)
|
2460
2845
|
{
|
2461
|
-
clear_last_error();
|
2462
2846
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
2463
2847
|
(void)(buffer);
|
2464
2848
|
(void)(buflength);
|
2465
|
-
hostent* retval =
|
2849
|
+
hostent* retval = ::gethostbyaddr(addr, length, af);
|
2850
|
+
get_last_error(ec, !retval);
|
2466
2851
|
if (!retval)
|
2467
2852
|
return 0;
|
2468
|
-
ec = asio::error_code();
|
2469
2853
|
*result = *retval;
|
2470
2854
|
return retval;
|
2471
2855
|
#elif defined(__sun) || defined(__QNX__)
|
2472
2856
|
int error = 0;
|
2473
|
-
hostent* retval =
|
2474
|
-
|
2857
|
+
hostent* retval = ::gethostbyaddr_r(addr, length,
|
2858
|
+
af, result, buffer, buflength, &error);
|
2859
|
+
get_last_error(ec, !retval);
|
2475
2860
|
if (error)
|
2476
2861
|
ec = translate_netdb_error(error);
|
2477
2862
|
return retval;
|
@@ -2479,8 +2864,8 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
|
|
2479
2864
|
(void)(buffer);
|
2480
2865
|
(void)(buflength);
|
2481
2866
|
int error = 0;
|
2482
|
-
hostent* retval =
|
2483
|
-
|
2867
|
+
hostent* retval = ::getipnodebyaddr(addr, length, af, &error);
|
2868
|
+
get_last_error(ec, !retval);
|
2484
2869
|
if (error)
|
2485
2870
|
ec = translate_netdb_error(error);
|
2486
2871
|
if (!retval)
|
@@ -2490,8 +2875,10 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
|
|
2490
2875
|
#else
|
2491
2876
|
hostent* retval = 0;
|
2492
2877
|
int error = 0;
|
2493
|
-
|
2494
|
-
|
2878
|
+
clear_last_error();
|
2879
|
+
::gethostbyaddr_r(addr, length, af, result,
|
2880
|
+
buffer, buflength, &retval, &error);
|
2881
|
+
get_last_error(ec, true);
|
2495
2882
|
if (error)
|
2496
2883
|
ec = translate_netdb_error(error);
|
2497
2884
|
return retval;
|
@@ -2501,7 +2888,6 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
|
|
2501
2888
|
inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
|
2502
2889
|
char* buffer, int buflength, int ai_flags, asio::error_code& ec)
|
2503
2890
|
{
|
2504
|
-
clear_last_error();
|
2505
2891
|
#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
|
2506
2892
|
(void)(buffer);
|
2507
2893
|
(void)(buflength);
|
@@ -2511,10 +2897,10 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
|
|
2511
2897
|
ec = asio::error::address_family_not_supported;
|
2512
2898
|
return 0;
|
2513
2899
|
}
|
2514
|
-
hostent* retval =
|
2900
|
+
hostent* retval = ::gethostbyname(name);
|
2901
|
+
get_last_error(ec, !retval);
|
2515
2902
|
if (!retval)
|
2516
2903
|
return 0;
|
2517
|
-
ec = asio::error_code();
|
2518
2904
|
*result = *retval;
|
2519
2905
|
return result;
|
2520
2906
|
#elif defined(__sun) || defined(__QNX__)
|
@@ -2525,8 +2911,8 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
|
|
2525
2911
|
return 0;
|
2526
2912
|
}
|
2527
2913
|
int error = 0;
|
2528
|
-
hostent* retval =
|
2529
|
-
|
2914
|
+
hostent* retval = ::gethostbyname_r(name, result, buffer, buflength, &error);
|
2915
|
+
get_last_error(ec, !retval);
|
2530
2916
|
if (error)
|
2531
2917
|
ec = translate_netdb_error(error);
|
2532
2918
|
return retval;
|
@@ -2534,8 +2920,8 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
|
|
2534
2920
|
(void)(buffer);
|
2535
2921
|
(void)(buflength);
|
2536
2922
|
int error = 0;
|
2537
|
-
hostent* retval =
|
2538
|
-
|
2923
|
+
hostent* retval = ::getipnodebyname(name, af, ai_flags, &error);
|
2924
|
+
get_last_error(ec, !retval);
|
2539
2925
|
if (error)
|
2540
2926
|
ec = translate_netdb_error(error);
|
2541
2927
|
if (!retval)
|
@@ -2551,8 +2937,9 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
|
|
2551
2937
|
}
|
2552
2938
|
hostent* retval = 0;
|
2553
2939
|
int error = 0;
|
2554
|
-
|
2555
|
-
|
2940
|
+
clear_last_error();
|
2941
|
+
::gethostbyname_r(name, result, buffer, buflength, &retval, &error);
|
2942
|
+
get_last_error(ec, true);
|
2556
2943
|
if (error)
|
2557
2944
|
ec = translate_netdb_error(error);
|
2558
2945
|
return retval;
|
@@ -3268,7 +3655,7 @@ inline asio::error_code getnameinfo_emulation(
|
|
3268
3655
|
}
|
3269
3656
|
}
|
3270
3657
|
|
3271
|
-
ec
|
3658
|
+
ec.assign(0, ec.category());
|
3272
3659
|
return ec;
|
3273
3660
|
}
|
3274
3661
|
|