couchbase 3.0.0.alpha.5 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +76 -5
- data/ext/CMakeLists.txt +95 -128
- data/ext/build_config.hxx.in +22 -0
- data/ext/build_version.hxx.in +10 -6
- 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 +84 -0
- data/ext/cmake/PreventInSourceBuilds.cmake +21 -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 +49 -0
- data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
- data/ext/cmake/VersionInfo.cmake +37 -0
- data/ext/couchbase/bucket.hxx +295 -18
- data/ext/couchbase/capabilities.hxx +117 -0
- data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
- data/ext/couchbase/cbsasl/client.h +1 -1
- data/ext/couchbase/cluster.hxx +255 -75
- data/ext/couchbase/cluster_options.hxx +54 -0
- data/ext/couchbase/configuration.hxx +440 -44
- data/ext/couchbase/couchbase.cxx +4312 -1746
- data/ext/couchbase/diagnostics.hxx +248 -0
- data/ext/couchbase/document_id.hxx +3 -1
- data/ext/couchbase/error_context/analytics.hxx +46 -0
- data/ext/couchbase/error_context/http.hxx +44 -0
- data/ext/couchbase/error_context/key_value.hxx +47 -0
- data/ext/couchbase/error_context/query.hxx +46 -0
- data/ext/couchbase/error_context/search.hxx +47 -0
- data/ext/couchbase/error_context/view.hxx +47 -0
- data/ext/couchbase/error_map.hxx +202 -2
- data/ext/couchbase/errors.hxx +18 -3
- data/ext/couchbase/io/dns_client.hxx +11 -9
- data/ext/couchbase/io/dns_codec.hxx +1 -2
- data/ext/couchbase/io/http_command.hxx +111 -0
- 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 +172 -49
- data/ext/couchbase/io/http_session_manager.hxx +171 -34
- data/ext/couchbase/io/mcbp_command.hxx +249 -0
- data/ext/couchbase/io/mcbp_context.hxx +37 -0
- data/ext/couchbase/io/mcbp_message.hxx +5 -0
- data/ext/couchbase/io/mcbp_session.hxx +585 -166
- data/ext/couchbase/io/query_cache.hxx +61 -0
- data/ext/couchbase/io/retry_action.hxx +30 -0
- data/ext/couchbase/io/retry_context.hxx +38 -0
- data/ext/couchbase/io/retry_orchestrator.hxx +112 -0
- data/ext/couchbase/io/retry_reason.hxx +235 -0
- data/ext/couchbase/io/retry_strategy.hxx +156 -0
- data/ext/couchbase/io/streams.hxx +216 -0
- data/ext/couchbase/operations.hxx +19 -1
- data/ext/couchbase/operations/analytics_dataset_create.hxx +22 -14
- data/ext/couchbase/operations/analytics_dataset_drop.hxx +19 -10
- data/ext/couchbase/operations/analytics_dataset_get_all.hxx +18 -11
- data/ext/couchbase/operations/analytics_dataverse_create.hxx +20 -12
- data/ext/couchbase/operations/analytics_dataverse_drop.hxx +19 -12
- data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +19 -11
- data/ext/couchbase/operations/analytics_index_create.hxx +19 -12
- data/ext/couchbase/operations/analytics_index_drop.hxx +18 -11
- data/ext/couchbase/operations/analytics_index_get_all.hxx +16 -9
- data/ext/couchbase/operations/analytics_link_connect.hxx +17 -10
- data/ext/couchbase/operations/analytics_link_disconnect.hxx +19 -12
- data/ext/couchbase/operations/bucket_create.hxx +46 -14
- data/ext/couchbase/operations/bucket_drop.hxx +12 -8
- data/ext/couchbase/operations/bucket_flush.hxx +11 -8
- data/ext/couchbase/operations/bucket_get.hxx +18 -10
- data/ext/couchbase/operations/bucket_get_all.hxx +17 -7
- data/ext/couchbase/operations/bucket_settings.hxx +59 -4
- data/ext/couchbase/operations/bucket_update.hxx +45 -14
- data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +9 -6
- data/ext/couchbase/operations/collection_create.hxx +23 -12
- data/ext/couchbase/operations/collection_drop.hxx +21 -12
- data/ext/couchbase/operations/collections_manifest_get.hxx +66 -0
- data/ext/couchbase/operations/document_analytics.hxx +45 -21
- data/ext/couchbase/operations/document_append.hxx +72 -0
- data/ext/couchbase/operations/document_decrement.hxx +12 -11
- data/ext/couchbase/operations/document_exists.hxx +8 -7
- data/ext/couchbase/operations/document_get.hxx +9 -7
- data/ext/couchbase/operations/document_get_and_lock.hxx +8 -7
- data/ext/couchbase/operations/document_get_and_touch.hxx +10 -9
- data/ext/couchbase/operations/document_get_projected.hxx +33 -20
- data/ext/couchbase/operations/document_increment.hxx +12 -11
- data/ext/couchbase/operations/document_insert.hxx +11 -10
- data/ext/couchbase/operations/document_lookup_in.hxx +13 -7
- data/ext/couchbase/operations/document_mutate_in.hxx +25 -13
- data/ext/couchbase/operations/document_prepend.hxx +72 -0
- data/ext/couchbase/operations/document_query.hxx +132 -27
- data/ext/couchbase/operations/document_remove.hxx +11 -8
- data/ext/couchbase/operations/document_replace.hxx +11 -10
- data/ext/couchbase/operations/document_search.hxx +59 -23
- data/ext/couchbase/operations/document_touch.hxx +10 -9
- data/ext/couchbase/operations/document_unlock.hxx +8 -7
- data/ext/couchbase/operations/document_upsert.hxx +11 -10
- data/ext/couchbase/operations/document_view.hxx +31 -14
- data/ext/couchbase/operations/group_drop.hxx +72 -0
- data/ext/couchbase/operations/group_get.hxx +80 -0
- data/ext/couchbase/operations/group_get_all.hxx +77 -0
- data/ext/couchbase/operations/group_upsert.hxx +125 -0
- data/ext/couchbase/operations/http_noop.hxx +78 -0
- data/ext/couchbase/operations/mcbp_noop.hxx +55 -0
- data/ext/couchbase/operations/query_index_build_deferred.hxx +20 -13
- data/ext/couchbase/operations/query_index_create.hxx +34 -17
- data/ext/couchbase/operations/query_index_drop.hxx +32 -15
- data/ext/couchbase/operations/query_index_get_all.hxx +28 -11
- data/ext/couchbase/operations/rbac.hxx +276 -0
- data/ext/couchbase/operations/role_get_all.hxx +77 -0
- data/ext/couchbase/operations/scope_create.hxx +24 -11
- data/ext/couchbase/operations/scope_drop.hxx +20 -11
- data/ext/couchbase/operations/scope_get_all.hxx +18 -10
- data/ext/couchbase/operations/search_get_stats.hxx +60 -0
- data/ext/couchbase/operations/search_index_analyze_document.hxx +29 -16
- data/ext/couchbase/operations/search_index_control_ingest.hxx +27 -14
- data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +27 -14
- data/ext/couchbase/operations/search_index_control_query.hxx +27 -14
- data/ext/couchbase/operations/search_index_drop.hxx +25 -12
- data/ext/couchbase/operations/search_index_get.hxx +25 -12
- data/ext/couchbase/operations/search_index_get_all.hxx +16 -9
- data/ext/couchbase/operations/search_index_get_documents_count.hxx +46 -26
- data/ext/couchbase/operations/search_index_get_stats.hxx +88 -0
- data/ext/couchbase/operations/search_index_upsert.hxx +26 -13
- data/ext/couchbase/operations/user_drop.hxx +73 -0
- data/ext/couchbase/operations/user_get.hxx +81 -0
- data/ext/couchbase/operations/user_get_all.hxx +78 -0
- data/ext/couchbase/operations/user_upsert.hxx +132 -0
- data/ext/couchbase/operations/view_index_drop.hxx +9 -8
- data/ext/couchbase/operations/view_index_get.hxx +17 -10
- data/ext/couchbase/operations/view_index_get_all.hxx +17 -10
- data/ext/couchbase/operations/view_index_upsert.hxx +10 -9
- data/ext/couchbase/origin.hxx +179 -0
- data/ext/couchbase/platform/backtrace.c +189 -0
- data/ext/couchbase/platform/backtrace.h +54 -0
- data/ext/couchbase/platform/terminate_handler.cc +130 -0
- data/ext/couchbase/platform/terminate_handler.h +36 -0
- data/ext/couchbase/protocol/client_opcode.hxx +406 -38
- data/ext/couchbase/protocol/client_request.hxx +2 -1
- data/ext/couchbase/protocol/client_response.hxx +20 -17
- data/ext/couchbase/protocol/cmd_append.hxx +145 -0
- data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -8
- data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
- data/ext/couchbase/protocol/cmd_exists.hxx +1 -0
- data/ext/couchbase/protocol/cmd_get.hxx +1 -1
- data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
- data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +9 -7
- data/ext/couchbase/protocol/cmd_hello.hxx +1 -0
- data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
- data/ext/couchbase/protocol/cmd_info.hxx +0 -11
- data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
- data/ext/couchbase/protocol/cmd_lookup_in.hxx +11 -3
- data/ext/couchbase/protocol/cmd_mutate_in.hxx +55 -14
- data/ext/couchbase/protocol/cmd_noop.hxx +82 -0
- data/ext/couchbase/protocol/cmd_prepend.hxx +145 -0
- data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
- data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
- data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
- data/ext/couchbase/protocol/durability_level.hxx +16 -0
- data/ext/couchbase/protocol/enhanced_error_info.hxx +28 -0
- data/ext/couchbase/protocol/hello_feature.hxx +9 -0
- data/ext/couchbase/protocol/magic.hxx +6 -6
- data/ext/couchbase/protocol/server_opcode.hxx +2 -2
- data/ext/couchbase/protocol/status.hxx +70 -60
- data/ext/couchbase/protocol/unsigned_leb128.h +2 -2
- data/ext/couchbase/service_type.hxx +2 -2
- data/ext/couchbase/timeout_defaults.hxx +7 -0
- data/ext/couchbase/utils/connection_string.hxx +152 -4
- data/ext/couchbase/version.hxx +18 -4
- data/ext/extconf.rb +77 -26
- data/ext/test/CMakeLists.txt +5 -0
- data/ext/test/test_helper.hxx +141 -0
- data/ext/test/test_helper_native.hxx +56 -0
- data/ext/test/test_helper_ruby.hxx +72 -0
- data/ext/test/test_native_binary_operations.cxx +186 -0
- data/ext/test/test_native_diagnostics.cxx +436 -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 +27 -28
- 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/active_support/cache/couchbase_store.rb +362 -0
- data/lib/couchbase.rb +2 -0
- data/lib/couchbase/analytics_options.rb +1 -59
- data/lib/couchbase/authenticator.rb +40 -0
- data/lib/couchbase/binary_collection.rb +62 -23
- data/lib/couchbase/binary_collection_options.rb +0 -74
- data/lib/couchbase/bucket.rb +45 -40
- data/lib/couchbase/cluster.rb +250 -138
- data/lib/couchbase/collection.rb +324 -93
- data/lib/couchbase/collection_options.rb +75 -241
- data/lib/couchbase/configuration.rb +57 -0
- data/{Gemfile → lib/couchbase/datastructures.rb} +9 -9
- data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
- data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
- data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
- data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
- data/lib/couchbase/diagnostics.rb +181 -0
- data/lib/couchbase/errors.rb +186 -65
- data/lib/couchbase/json_transcoder.rb +3 -3
- data/{bin/check-cluster → lib/couchbase/logger.rb} +27 -16
- data/lib/couchbase/{common_options.rb → management.rb} +11 -13
- data/lib/couchbase/management/analytics_index_manager.rb +37 -37
- data/lib/couchbase/management/bucket_manager.rb +70 -30
- data/lib/couchbase/management/collection_manager.rb +4 -4
- data/lib/couchbase/management/query_index_manager.rb +60 -15
- data/lib/couchbase/management/search_index_manager.rb +57 -13
- data/lib/couchbase/management/user_manager.rb +176 -50
- data/lib/couchbase/management/view_index_manager.rb +11 -5
- data/lib/couchbase/mutation_state.rb +13 -0
- data/lib/couchbase/options.rb +2104 -0
- data/lib/couchbase/query_options.rb +6 -105
- data/lib/couchbase/railtie.rb +45 -0
- data/lib/couchbase/scope.rb +87 -9
- data/lib/couchbase/search_options.rb +98 -103
- data/lib/couchbase/subdoc.rb +31 -28
- data/{bin/console → lib/couchbase/utils.rb} +6 -6
- data/lib/couchbase/utils/time.rb +52 -0
- data/lib/couchbase/version.rb +21 -2
- data/lib/couchbase/view_options.rb +4 -94
- data/{bin/setup → lib/rails/generators/couchbase/config/config_generator.rb} +12 -9
- metadata +227 -346
- data/.github/workflows/tests-6.0.3.yml +0 -52
- data/.github/workflows/tests-dev-preview.yml +0 -55
- data/.github/workflows/tests.yml +0 -50
- data/.gitignore +0 -20
- data/.gitmodules +0 -21
- data/.idea/.gitignore +0 -5
- data/.idea/dictionaries/gem_terms.xml +0 -18
- data/.idea/inspectionProfiles/Project_Default.xml +0 -8
- data/.idea/vcs.xml +0 -13
- data/.yardopts +0 -1
- data/Rakefile +0 -51
- data/bin/fetch-stats +0 -19
- data/bin/init-cluster +0 -82
- data/bin/jenkins/build-extension +0 -35
- data/bin/jenkins/install-dependencies +0 -47
- data/bin/jenkins/test-with-cbdyncluster +0 -58
- data/couchbase.gemspec +0 -73
- data/examples/analytics.rb +0 -221
- data/examples/crud.rb +0 -20
- data/examples/managing_analytics_indexes.rb +0 -72
- data/examples/managing_buckets.rb +0 -47
- data/examples/managing_collections.rb +0 -58
- data/examples/managing_query_indexes.rb +0 -63
- data/examples/managing_search_indexes.rb +0 -62
- data/examples/managing_view_indexes.rb +0 -54
- data/examples/query.rb +0 -18
- data/examples/query_with_consistency.rb +0 -76
- data/examples/search.rb +0 -187
- data/examples/search_with_consistency.rb +0 -84
- data/examples/subdocument.rb +0 -51
- data/examples/view.rb +0 -50
- 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 -4
- data/ext/.idea/modules.xml +0 -8
- data/ext/.idea/vcs.xml +0 -12
- data/ext/couchbase/configuration_monitor.hxx +0 -93
- data/ext/couchbase/operations/command.hxx +0 -163
- data/ext/test/main.cxx +0 -58
- 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/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/README.md +0 -149
- data/ext/third_party/json/conanfile.py +0 -28
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
- data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
- data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
- data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
- data/ext/third_party/snappy/.appveyor.yml +0 -36
- data/ext/third_party/snappy/.gitignore +0 -8
- data/ext/third_party/snappy/.travis.yml +0 -98
- data/ext/third_party/snappy/AUTHORS +0 -1
- data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
- data/ext/third_party/snappy/NEWS +0 -188
- data/ext/third_party/snappy/README.md +0 -148
- data/ext/third_party/snappy/docs/README.md +0 -72
- data/ext/third_party/snappy/format_description.txt +0 -110
- data/ext/third_party/snappy/framing_format.txt +0 -135
- data/ext/third_party/snappy/snappy-test.cc +0 -613
- data/ext/third_party/snappy/snappy-test.h +0 -526
- data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
- data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
- data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
- data/ext/third_party/spdlog/.clang-format +0 -108
- data/ext/third_party/spdlog/.clang-tidy +0 -54
- data/ext/third_party/spdlog/.gitattributes +0 -1
- data/ext/third_party/spdlog/.gitignore +0 -83
- data/ext/third_party/spdlog/.travis.yml +0 -112
- data/ext/third_party/spdlog/INSTALL +0 -24
- data/ext/third_party/spdlog/README.md +0 -423
- data/ext/third_party/spdlog/appveyor.yml +0 -51
- data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
- data/rbi/couchbase.rbi +0 -79
@@ -1,1794 +0,0 @@
|
|
1
|
-
[/
|
2
|
-
/ Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
3
|
-
/
|
4
|
-
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
/]
|
7
|
-
|
8
|
-
[section:history Revision History]
|
9
|
-
|
10
|
-
[heading Asio 1.16.1]
|
11
|
-
|
12
|
-
* Fixed compatibility with C++20 concept syntax.
|
13
|
-
|
14
|
-
* Marked the POSIX descriptor classes' move constructors as `noexcept`.
|
15
|
-
|
16
|
-
* Added the `ssl::host_name_verification` class, which is a drop-in replacement
|
17
|
-
for `ssl::rfc2818_verification`. The `ssl::rfc2818_verification` class has
|
18
|
-
been marked as deprecated. As a consequence of this change, SSL support now
|
19
|
-
depends on functions that were introduced in OpenSSL 1.0.2.
|
20
|
-
|
21
|
-
* Added an `ssl::context` constructor to take ownership of a native handle.
|
22
|
-
|
23
|
-
* Changed C++ language version detection with [^gcc] to use `__cplusplus` macro.
|
24
|
-
|
25
|
-
* Fixed a work counting issue in the asynchronous resolve operation for
|
26
|
-
endpoints.
|
27
|
-
|
28
|
-
* Fixed the `strand<>` converting constructors and assignment operators.
|
29
|
-
|
30
|
-
* Ensured that resolvers are restarted correctly after a fork.
|
31
|
-
|
32
|
-
* Fixed compatibility with the current NetBSD release.
|
33
|
-
|
34
|
-
* Removed spurious handler requirement checks in some `async_read` overloads.
|
35
|
-
|
36
|
-
* Changed the `ssl::context` class to propagate non-EOF errors from the
|
37
|
-
`add_certificate_authority` function.
|
38
|
-
|
39
|
-
* Fixed a Windows-specific `thread_pool` destructor hang that occurred when the
|
40
|
-
pool had an associated I/O object.
|
41
|
-
|
42
|
-
* Changed the [^select] reactor to recreate the "self pipe trick" sockets on
|
43
|
-
error. This addresses an issue on some versions of Windows, where these
|
44
|
-
sockets are discconected after a system sleep.
|
45
|
-
|
46
|
-
* Fixed a compile error in the buffered streams due to the lack of reference
|
47
|
-
collapsing in C++98.
|
48
|
-
|
49
|
-
* Changed the `priority_scheduler` example to demonstrate calls to `shutdown()`
|
50
|
-
and `destroy()`.
|
51
|
-
|
52
|
-
* Removed some unnecessary null pointer checks.
|
53
|
-
|
54
|
-
* Changed Windows platform detection to recognise TV titles as Windows apps.
|
55
|
-
|
56
|
-
* Added some emscripten compatibility patches.
|
57
|
-
|
58
|
-
* Fixed a compile error in the `use_awaitable_t::as_default_on` function.
|
59
|
-
|
60
|
-
* Changed all uses of the boost.bind placeholders to use the
|
61
|
-
`boost::placeholders` namespace.
|
62
|
-
|
63
|
-
* Fixed a potential compile error in the `async_compose` implementation due to
|
64
|
-
incorrect overload selection.
|
65
|
-
|
66
|
-
* Suppressed some non-virtual destructor warnings.
|
67
|
-
|
68
|
-
* Various documentation fixes and improvements.
|
69
|
-
|
70
|
-
[heading Asio 1.16.0]
|
71
|
-
|
72
|
-
* Changed the `async_initiate` helper function to automatically deduce its
|
73
|
-
return type. This is enabled for C++11 or later.
|
74
|
-
|
75
|
-
* Changed all asynchronous operations to use automatically deduced return
|
76
|
-
types. This allows completion token implementations to incorporate the
|
77
|
-
asynchronous operation initiation into the initiating function's return type,
|
78
|
-
without type erasure. Note that C++14 or later is required to support
|
79
|
-
completion tokens that use per-operation return type deduction. For C++11 or
|
80
|
-
earlier, a completion token's async_result specialisation must still provide
|
81
|
-
the nested typedef `return_type`.
|
82
|
-
|
83
|
-
* Introduced three new concepts to support `async_initiate`.
|
84
|
-
* `completion_signature<T>`: Checks if `T` is a signature of the form
|
85
|
-
`R(Args...)`.
|
86
|
-
* `completion_handler_for<T, Signature>`: Checks if `T` is usable as a
|
87
|
-
completion handler with the specified signature.
|
88
|
-
* `completion_token_for<T, Signature>`: Checks if `T` is a completion token
|
89
|
-
that can be used with async_initiate and the specified signature.
|
90
|
-
* For backward compatibility with pre-concepts C++, the macros
|
91
|
-
`(BOOST_)ASIO_COMPLETION_SIGNATURE`, `(BOOST_)ASIO_COMPLETION_HANDLER_FOR`, and
|
92
|
-
`(BOOST_)ASIO_COMPLETION_TOKEN_FOR` are provided. These macros expand to
|
93
|
-
`typename` when concepts are unsupported.
|
94
|
-
|
95
|
-
* Added the nested template type `rebind_executor` to all I/O object types, as
|
96
|
-
a way to generically rebind them to use alternative I/O executors. For
|
97
|
-
example:
|
98
|
-
``
|
99
|
-
using my_socket_type = tcp::socket::rebind_executor<my_executor_type>::other;
|
100
|
-
``[br]
|
101
|
-
|
102
|
-
* Changed the asynchronous operations' initiation function objects to report
|
103
|
-
their associated I/O executor via the nested type `executor_type` and member
|
104
|
-
function `get_executor()`. Note that the presence of `executor_type` and
|
105
|
-
`get_executor()` should be treated as optional, and consequently it may be
|
106
|
-
preferable to access them via the `associated_executor` trait and the
|
107
|
-
`get_associated_executor()` helper function.
|
108
|
-
|
109
|
-
* Added the `default_completion_token` trait, so that every I/O executor type
|
110
|
-
now has an associated default completion token type. This trait may be used
|
111
|
-
in asynchronous operation declarations as follows:
|
112
|
-
``
|
113
|
-
template <
|
114
|
-
typename IoObject,
|
115
|
-
typename CompletionToken =
|
116
|
-
typename default_completion_token<
|
117
|
-
typename IoObject::executor_type
|
118
|
-
>::type
|
119
|
-
>
|
120
|
-
auto async_xyz(
|
121
|
-
IoObject& io_object,
|
122
|
-
CompletionToken&& token =
|
123
|
-
typename default_completion_token<
|
124
|
-
typename IoObject::executor_type
|
125
|
-
>::type{}
|
126
|
-
);
|
127
|
-
``[br]
|
128
|
-
If not specialised, this trait type is `void`, meaning no default completion
|
129
|
-
token type is available for the given I/O executor.
|
130
|
-
|
131
|
-
* Specialised the `default_completion_token` trait for the `use_awaitable`
|
132
|
-
completion token, so that it may be used as shown in the following example:
|
133
|
-
``
|
134
|
-
auto socket = use_awaitable.as_default_on(tcp::socket(my_context));
|
135
|
-
// ...
|
136
|
-
co_await socket.async_connect(my_endpoint); // Defaults to use_awaitable.
|
137
|
-
``[br]
|
138
|
-
In this example, the type of the `socket` object is transformed from
|
139
|
-
`tcp::socket` to have an I/O executor with the default completion token set
|
140
|
-
to `use_awaitable`. Alternatively, the socket type may be computed directly:
|
141
|
-
``
|
142
|
-
using tcp_socket = use_awaitable_t<>::as_default_on_t<tcp::socket>;
|
143
|
-
tcp_socket socket(my_context);
|
144
|
-
// ...
|
145
|
-
co_await socket.async_connect(my_endpoint); // Defaults to use_awaitable.
|
146
|
-
``[br]
|
147
|
-
|
148
|
-
* Added missing `async_initiate` to the Windows-specific I/O objects'
|
149
|
-
asynchronous operations.
|
150
|
-
|
151
|
-
* Ensured that the executor type is propagated to newly accepted sockets.
|
152
|
-
When synchronously or asynchronously accepting a new connection, but
|
153
|
-
without specifying an executor or execution context, the accept
|
154
|
-
operation will now correctly propagate the executor type from the
|
155
|
-
acceptor to the socket. For example, if your acceptor type is:
|
156
|
-
``
|
157
|
-
basic_socket_acceptor<ip::tcp, my_executor_type>
|
158
|
-
``[br]
|
159
|
-
then your accepted socket type will be:
|
160
|
-
``
|
161
|
-
basic_stream_socket<ip::tcp, my_executor_type>
|
162
|
-
``[br]
|
163
|
-
|
164
|
-
* Changed to require that `Protocol` copy and move operations never throw.
|
165
|
-
|
166
|
-
* Changed to require that `Endpoint` default constructor and move operations
|
167
|
-
never throw.
|
168
|
-
|
169
|
-
* Added the `noexcept` qualifier to protocol accessors.
|
170
|
-
|
171
|
-
* Added the `noexcept` qualifier to socket move constructors.
|
172
|
-
|
173
|
-
* Fixed issues associated with opening serial ports on Windows:
|
174
|
-
* Use the correct constant to initialise the RTS control flag.
|
175
|
-
* Specify a default baud rate (9600).
|
176
|
-
|
177
|
-
* Fixed a lost "outstanding work count" that can occur when an asynchronous
|
178
|
-
accept operation is automatically restarted.
|
179
|
-
|
180
|
-
[heading Asio 1.14.1]
|
181
|
-
|
182
|
-
* Improved performance slightly by eliminating a redundant move construction
|
183
|
-
when completed handlers are dispatched.
|
184
|
-
|
185
|
-
* Eliminated a compiler warning by annotating a `case` fall-through in
|
186
|
-
the free function `connect()` implementation.
|
187
|
-
|
188
|
-
* Fixed the `is_*_buffer_sequence` detection traits for user-defined sequence
|
189
|
-
types.
|
190
|
-
|
191
|
-
* Fixed some Windows-specific warnings about an incompatible pointer cast when
|
192
|
-
obtaining the `CancelIoEx` entry point.
|
193
|
-
|
194
|
-
* Changed to automatically set the defaults when opening a serial port on
|
195
|
-
Windows.
|
196
|
-
|
197
|
-
* Changed the serial port `get_option()` member function to be const.
|
198
|
-
|
199
|
-
* Fixed a name hiding issue with the WinRT stream-oriented socket backend's
|
200
|
-
`shutdown` function.
|
201
|
-
|
202
|
-
* Applied a minor fix to the documentation for `is_dynamic_buffer`.
|
203
|
-
|
204
|
-
* Added some support for Haiku OS.
|
205
|
-
|
206
|
-
* Added wolfSSL compatability.
|
207
|
-
|
208
|
-
* Changed to require C++17 or later for coroutines TS support with clang.
|
209
|
-
|
210
|
-
* Fixed a doxygen generation problem in the tutorial.
|
211
|
-
|
212
|
-
[heading Asio 1.14.0]
|
213
|
-
|
214
|
-
* Improved I/O object performance by adding runtime detection of native I/O
|
215
|
-
executors when using the polymorphic executor wrapper.
|
216
|
-
|
217
|
-
* Changed I/O object move constructors so that the executor is copied, not
|
218
|
-
moved. This ensures that the moved-from I/O object is left in the same state
|
219
|
-
as if constructed with a valid executor but without a resource.
|
220
|
-
|
221
|
-
* On Windows, fixed an issue where global object destructors were not being
|
222
|
-
run.
|
223
|
-
|
224
|
-
* Fixed move-based `async_accept` between sockets with different executor
|
225
|
-
types.
|
226
|
-
|
227
|
-
[heading Asio 1.13.0]
|
228
|
-
|
229
|
-
* Added custom I/O executor support to I/O objects.
|
230
|
-
|
231
|
-
* All I/O objects now have an additional `Executor` template parameter. This
|
232
|
-
template parameter defaults to the `asio::executor` type (the polymorphic
|
233
|
-
executor wrapper) but can be used to specify a user-defined executor
|
234
|
-
type.
|
235
|
-
|
236
|
-
* I/O objects' constructors and functions that previously took an
|
237
|
-
`asio::io_context&` now accept either an `Executor` or a reference to a
|
238
|
-
concrete `ExecutionContext` (such as `asio::io_context` or
|
239
|
-
`asio::thread_pool`).
|
240
|
-
|
241
|
-
* Note: One potential source of breakage in existing user code is when reusing an
|
242
|
-
I/O object's `io_context` for constructing another I/O object, as in:
|
243
|
-
``
|
244
|
-
asio::steady_timer my_timer(my_socket.get_executor().context());
|
245
|
-
``[br]
|
246
|
-
To fix this, either construct the second I/O object using the first I/O
|
247
|
-
object's executor:[br]
|
248
|
-
``
|
249
|
-
asio::steady_timer my_timer(my_socket.get_executor());
|
250
|
-
``[br]
|
251
|
-
or otherwise explicitly pass the `io_context`:[br]
|
252
|
-
``
|
253
|
-
asio::steady_timer my_timer(my_io_context);
|
254
|
-
``[br]
|
255
|
-
|
256
|
-
* The previously deprecated `get_io_context` and `get_io_service`
|
257
|
-
member functions have now been removed.
|
258
|
-
|
259
|
-
* The previously deprecated service template parameters, and the
|
260
|
-
corresponding classes, have now been removed.
|
261
|
-
|
262
|
-
* Added a new `async_result` form with an `initiate` static member function.
|
263
|
-
|
264
|
-
* The `async_result` template now supports a new form:
|
265
|
-
``
|
266
|
-
template <typename CompletionToken, typename Signature>
|
267
|
-
struct async_result
|
268
|
-
{
|
269
|
-
typedef /* ... */ return_type;
|
270
|
-
|
271
|
-
template <typename Initiation,
|
272
|
-
typename RawCompletionToken,
|
273
|
-
typename... Args>
|
274
|
-
static return_type initiate(
|
275
|
-
Initiation&& initiation,
|
276
|
-
RawCompletionToken&& token,
|
277
|
-
Args&&... args);
|
278
|
-
};
|
279
|
-
``[br]
|
280
|
-
|
281
|
-
* The `initiate` member function must: (a) transform the token into a
|
282
|
-
completion handler object `handler`; (b) cause the invocation of the
|
283
|
-
function object `initiation` as if by calling
|
284
|
-
`std::forward<Initiation>(initiation)(std::move(handler),
|
285
|
-
std::forward<Args>(args)...)`. Note that the invocation of `initiation`
|
286
|
-
may be deferred (e.g. lazily evaluated), in which case `initiation` and
|
287
|
-
`args` must be decay-copied and moved as required.
|
288
|
-
|
289
|
-
* A helper function template `async_initiate` has also been added as a
|
290
|
-
wrapper for the invocation of `async_result<>::initiate`. For backward
|
291
|
-
compatibility, this function supports both the old and new `async_result`
|
292
|
-
forms.
|
293
|
-
|
294
|
-
* The composed operations examples have been updated to use `async_initiate`.
|
295
|
-
|
296
|
-
* The previously deprecated `handler_type` trait and single-argument form of
|
297
|
-
`async_result` have now been removed.
|
298
|
-
|
299
|
-
* Updated the Coroutines TS support and promoted it to the `asio` namespace.
|
300
|
-
|
301
|
-
* The `awaitable<>`, `co_spawn`, `this_coro`, `detached`, and
|
302
|
-
`redirect_error` facilities have been moved from the `asio::experimental`
|
303
|
-
namespace to namespace `asio`. As part of this change, the
|
304
|
-
`this_coro::token()` awaitable has been superseded by the
|
305
|
-
`asio::use_awaitable` completion token.
|
306
|
-
|
307
|
-
* Please note that the `use_awaitable` and `redirect_error` completion tokens
|
308
|
-
work only with asynchronous operations that use the new form of
|
309
|
-
`async_result` with member function `initiate`. Furthermore, when using
|
310
|
-
`use_awaitable`, please be aware that the asynchronous operation is not
|
311
|
-
initiated until `co_await` is applied to the `awaitable<>`.
|
312
|
-
|
313
|
-
* Added a new `DynamicBuffer_v2` concept which is CopyConstructible.
|
314
|
-
|
315
|
-
* This change adds a new set of type requirements for dynamic buffers,
|
316
|
-
`DynamicBuffer_v2`, which supports copy construction. These new type
|
317
|
-
requirements enable dynamic buffers to be used as arguments to
|
318
|
-
user-defined composed operations, where the same dynamic buffer object
|
319
|
-
is used repeatedly for multiple underlying operations. For example:[br]
|
320
|
-
``
|
321
|
-
template <typename DynamicBuffer>
|
322
|
-
void echo_line(tcp::socket& sock, DynamicBuffer buf)
|
323
|
-
{
|
324
|
-
n = asio::read_until(sock, buf, '\n');
|
325
|
-
asio::write(sock, buf, asio::transfer_exactly(n));
|
326
|
-
}
|
327
|
-
``[br]
|
328
|
-
|
329
|
-
* The original `DynamicBuffer` type requirements have been renamed to
|
330
|
-
`DynamicBuffer_v1`. These requirements continue to be compatible with the
|
331
|
-
Networking TS.
|
332
|
-
|
333
|
-
* New type traits `is_dynamic_buffer_v1` and `is_dynamic_buffer_v2` have been
|
334
|
-
added to test for conformance to `DynamicBuffer_v1` and `DynamicBuffer_v2`
|
335
|
-
respectively. The existing `is_dynamic_buffer` trait has been retained and
|
336
|
-
delegates to `is_dynamic_buffer_v1` (unless `ASIO_NO_DYNAMIC_BUFFER_V1` is
|
337
|
-
explicitly defined, in which case it delegates to `is_dynamic_buffer_v2`).
|
338
|
-
|
339
|
-
* For convenience, the `dynamic_string_buffer` and `dynamic_vector_buffer`
|
340
|
-
classes conform to both `DynamicBuffer_v1` and `DynamicBuffer_v2`
|
341
|
-
requirements.
|
342
|
-
|
343
|
-
* When `ASIO_NO_DYNAMIC_BUFFER_V1` is defined, all support for
|
344
|
-
`DynamicBuffer_v1` types and functions is #ifdef-ed out. Support for using
|
345
|
-
`basic_streambuf` with the `read`, `async_read`, `read_until`,
|
346
|
-
`async_read_until`, `write`, and `async_write` functions is also disabled
|
347
|
-
as a consequence.
|
348
|
-
|
349
|
-
* Note: This change should have no impact on existing source code that simply
|
350
|
-
uses dynamic buffers in conjunction with Asio's composed operations.
|
351
|
-
|
352
|
-
* Added a new `async_compose` function that simplifies the implementation of
|
353
|
-
user-defined asynchronous operations.
|
354
|
-
|
355
|
-
* Added a `make_strand` function, which creates a `strand` with a deduced
|
356
|
-
`Executor` template argument.
|
357
|
-
|
358
|
-
* Relaxed the completion condition type requirements to only require
|
359
|
-
move-constructibility rather than copy-constructibility.
|
360
|
-
|
361
|
-
* Added a constructor for `local::basic_endpoint` that takes a `string_view`.
|
362
|
-
|
363
|
-
* Added the noexcept qualifier to various member functions of the
|
364
|
-
`ip::address`, `ip::address_v4`, `ip::address_v6`, `ip::basic_endpoint`, and
|
365
|
-
`executor_work_guard` classes.
|
366
|
-
|
367
|
-
* Added the noexcept qualifier to the `buffer_sequence_begin` and
|
368
|
-
`buffer_sequence_end` functions.
|
369
|
-
|
370
|
-
* Added a new `ASIO_DISABLE_VISIBILITY` configuration `#define` that allows
|
371
|
-
visibility pragmas to be disabled. (Note: If symbols are hidden, extra care
|
372
|
-
must be taken to ensure that Asio types are not passed across shared
|
373
|
-
library API boundaries.)
|
374
|
-
|
375
|
-
* Changed compile-time feature detection to define `ASIO_STANDALONE`
|
376
|
-
automatically if C++11 or later is detected.
|
377
|
-
|
378
|
-
* Users should define `ASIO_ENABLE_BOOST` to explicitly disable standalone
|
379
|
-
mode when compiling with C++11 or later.
|
380
|
-
|
381
|
-
* The `configure` script now defaults to a standalone build unless Boost is
|
382
|
-
specified or detected.
|
383
|
-
|
384
|
-
* Enabled recycling of the memory used to type-erase a function object with the
|
385
|
-
polymorphic executor.
|
386
|
-
|
387
|
-
* Changed receive operations to return the correct number of bytes transferred
|
388
|
-
when truncation (`error::message_size`) occurs on a datagram-oriented socket.
|
389
|
-
|
390
|
-
* Fixed multicast behaviour on QNX by automatically applying `SO_REUSEPORT`
|
391
|
-
when the `reuse_address` option is set.
|
392
|
-
|
393
|
-
* Added inclusion of `unistd.h` when targeting Haiku OS, to fix feature detection.
|
394
|
-
|
395
|
-
* Added the `network_v[46].hpp` headers to the top-level convenience header.
|
396
|
-
|
397
|
-
* Fixed calculation of absolute timeout when the backend uses
|
398
|
-
`pthread_cond_timedwait`.
|
399
|
-
|
400
|
-
* Changed the range-based asynchronous connect operation to deduce the
|
401
|
-
`EndpointSequence` iterator type rather than assume the presence of a
|
402
|
-
`const_iterator` typedef.
|
403
|
-
|
404
|
-
* Fixed `buffer_sequence_begin` and `buffer_sequence_end` to prevent implicit
|
405
|
-
conversion. This change addresses an issue where a call to
|
406
|
-
`buffer_sequence_begin` or `buffer_sequence_end` could trigger an implicit
|
407
|
-
conversion to `const_buffer` or `mutable_buffer`. Whenever this implicit
|
408
|
-
conversion occurred, the return value of `buffer_sequence_begin` or
|
409
|
-
`buffer_sequence_end` would point to a temporary object.
|
410
|
-
|
411
|
-
* Ensured SSL handshake errors are propagated to the peer before the local
|
412
|
-
operation completes.
|
413
|
-
|
414
|
-
* Suppressed the `eof` error on SSL shutdown as it actually indicates success.
|
415
|
-
|
416
|
-
* Added a fallback error code for when we OpenSSL produces an
|
417
|
-
`SSL_ERROR_SYSCALL` result without an associated error.
|
418
|
-
|
419
|
-
* Changed composed asynchronous read and write operations to move, rather than
|
420
|
-
copy, the buffer sequence objects when the composed operation implementation
|
421
|
-
is moved.
|
422
|
-
|
423
|
-
* Changed to use `<atomic>` when targeting apple/clang/libc++ with recent Xcode
|
424
|
-
versions, even for C++03. This fixes a warning about the deprecation of
|
425
|
-
`OSMemoryBarrier`.
|
426
|
-
|
427
|
-
* Fixed compile errors that occur when using the composed read and write
|
428
|
-
operations with MSVC 11.0, by disabling `decltype` support for that compiler.
|
429
|
-
|
430
|
-
* Increased the default value of `_WIN32_WINNT` to `0x0601` (Windows 7).
|
431
|
-
|
432
|
-
* Fixed `dispatch` documentation to note that it may call the supplied function
|
433
|
-
object in the current thread.
|
434
|
-
|
435
|
-
* Updated `post` and `defer` documentation to clarify the the distinction
|
436
|
-
between them.
|
437
|
-
|
438
|
-
[heading Asio 1.12.2]
|
439
|
-
|
440
|
-
* Fixed a problem with the detection of `std::future` availability with
|
441
|
-
libstdc++.
|
442
|
-
|
443
|
-
* Fixed compile error in regex overload of `read_until`.
|
444
|
-
|
445
|
-
* Fixed a timer heap corruption issue that can occur when moving a cancelled
|
446
|
-
timer.
|
447
|
-
|
448
|
-
* Fixed detection of `std::experimental::string_view` and `std::string_view`
|
449
|
-
with newer clang/libc++.
|
450
|
-
|
451
|
-
* Fixed MSVC version detection for availability of `std::invoke_result`.
|
452
|
-
|
453
|
-
* Fixed the buffer sequence traits to test the new requirements, if `decltype`
|
454
|
-
is available.
|
455
|
-
|
456
|
-
* Fixed an MSVC issue when building with exceptions disabled.
|
457
|
-
|
458
|
-
* Added SSL context options for TLS v1.3.
|
459
|
-
|
460
|
-
* Added a compile-time test for TLS v1 support.
|
461
|
-
|
462
|
-
* Fixed the macro used to test for TLS v1.2 support.
|
463
|
-
|
464
|
-
* Prevented global objects from being created once per thread on Windows.
|
465
|
-
|
466
|
-
* Fixed a crash when using `size()`, `max_size()` or `empty()` on
|
467
|
-
default-constructed resolver results.
|
468
|
-
|
469
|
-
* Changed to move the return value in basic_resolver_results::begin() to avoid
|
470
|
-
copying.
|
471
|
-
|
472
|
-
* Enabled move support for the Intel Compiler.
|
473
|
-
|
474
|
-
* Fixed `std::string_view` detection issue when using clang-cl.
|
475
|
-
|
476
|
-
* Fixed the handler tracking operation name for
|
477
|
-
`io_context::executor_type::dispatch`.
|
478
|
-
|
479
|
-
* Fixed a buffer overflow that could occur when parsing an address string with
|
480
|
-
a 64-bit scope id.
|
481
|
-
|
482
|
-
* Added examples showing how to write composed operations.
|
483
|
-
|
484
|
-
* Added C++11 versions of the Timeouts, Timers, SOCKS4 and SSL examples.
|
485
|
-
|
486
|
-
* Fixed minor issues in documentation and examples.
|
487
|
-
|
488
|
-
[heading Asio 1.12.1]
|
489
|
-
|
490
|
-
* Added missing const qualifier to `basic_socket_acceptor::get_option`.
|
491
|
-
|
492
|
-
* Worked around a parsing error that occurs with some versions of gcc.
|
493
|
-
|
494
|
-
* Fixed broken code samples in tutorial.
|
495
|
-
|
496
|
-
* Added new experimental features. (Note that "experimental" features may be
|
497
|
-
changed without notice in subsequent releases.)
|
498
|
-
|
499
|
-
* Added `experimental::detached` completion token.
|
500
|
-
|
501
|
-
* Added `experimental::redirect_error` completion token.
|
502
|
-
|
503
|
-
* Added `experimental::co_spawn` facility for integration with the coroutines
|
504
|
-
technical specification.
|
505
|
-
|
506
|
-
* Updated timeout examples to use latest features.
|
507
|
-
|
508
|
-
* Used `asio::steady_timer` rather than `asio::deadline_timer`.
|
509
|
-
|
510
|
-
* Used `asio::dynamic_buffer` rather than `asio::streambuf`.
|
511
|
-
|
512
|
-
* Used timed `asio::io_context::run_for()` function for blocking clients.
|
513
|
-
|
514
|
-
* Added example showing a custom completion token for blocking with timeouts.
|
515
|
-
|
516
|
-
* Fixed unit tests to compile when `(BOOST_)ASIO_NO_DEPRECATED` is defined.
|
517
|
-
|
518
|
-
* Changed socket iostreams to use chrono by default, to fix compatibility with
|
519
|
-
the Networking TS. Define `(BOOST_)ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM`
|
520
|
-
to enable the old Boost.Date_Time interface in `basic_socket_streambuf` and
|
521
|
-
`basic_socket_iostream`.
|
522
|
-
|
523
|
-
* Updated examples to use chrono rather than Boost.Date_Time.
|
524
|
-
|
525
|
-
* Fixed an incorrect member function detector in the `is_dynamic_buffer` trait.
|
526
|
-
|
527
|
-
* Fixed an `async_result` incompatibility with deprecated `handler_type`.
|
528
|
-
|
529
|
-
* Added a missing move optimisation in the SSL stream implementation.
|
530
|
-
|
531
|
-
* Fixed incorrect `basic_resolver_results::value_type` typedef.
|
532
|
-
|
533
|
-
* Fixed a compile error with some OpenSSL versions when `SSL_OP_NO_COMPRESSION`
|
534
|
-
is defined.
|
535
|
-
|
536
|
-
* Changed `add_certificate_authority` to process multiple certificates in a bundle.
|
537
|
-
|
538
|
-
* Eliminated deprecation warning with MSVC by using `std::invoke_result` rather
|
539
|
-
than `std::result_of`.
|
540
|
-
|
541
|
-
* Changed to use `std::string_view` for C++17 or later, and
|
542
|
-
`std::experimental::string_view` for C++14. Define the preprocessor macro
|
543
|
-
`(BOOST_)ASIO_DISABLE_STD_STRING_VIEW` to force the use of
|
544
|
-
std::experimental::string_view (assuming it is available) when compiling in
|
545
|
-
C++17 mode.
|
546
|
-
|
547
|
-
* Ensured `DynamicBuffer` template arguments are decayed before using in
|
548
|
-
`enable_if` tests.
|
549
|
-
|
550
|
-
* Changed documentation to distinguish legacy completion handlers (which are
|
551
|
-
still required to be CopyConstructible) from new MoveConstructible handlers.
|
552
|
-
|
553
|
-
* Suppressed a discarded return value warning in the buffer debugging support.
|
554
|
-
|
555
|
-
* Fixed `basic_yield_context` to work with completion signatures containing
|
556
|
-
reference parameters.
|
557
|
-
|
558
|
-
* Ensured that stackful coroutines launched using `spawn()` correctly store
|
559
|
-
decayed copies of their function and handler arguments.
|
560
|
-
|
561
|
-
* Fixed some compatibility issues with Android.
|
562
|
-
|
563
|
-
* Fixed some minor portability issues in examples.
|
564
|
-
|
565
|
-
[heading Asio 1.12.0]
|
566
|
-
|
567
|
-
* Completed the interface changes to reflect the Networking TS
|
568
|
-
([@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4656.pdf N4656]).
|
569
|
-
|
570
|
-
* See the [link asio.net_ts list] of new interfaces and, where
|
571
|
-
applicable, the corresponding old interfaces that have been superseded.
|
572
|
-
|
573
|
-
* The service template parameters, and the corresponding classes, are disabled
|
574
|
-
by default. For example, instead of `basic_socket<Protocol, SocketService>` we
|
575
|
-
now have simply `basic_socket<Protocol>`. The old interface can be enabled by
|
576
|
-
defining the `(BOOST_)ASIO_ENABLE_OLD_SERVICES` macro.
|
577
|
-
|
578
|
-
* Added support for customised handler tracking.
|
579
|
-
|
580
|
-
* Added reactor-related (i.e. descriptor readiness) events to handler tracking.
|
581
|
-
|
582
|
-
* Added special [link asio.overview.core.concurrency_hint concurrency
|
583
|
-
hint] values that may be used to disable locking on a per `io_context` basis.
|
584
|
-
|
585
|
-
* Enabled perfect forwarding for the first `ssl::stream<>` constructor argument.
|
586
|
-
|
587
|
-
* Added ability to release ownership of the underlying native socket. (Requires
|
588
|
-
Windows 8.1 or later when using the I/O completion port backend.)
|
589
|
-
|
590
|
-
[heading Asio 1.11.0]
|
591
|
-
|
592
|
-
* Implemented changes to substantially reflect the Networking Library Proposal
|
593
|
-
([@www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4370.html N4370]).
|
594
|
-
|
595
|
-
* New `Executor` type requirements and classes to support an executor
|
596
|
-
framework, including the `execution_context` base class, the
|
597
|
-
`executor_work` class for tracking outstanding work, and the `executor`
|
598
|
-
polymorphic wrapper. Free functions `dispatch()`, `post()` and `defer()`
|
599
|
-
have been added and are used to submit function objects to executors.
|
600
|
-
|
601
|
-
* Completion handlers now have an associated executor and associated
|
602
|
-
allocator. The free function `wrap()` is used to associate an executor with
|
603
|
-
a handler or other object. The handler hooks for allocation, invocation and
|
604
|
-
continuation have been deprecated.
|
605
|
-
|
606
|
-
* A `system_executor` class has been added as a default executor.
|
607
|
-
|
608
|
-
* The `io_service` class is now derived from `execution_context` and
|
609
|
-
implements the executor type requirements in its nested `executor_type`
|
610
|
-
class. The member functions `dispatch()`, `post()`, `defer()` and `wrap()`
|
611
|
-
have been deprecated. The `io_service::work` class has been deprecated.
|
612
|
-
|
613
|
-
* The `io_service` member function `reset()` has been renamed to `restart()`.
|
614
|
-
The old name is retained for backward compatibility but has been
|
615
|
-
deprecated.
|
616
|
-
|
617
|
-
* The `make_service<>()` function is now used to add a new service to an
|
618
|
-
execution context such as an `io_service`. The `add_service()` function has
|
619
|
-
been deprecated.
|
620
|
-
|
621
|
-
* A new `strand<>` template has been added to allow strand functionality to
|
622
|
-
be used with generic executor types.
|
623
|
-
|
624
|
-
* I/O objects (such as sockets and timers) now provide access to their
|
625
|
-
associated `io_service` via a `context()` member function. The
|
626
|
-
`get_io_service()` member function is deprecated.
|
627
|
-
|
628
|
-
* All asynchronous operations and executor operations now support move-only
|
629
|
-
handlers. However, the deprecated `io_service::post()`,
|
630
|
-
`io_service::dispatch()`, `io_service::strand::post()` and
|
631
|
-
`io_service::strand::dispatch()` functions still require copyable handlers.
|
632
|
-
|
633
|
-
* Waitable timer objects are now movable.
|
634
|
-
|
635
|
-
* Waitable timers, socket iostreams and socket streambufs now provide an
|
636
|
-
`expiry()` member function for obtaining the expiry time. The accessors
|
637
|
-
`expires_at()` and `expires_after()` have been deprecated, though those
|
638
|
-
names are retained for the mutating members.
|
639
|
-
|
640
|
-
* The `std::packaged_task` class template is now supported as a completion
|
641
|
-
handler. The initiating operation automatically returns the future
|
642
|
-
associated with the task. The `package()` function has been added as a
|
643
|
-
convenient factory for packaged tasks.
|
644
|
-
|
645
|
-
* Sockets, socket acceptors and descriptors now provide `wait()` and
|
646
|
-
`async_wait()` operations that may be used to wait for readiness. The
|
647
|
-
`null_buffers` type has been deprecated.
|
648
|
-
|
649
|
-
* The proposed error code enum classes are simulated using namespaces.
|
650
|
-
Existing asio error codes now have a correspondence with the standard error
|
651
|
-
conditions.
|
652
|
-
|
653
|
-
* Conversion between IP address types, and conversion from string to address,
|
654
|
-
is now supported via the `address_cast<>()`, `make_address()`,
|
655
|
-
`make_address_v4()` and `make_address_v6()` free functions. The
|
656
|
-
`from_string()`, `to_v4()`, `to_v6()` and `v4_mapped()` member functions
|
657
|
-
have been deprecated.
|
658
|
-
|
659
|
-
* A default-constructed `ip::address` now represents an invalid address value
|
660
|
-
that is neither IPv4 nor IPv6.
|
661
|
-
|
662
|
-
* New `buffer()` overloads that generate mutable buffers for non-const
|
663
|
-
`string` objects.
|
664
|
-
|
665
|
-
* Support for dynamic buffer sequences that automatically grow and shrink to
|
666
|
-
accomodate data as it is read or written. This is a generic facility
|
667
|
-
similar to the existing `asio::streambuf` class. This support includes:
|
668
|
-
|
669
|
-
* New `dynamic_string_buffer` and `dynamic_vector_buffer` adapter classes
|
670
|
-
that meet the `DynamicBufferSequence` type requirements.
|
671
|
-
|
672
|
-
* New `dynamic_buffer()` factory functions for creating a dynamic buffer
|
673
|
-
adapter for a `vector` or `string`.
|
674
|
-
|
675
|
-
* New overloads for the `read()`, `async_read()`, `write()` and
|
676
|
-
`async_write()`, `read_until()` and `async_read_until()` free functions
|
677
|
-
that directly support dynamic buffer sequences.
|
678
|
-
|
679
|
-
* Support for networks and address ranges. Thanks go to Oliver Kowalke for
|
680
|
-
contributing to the design and providing the implementation on which this
|
681
|
-
facility is based. The following new classes have been added:
|
682
|
-
|
683
|
-
* `address_iterator_v4` for iterating across IPv4 addresses
|
684
|
-
* `address_iterator_v6` for iterating across IPv6 addresses
|
685
|
-
* `address_range_v4` to represent a range of IPv4 addresses
|
686
|
-
* `address_range_v6` to represent a range of IPv6 addresses
|
687
|
-
* `network_v4` for manipulating IPv4 CIDR addresses, e.g. 1.2.3.0/24
|
688
|
-
* `network_v6` for manipulating IPv6 CIDR addresses, e.g. ffe0:/120
|
689
|
-
|
690
|
-
* New convenience headers in [^<asio/ts/*.hpp>] that correspond to the headers
|
691
|
-
in the proposal.
|
692
|
-
|
693
|
-
* Added a new, executor-aware `thread_pool` class.
|
694
|
-
|
695
|
-
* Changed `spawn()` to be executor-aware.
|
696
|
-
|
697
|
-
* Added a new `spawn()` overload that takes only a function object.
|
698
|
-
|
699
|
-
* Changed `spawn()` and `yield_context` to permit nested calls to the
|
700
|
-
completion handler.
|
701
|
-
|
702
|
-
* Removed previously deprecated functions.
|
703
|
-
|
704
|
-
* Added options for disabling TLS v1.1 and v1.2.
|
705
|
-
|
706
|
-
* Changed the SSL wrapper to call the password callback when loading an
|
707
|
-
in-memory key.
|
708
|
-
|
709
|
-
* Changed the tutorial to use `std::endl` to ensure output is flushed.
|
710
|
-
|
711
|
-
* Fixed false SSL error reports by ensuring that the SSL error queue is cleared
|
712
|
-
prior to each operation.
|
713
|
-
|
714
|
-
* Fixed an `ssl::stream<>` bug that may result in spurious 'short read' errors.
|
715
|
-
|
716
|
-
* Enabled perfect forwarding for the first `ssl::stream<>` constructor argument.
|
717
|
-
|
718
|
-
* Added standalone Asio support for Clang when used with libstdc++ and C++11.
|
719
|
-
|
720
|
-
* Fixed an unsigned integer overflow reported by Clang's integer sanitizer.
|
721
|
-
|
722
|
-
* Added support for move-only return types when using a `yield_context` object
|
723
|
-
with asynchronous operations.
|
724
|
-
|
725
|
-
* Ensured errors generated by Windows' `ConnectEx` function are mapped to their
|
726
|
-
portable equivalents.
|
727
|
-
|
728
|
-
* Changed multicast test to treat certain `join_group` failures as non-fatal.
|
729
|
-
|
730
|
-
[heading Asio 1.10.5]
|
731
|
-
|
732
|
-
* Fixed the [^kqueue] reactor so that it works on FreeBSD.
|
733
|
-
|
734
|
-
* Fixed an issue in the [^kqueue] reactor which resulted in spinning when using
|
735
|
-
serial ports on Mac OS.
|
736
|
-
|
737
|
-
* Fixed [^kqueue] reactor support for read-only file descriptors.
|
738
|
-
|
739
|
-
* Fixed a compile error when using the [^/dev/poll] reactor.
|
740
|
-
|
741
|
-
* Changed the Windows backend to use `WSASocketW`, as `WSASocketA` has been
|
742
|
-
deprecated.
|
743
|
-
|
744
|
-
* Fixed some warnings reported by Visual C++ 2013.
|
745
|
-
|
746
|
-
* Fixed integer type used in the WinRT version of the byte-order conversion
|
747
|
-
functions.
|
748
|
-
|
749
|
-
* Changed documentation to indicate that `use_future` and `spawn()` are not
|
750
|
-
made available when including the `asio.hpp` convenience header.
|
751
|
-
|
752
|
-
* Explicitly marked `asio::strand` as deprecated. Use
|
753
|
-
`asio::io_service::strand` instead.
|
754
|
-
|
755
|
-
[heading Asio 1.10.4]
|
756
|
-
|
757
|
-
* Stopped using certain Winsock functions that are marked as deprecated in the
|
758
|
-
latest Visual C++ and Windows SDK.
|
759
|
-
|
760
|
-
* Fixed a shadow variable warning on Windows.
|
761
|
-
|
762
|
-
* Fixed a regression in the [^kqueue] backend that was introduced in Asio
|
763
|
-
1.10.2.
|
764
|
-
|
765
|
-
* Added a workaround for building the unit tests with [^gcc] on AIX.
|
766
|
-
|
767
|
-
[heading Asio 1.10.3]
|
768
|
-
|
769
|
-
* Worked around a [^gcc] problem to do with anonymous enums.
|
770
|
-
|
771
|
-
* Reverted the Windows `HANDLE` backend change to ignore `ERROR_MORE_DATA`.
|
772
|
-
Instead, the error will be propagated as with any other (i.e. in an
|
773
|
-
`error_code` or thrown as a `system_error`), and the number of bytes
|
774
|
-
transferred will be returned. For code that needs to handle partial messages,
|
775
|
-
the `error_code` overload should be used.
|
776
|
-
|
777
|
-
* Fixed an off-by-one error in the `signal_set` implementation's signal
|
778
|
-
number check.
|
779
|
-
|
780
|
-
* Changed the Windows IOCP backend to not assume that
|
781
|
-
`SO_UPDATE_CONNECT_CONTEXT` is defined.
|
782
|
-
|
783
|
-
* Fixed a Windows-specific issue, introduced in Asio 1.10.2, by using
|
784
|
-
`VerifyVersionInfo` rather than `GetVersionEx`, as `GetVersionEx` has been
|
785
|
-
deprecated.
|
786
|
-
|
787
|
-
* Changed to use SSE2 intrinsics rather than inline assembly, to allow the
|
788
|
-
Cray compiler to work.
|
789
|
-
|
790
|
-
[heading Asio 1.10.2]
|
791
|
-
|
792
|
-
* Fixed `asio::spawn()` to work correctly with new Boost.Coroutine interface.
|
793
|
-
|
794
|
-
* Ensured that incomplete `asio::spawn()` coroutines are correctly unwound when
|
795
|
-
cleaned up by the `io_service` destructor.
|
796
|
-
|
797
|
-
* Fixed delegation of continuation hook for handlers produced by
|
798
|
-
`io_service::wrap()` and `strand::wrap()`.
|
799
|
-
|
800
|
-
* Changed the Windows I/O completion port backend to use `ConnectEx`, if
|
801
|
-
available, for connection-oriented IP sockets.
|
802
|
-
|
803
|
-
* Changed the `io_service` backend for non-Windows (and non-IOCP Windows)
|
804
|
-
platforms to use a single condition variable per `io_service` instance.
|
805
|
-
This addresses a potential race condition when `run_one()` is used from
|
806
|
-
multiple threads.
|
807
|
-
|
808
|
-
* Prevented integer overflow when computing timeouts based on some
|
809
|
-
`boost::chrono` and `std::chrono` clocks.
|
810
|
-
|
811
|
-
* Made further changes to `EV_CLEAR` handling in the kqueue backend, to address
|
812
|
-
other cases where the `close()` system call may hang on Mac OS X.
|
813
|
-
|
814
|
-
* Fixed infinite recursion in implementation of
|
815
|
-
`resolver_query_base::flags::operator~`.
|
816
|
-
|
817
|
-
* Made the `select` reactor more efficient on Windows for large numbers of
|
818
|
-
sockets.
|
819
|
-
|
820
|
-
* Fixed a Windows-specific type-aliasing issue reported by [^gcc].
|
821
|
-
|
822
|
-
* Prevented execution of compile-time-only buffer test to avoid triggering an
|
823
|
-
address sanitiser warning.
|
824
|
-
|
825
|
-
* Disabled the `GetQueuedCompletionStatus` timeout workaround on recent
|
826
|
-
versions of Windows.
|
827
|
-
|
828
|
-
* Changed implementation for Windows Runtime to use `FormatMessageW` rather
|
829
|
-
than `FormatMessageA`, as the Windows store does not permit the latter.
|
830
|
-
|
831
|
-
* Added support for string-based scope IDs when using link-local multicast
|
832
|
-
addresses.
|
833
|
-
|
834
|
-
* Changed IPv6 multicast group join to use the address's scope ID as the
|
835
|
-
interface, if an interface is not explicitly specified.
|
836
|
-
|
837
|
-
* Fixed multicast test failure on Mac OS X and the BSDs by using a link-local
|
838
|
-
multicast address.
|
839
|
-
|
840
|
-
* Various minor documentation improvements.
|
841
|
-
|
842
|
-
[heading Asio 1.10.1]
|
843
|
-
|
844
|
-
* Implemented a limited port to Windows Runtime. This support requires that the
|
845
|
-
language extensions be enabled. Due to the restricted facilities exposed by
|
846
|
-
the Windows Runtime API, the port also comes with the following caveats:
|
847
|
-
|
848
|
-
* The core facilities such as the `io_service`, `strand`, buffers, composed
|
849
|
-
operations, timers, etc., should all work as normal.
|
850
|
-
|
851
|
-
* For sockets, only client-side TCP is supported.
|
852
|
-
|
853
|
-
* Explicit binding of a client-side TCP socket is not supported.
|
854
|
-
|
855
|
-
* The `cancel()` function is not supported for sockets. Asynchronous
|
856
|
-
operations may only be cancelled by closing the socket.
|
857
|
-
|
858
|
-
* Operations that use `null_buffers` are not supported.
|
859
|
-
|
860
|
-
* Only `tcp::no_delay` and `socket_base::keep_alive` options are supported.
|
861
|
-
|
862
|
-
* Resolvers do not support service names, only numbers. I.e. you must
|
863
|
-
use "80" rather than "http".
|
864
|
-
|
865
|
-
* Most resolver query flags have no effect.
|
866
|
-
|
867
|
-
* Extended the ability to use Asio without Boost to include Microsoft Visual
|
868
|
-
Studio 2012. When using a C++11 compiler, most of Asio may now be used
|
869
|
-
without a dependency on Boost header files or libraries. To use Asio in this
|
870
|
-
way, define `ASIO_STANDALONE` on your compiler command line or as part of the
|
871
|
-
project options. This standalone configuration has been tested for the
|
872
|
-
following platforms and compilers:
|
873
|
-
|
874
|
-
* Microsoft Visual Studio 2012
|
875
|
-
|
876
|
-
* Linux with g++ 4.7 or 4.8 (requires [^-std=c++11])
|
877
|
-
|
878
|
-
* Mac OS X with clang++ / Xcode 4.6 (requires [^-std=c++11 -stdlib=libc++])
|
879
|
-
|
880
|
-
* Fixed a regression (introduced in 1.10.0) where, on some platforms, errors
|
881
|
-
from `async_connect` were not correctly propagated through to the completion
|
882
|
-
handler.
|
883
|
-
|
884
|
-
* Fixed a Windows-specific regression (introduced in 1.10.0) that occurs when
|
885
|
-
multiple threads are running an `io_service`. When the bug occurs, the result
|
886
|
-
of an asynchronous operation (error and bytes tranferred) is incorrectly
|
887
|
-
discarded and zero values used instead. For TCP sockets this results in
|
888
|
-
spurious end-of-file notifications.
|
889
|
-
|
890
|
-
* Fixed a bug in handler tracking, where it was not correctly printing out some
|
891
|
-
handler IDs.
|
892
|
-
|
893
|
-
* Fixed the comparison used to test for successful synchronous accept
|
894
|
-
operations so that it works correctly with unsigned socket descriptors.
|
895
|
-
|
896
|
-
* Ensured the signal number is correctly passed to the completion handler when
|
897
|
-
starting an `async_wait` on a signal that is already raised.
|
898
|
-
|
899
|
-
* Suppressed a g++ 4.8+ warning about unused typedefs.
|
900
|
-
|
901
|
-
* Enabled the move optimisation for handlers that use the default invocation
|
902
|
-
hook.
|
903
|
-
|
904
|
-
* Clarified that programs must not issue overlapping `async_write_at`
|
905
|
-
operations.
|
906
|
-
|
907
|
-
* Changed the Windows `HANDLE` backend to treat `ERROR_MORE_DATA` as a
|
908
|
-
non-fatal error when returned by `GetOverlappedResult` for a synchronous
|
909
|
-
read.
|
910
|
-
|
911
|
-
* Visual C++ language extensions use `generic` as a keyword. Added a
|
912
|
-
workaround that renames the namespace to `cpp_generic` when those language
|
913
|
-
extensions are in effect.
|
914
|
-
|
915
|
-
* Fixed some asynchronous operations that missed out on getting `async_result`
|
916
|
-
support in 1.10.0. In particular, the buffered stream templates have been
|
917
|
-
updated so that they adhere to current handler patterns.
|
918
|
-
|
919
|
-
* Enabled move support for Microsoft Visual Studio 2012.
|
920
|
-
|
921
|
-
* Added `use_future` support for Microsoft Visual Studio 2012.
|
922
|
-
|
923
|
-
* Removed a use of `std::min` in the Windows IOCP backend to avoid a
|
924
|
-
dependency on the `<algorithm>` header.
|
925
|
-
|
926
|
-
* Eliminated some unnecessary handler copies.
|
927
|
-
|
928
|
-
* Fixed support for older versions of OpenSSL that do not provide the
|
929
|
-
`SSL_CTX_clear_options` function.
|
930
|
-
|
931
|
-
* Fixed various minor and cosmetic issues in code and documentation.
|
932
|
-
|
933
|
-
[heading Asio 1.10.0]
|
934
|
-
|
935
|
-
* Added new traits classes, `handler_type` and `async_result`, that allow the
|
936
|
-
customisation of the return type of an initiating function.
|
937
|
-
|
938
|
-
* Added the `asio::spawn()` function, a high-level wrapper for running
|
939
|
-
stackful coroutines, based on the Boost.Coroutine library. The `spawn()`
|
940
|
-
function enables programs to implement asynchronous logic in a synchronous
|
941
|
-
manner. For example: `size_t n = my_socket.async_read_some(my_buffer, yield);`.
|
942
|
-
For further information, see [link asio.overview.core.spawn Stackful
|
943
|
-
Coroutines].
|
944
|
-
|
945
|
-
* Added the `asio::use_future` special value, which provides first-class
|
946
|
-
support for returning a C++11 `std::future` from an asynchronous
|
947
|
-
operation's initiating function. For example:
|
948
|
-
`future<size_t> = my_socket.async_read_some(my_buffer, asio::use_future);`.
|
949
|
-
For further information, see [link asio.overview.cpp2011.futures C++
|
950
|
-
2011 Support - Futures].
|
951
|
-
|
952
|
-
* Promoted the stackless coroutine class and macros to be part of Asio's
|
953
|
-
documented interface, rather than part of the HTTP server 4 example.
|
954
|
-
For further information, see [link asio.overview.core.coroutine
|
955
|
-
Stackless Coroutines].
|
956
|
-
|
957
|
-
* Added a new handler hook called `asio_handler_is_continuation`.
|
958
|
-
Asynchronous operations may represent a continuation of the asynchronous
|
959
|
-
control flow associated with the current executing handler. The
|
960
|
-
`asio_handler_is_continuation` hook can be customised to return `true` if
|
961
|
-
this is the case, and Asio's implementation can use this knowledge to
|
962
|
-
optimise scheduling of the new handler. To cover common cases, Asio
|
963
|
-
customises the hook for strands, `spawn()` and composed asynchronous
|
964
|
-
operations.
|
965
|
-
|
966
|
-
* Added four new generic protocol classes, `generic::datagram_protocol`,
|
967
|
-
`generic::raw_protocol`, `generic::seq_packet_protocol` and
|
968
|
-
`generic::stream_protocol`, which implement the `Protocol` type
|
969
|
-
requirements, but allow the user to specify the address family (e.g.
|
970
|
-
`AF_INET`) and protocol type (e.g. `IPPROTO_TCP`) at runtime.
|
971
|
-
For further information, see [link
|
972
|
-
asio.overview.networking.other_protocols Support for Other Protocols].
|
973
|
-
|
974
|
-
* Added C++11 move constructors that allow the conversion of a socket (or
|
975
|
-
acceptor) into a more generic type. For example, an `ip::tcp::socket` can
|
976
|
-
be converted into a `generic::stream_protocol::socket` via move
|
977
|
-
construction.
|
978
|
-
For further information, see [link
|
979
|
-
asio.overview.networking.other_protocols Support for Other Protocols].
|
980
|
-
|
981
|
-
* Extended the `basic_socket_acceptor<>`'s `accept()` and `async_accept()`
|
982
|
-
functions to allow a new connection to be accepted directly into a socket
|
983
|
-
of a more generic type. For example, an `ip::tcp::acceptor` can be used to
|
984
|
-
accept into a `generic::stream_protocol::socket` object.
|
985
|
-
For further information, see [link
|
986
|
-
asio.overview.networking.other_protocols Support for Other Protocols].
|
987
|
-
|
988
|
-
* Moved existing examples into a C++03-specific directory, and added a new
|
989
|
-
directory for C++11-specific examples. A limited subset of the C++03
|
990
|
-
examples have been converted to their C++11 equivalents.
|
991
|
-
|
992
|
-
* Add the ability to use Asio without Boost, for a limited set of platforms.
|
993
|
-
When using a C++11 compiler, most of Asio may now be used without a
|
994
|
-
dependency on Boost header files or libraries. To use Asio in this way,
|
995
|
-
define `ASIO_STANDALONE` on your compiler command line or as part of the
|
996
|
-
project options. This standalone configuration has currently been tested for
|
997
|
-
the following platforms and compilers:
|
998
|
-
|
999
|
-
* Linux with g++ 4.7 (requires [^-std=c++11])
|
1000
|
-
|
1001
|
-
* Mac OS X with clang++ / Xcode 4.6 (requires [^-std=c++11 -stdlib=libc++])
|
1002
|
-
|
1003
|
-
* Various SSL enhancements. Thanks go to Nick Jones, on whose work these changes
|
1004
|
-
are based.
|
1005
|
-
|
1006
|
-
* Added support for SSL handshakes with re-use of data already read from
|
1007
|
-
the wire. New overloads of the `ssl::stream<>` class's `handshake()` and
|
1008
|
-
`async_handshake()` functions have been added. These accept a
|
1009
|
-
`ConstBufferSequence` to be used as initial input to the ssl engine for
|
1010
|
-
the handshake procedure.
|
1011
|
-
|
1012
|
-
* Added support for creation of TLSv1.1 and TLSv1.2 `ssl::context` objects.
|
1013
|
-
|
1014
|
-
* Added a `set_verify_depth()` function to the `ssl::context` and
|
1015
|
-
`ssl::stream<>` classes.
|
1016
|
-
|
1017
|
-
* Added the ability to load SSL certificate and key data from memory
|
1018
|
-
buffers. New functions, `add_certificate_authority()`,
|
1019
|
-
`use_certificate()`, `use_certificate_chain()`, `use_private_key()`,
|
1020
|
-
`use_rsa_private_key()` and `use_tmp_dh()`, have been added to the
|
1021
|
-
`ssl::context` class.
|
1022
|
-
|
1023
|
-
* Changed `ssl::context` to automatically disable SSL compression by
|
1024
|
-
default. To enable, use the new `ssl::context::clear_options()` function,
|
1025
|
-
as in `my_context.clear_options(ssl::context::no_compression)`.
|
1026
|
-
|
1027
|
-
* Fixed a potential deadlock in `signal_set` implementation.
|
1028
|
-
|
1029
|
-
* Fixed an error in acceptor example in documentation.
|
1030
|
-
|
1031
|
-
* Fixed copy-paste errors in waitable timer documentation.
|
1032
|
-
|
1033
|
-
* Added assertions to satisfy some code analysis tools.
|
1034
|
-
|
1035
|
-
* Fixed a malformed `#warning` directive.
|
1036
|
-
|
1037
|
-
* Fixed a potential data race in the Linux `epoll` implementation.
|
1038
|
-
|
1039
|
-
* Fixed a Windows-specific bug, where certain operations might generate an
|
1040
|
-
`error_code` with an invalid (i.e. `NULL`) `error_category`.
|
1041
|
-
|
1042
|
-
* Fixed `basic_waitable_timer`'s underlying implementation so that it can
|
1043
|
-
handle any `time_point` value without overflowing the intermediate duration
|
1044
|
-
objects.
|
1045
|
-
|
1046
|
-
* Fixed a problem with lost thread wakeups that can occur when making
|
1047
|
-
concurrent calls to `run()` and `poll()` on the same `io_service` object.
|
1048
|
-
|
1049
|
-
* Fixed implementation of asynchronous connect operation so that it can cope
|
1050
|
-
with spurious readiness notifications from the reactor.
|
1051
|
-
|
1052
|
-
* Fixed a memory leak in the `ssl::rfc2818_verification` class.
|
1053
|
-
|
1054
|
-
* Added a mechanism for disabling automatic Winsock initialisation. See the
|
1055
|
-
header file [^asio/detail/winsock_init.hpp] for details.
|
1056
|
-
|
1057
|
-
[heading Asio 1.8.3]
|
1058
|
-
|
1059
|
-
* Fixed some 64-to-32-bit conversion warnings.
|
1060
|
-
|
1061
|
-
* Fixed various small errors in documentation and comments.
|
1062
|
-
|
1063
|
-
* Fixed an error in the example embedded in `basic_socket::get_option`'s
|
1064
|
-
documentation.
|
1065
|
-
|
1066
|
-
* Changed to use `long` rather than `int` for SSL_CTX options, to match OpenSSL.
|
1067
|
-
|
1068
|
-
* Changed to use `_snwprintf` to address a compile error due to the changed
|
1069
|
-
`swprintf` signature in recent versions of MinGW.
|
1070
|
-
|
1071
|
-
* Fixed a deadlock that can occur on Windows when shutting down a pool of
|
1072
|
-
`io_service` threads due to running out of work.
|
1073
|
-
|
1074
|
-
* Changed UNIX domain socket example to treat errors from `accept` as non-fatal.
|
1075
|
-
|
1076
|
-
* Added a small block recycling optimisation to improve default memory
|
1077
|
-
allocation behaviour.
|
1078
|
-
|
1079
|
-
[heading Asio 1.8.2]
|
1080
|
-
|
1081
|
-
* Fixed an incompatibility between `ip::tcp::iostream` and C++11.
|
1082
|
-
|
1083
|
-
* Decorated GCC attribute names with underscores to prevent interaction
|
1084
|
-
with user-defined macros.
|
1085
|
-
|
1086
|
-
* Added missing `#include <cctype>`, needed for some versions of MinGW.
|
1087
|
-
|
1088
|
-
* Changed to use [^gcc]'s atomic builtins on ARM CPUs, when available.
|
1089
|
-
|
1090
|
-
* Changed strand destruction to be a no-op, to allow strand objects to be
|
1091
|
-
destroyed after their associated `io_service` has been destroyed.
|
1092
|
-
|
1093
|
-
* Added support for some newer versions of glibc which provide the
|
1094
|
-
`epoll_create1()` function but always fail with ENOSYS.
|
1095
|
-
|
1096
|
-
* Changed the SSL implementation to throw an exception if SSL engine
|
1097
|
-
initialisation fails.
|
1098
|
-
|
1099
|
-
* Fixed another regression in `buffered_write_stream`.
|
1100
|
-
|
1101
|
-
* Implemented various minor performance improvements, primarily targeted at
|
1102
|
-
Linux x86 and x86-64 platforms.
|
1103
|
-
|
1104
|
-
[heading Asio 1.8.1]
|
1105
|
-
|
1106
|
-
* Changed the `epoll_reactor` backend to do lazy registration for `EPOLLOUT`
|
1107
|
-
events.
|
1108
|
-
|
1109
|
-
* Fixed the `epoll_reactor` handling of out-of-band data, which was broken by
|
1110
|
-
an incomplete fix in the last release.
|
1111
|
-
|
1112
|
-
* Changed Asio's SSL wrapper to respect OpenSSL's `OPENSSL_NO_ENGINE` feature
|
1113
|
-
test `#define`.
|
1114
|
-
|
1115
|
-
* Fixed `windows::object_handle` so that it works with Windows compilers that
|
1116
|
-
support C++11 move semantics (such as [^g++]).
|
1117
|
-
|
1118
|
-
* Improved the performance of strand rescheduling.
|
1119
|
-
|
1120
|
-
* Added support for [^g++] 4.7 when compiling in C++11 mode.
|
1121
|
-
|
1122
|
-
* Fixed a problem where `signal_set` handlers were not being delivered when
|
1123
|
-
the `io_service` was constructed with a `concurrency_hint` of 1.
|
1124
|
-
|
1125
|
-
[heading Asio 1.8.0]
|
1126
|
-
|
1127
|
-
* Added a new class template `basic_waitable_timer` based around the C++11 clock
|
1128
|
-
type requirements. It may be used with the clocks from the C++11 `<chrono>`
|
1129
|
-
library facility or, if those are not available, Boost.Chrono. The typedefs
|
1130
|
-
`high_resolution_timer`, `steady_timer` and `system_timer` may be used to
|
1131
|
-
create timer objects for the standard clock types.
|
1132
|
-
|
1133
|
-
* Added a new `windows::object_handle` class for performing waits on Windows
|
1134
|
-
kernel objects. Thanks go to Boris Schaeling for contributing substantially
|
1135
|
-
to the development of this feature.
|
1136
|
-
|
1137
|
-
* On Linux, `connect()` can return EAGAIN in certain circumstances. Remapped
|
1138
|
-
this to another error so that it doesn't look like a non-blocking operation.
|
1139
|
-
|
1140
|
-
* Fixed a compile error on NetBSD.
|
1141
|
-
|
1142
|
-
* Fixed deadlock on Mac OS X.
|
1143
|
-
|
1144
|
-
* Fixed a regression in `buffered_write_stream`.
|
1145
|
-
|
1146
|
-
* Fixed a non-paged pool "leak" on Windows when an `io_service` is repeatedly
|
1147
|
-
run without anything to do.
|
1148
|
-
|
1149
|
-
* Reverted earlier change to allow some speculative operations to be performed
|
1150
|
-
without holding the lock, as it introduced a race condition in some
|
1151
|
-
multithreaded scenarios.
|
1152
|
-
|
1153
|
-
* Fixed a bug where the second buffer in an array of two buffers may be ignored
|
1154
|
-
if the first buffer is empty.
|
1155
|
-
|
1156
|
-
[heading Asio 1.6.1]
|
1157
|
-
|
1158
|
-
* Implemented various performance improvements, including:
|
1159
|
-
|
1160
|
-
* Using thread-local operation queues in single-threaded use cases (i.e. when
|
1161
|
-
`concurrency_hint` is 1) to eliminate a lock/unlock pair.
|
1162
|
-
|
1163
|
-
* Allowing some `epoll_reactor` speculative operations to be performed
|
1164
|
-
without holding the lock.
|
1165
|
-
|
1166
|
-
* Improving locality of reference by performing an `epoll_reactor`'s I/O
|
1167
|
-
operation immediately before the corresponding handler is called. This also
|
1168
|
-
improves scalability across CPUs when multiple threads are running the
|
1169
|
-
`io_service`.
|
1170
|
-
|
1171
|
-
* Specialising asynchronous read and write operations for buffer sequences
|
1172
|
-
that are arrays (`boost::array` or `std::array`) of exactly two buffers.
|
1173
|
-
|
1174
|
-
* Fixed a compile error in the regex overload of `async_read_until`.
|
1175
|
-
|
1176
|
-
* Fixed a Windows-specific compile error by explicitly specifying the
|
1177
|
-
`signal()` function from the global namespace.
|
1178
|
-
|
1179
|
-
* Changed the `deadline_timer` implementation so that it does not read the
|
1180
|
-
clock unless the timer heap is non-empty.
|
1181
|
-
|
1182
|
-
* Changed the SSL stream's buffers' sizes so that they are large enough to hold
|
1183
|
-
a complete TLS record.
|
1184
|
-
|
1185
|
-
* Fixed the behaviour of the synchronous `null_buffers` operations so that they
|
1186
|
-
obey the user's non-blocking setting.
|
1187
|
-
|
1188
|
-
* Changed to set the size of the select `fd_set` at runtime when using Windows.
|
1189
|
-
|
1190
|
-
* Disabled an MSVC warning due to const qualifier being applied to function type.
|
1191
|
-
|
1192
|
-
* Fixed a crash that occurs when using the Intel C++ compiler.
|
1193
|
-
|
1194
|
-
* Changed the initialisation of the OpenSSL library so that it supports all
|
1195
|
-
available algorithms.
|
1196
|
-
|
1197
|
-
* Fixed the SSL error mapping used when the session is gracefully shut down.
|
1198
|
-
|
1199
|
-
* Added some latency test programs.
|
1200
|
-
|
1201
|
-
* Clarified that a read operation ends when the buffer is full.
|
1202
|
-
|
1203
|
-
* Fixed an exception safety issue in `epoll_reactor` initialisation.
|
1204
|
-
|
1205
|
-
* Made the number of strand implementations configurable by defining
|
1206
|
-
`(BOOST_)ASIO_STRAND_IMPLEMENTATIONS` to the desired number.
|
1207
|
-
|
1208
|
-
* Added support for a new `(BOOST_)ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION` flag
|
1209
|
-
which switches the allocation of strand implementations to use a round-robin
|
1210
|
-
approach rather than hashing.
|
1211
|
-
|
1212
|
-
* Fixed potential strand starvation issue that can occur when `strand.post()`
|
1213
|
-
is used.
|
1214
|
-
|
1215
|
-
[heading Asio 1.6.0]
|
1216
|
-
|
1217
|
-
* Improved support for C++0x move construction to further reduce copying of
|
1218
|
-
handler objects. In certain designs it is possible to eliminate virtually all
|
1219
|
-
copies. Move support is now enabled when compiling in [^-std=c++0x] mode on
|
1220
|
-
g++ 4.5 or higher.
|
1221
|
-
|
1222
|
-
* Added build support for platforms that don't provide either of `signal()` or
|
1223
|
-
`sigaction()`.
|
1224
|
-
|
1225
|
-
* Changed to use C++0x variadic templates when they are available, rather than
|
1226
|
-
generating function overloads using the Boost.Preprocessor library.
|
1227
|
-
|
1228
|
-
* Ensured the value of `errno` is preserved across the implementation's signal
|
1229
|
-
handler.
|
1230
|
-
|
1231
|
-
* On Windows, ensured the count of outstanding work is decremented for
|
1232
|
-
abandoned operations (i.e. operations that are being cleaned up within the
|
1233
|
-
`io_service` destructor).
|
1234
|
-
|
1235
|
-
* Fixed behaviour of zero-length reads and writes in the new SSL implementation.
|
1236
|
-
|
1237
|
-
* Added support for building with OpenSSL 1.0 when `OPENSSL_NO_SSL2` is defined.
|
1238
|
-
|
1239
|
-
* Changed most examples to treat a failure by an accept operation as non-fatal.
|
1240
|
-
|
1241
|
-
* Fixed an error in the [^tick_count_timer] example by making the duration type
|
1242
|
-
signed. Previously, a wait on an already-passed deadline would not return for
|
1243
|
-
a very long time.
|
1244
|
-
|
1245
|
-
[heading Asio 1.5.3]
|
1246
|
-
|
1247
|
-
* Added a new, completely rewritten SSL implementation. The new implementation
|
1248
|
-
compiles faster, shows substantially improved performance, and supports
|
1249
|
-
custom memory allocation and handler invocation. It includes new API features
|
1250
|
-
such as certificate verification callbacks and has improved error reporting.
|
1251
|
-
The new implementation is source-compatible with the old for most uses.
|
1252
|
-
However, if necessary, the old implementation may still be used by defining
|
1253
|
-
`(BOOST_)ASIO_ENABLE_OLD_SSL`.
|
1254
|
-
|
1255
|
-
* Added new `asio::buffer()` overloads for `std::array`, when available. The
|
1256
|
-
support is automatically enabled when compiling in [^-std=c++0x] mode on g++
|
1257
|
-
4.3 or higher, or when using MSVC 10. The support may be explicitly enabled
|
1258
|
-
by defining `(BOOST_)ASIO_HAS_STD_ARRAY`, or disabled by defining
|
1259
|
-
`(BOOST_)ASIO_DISABLE_STD_ARRAY`.
|
1260
|
-
|
1261
|
-
* Changed to use the C++0x standard library templates `array`, `shared_ptr`,
|
1262
|
-
`weak_ptr` and `atomic` when they are available, rather than the Boost
|
1263
|
-
equivalents.
|
1264
|
-
|
1265
|
-
* Support for `std::error_code` and `std::system_error` is no longer enabled by
|
1266
|
-
default for g++ 4.5, as that compiler's standard library does not implement
|
1267
|
-
`std::system_error::what()` correctly.
|
1268
|
-
|
1269
|
-
[heading Asio 1.5.2]
|
1270
|
-
|
1271
|
-
* Added support for C++0x move construction and assignment to sockets, serial
|
1272
|
-
ports, POSIX descriptors and Windows handles.
|
1273
|
-
|
1274
|
-
* Added support for the `fork()` system call. Programs that use `fork()` must
|
1275
|
-
call `io_service.notify_fork()` at the appropriate times. Two new examples
|
1276
|
-
have been added showing how to use this feature.
|
1277
|
-
|
1278
|
-
* Cleaned up the handling of errors reported by the `close()` system call. In
|
1279
|
-
particular, assume that most operating systems won't have `close()` fail with
|
1280
|
-
`EWOULDBLOCK`, but if it does then set the blocking mode and restart the call.
|
1281
|
-
If any other error occurs, assume the descriptor is closed.
|
1282
|
-
|
1283
|
-
* The kqueue flag `EV_ONESHOT` seems to cause problems on some versions of Mac
|
1284
|
-
OS X, with the `io_service` destructor getting stuck inside the `close()`
|
1285
|
-
system call. Changed the kqueue backend to use `EV_CLEAR` instead.
|
1286
|
-
|
1287
|
-
* Changed exception reporting to include the function name in exception `what()`
|
1288
|
-
messages.
|
1289
|
-
|
1290
|
-
* Fixed an insufficient initialisers warning with MinGW.
|
1291
|
-
|
1292
|
-
* Changed the `shutdown_service()` member functions to be private.
|
1293
|
-
|
1294
|
-
* Added archetypes for testing socket option functions.
|
1295
|
-
|
1296
|
-
* Added a missing lock in `signal_set_service::cancel()`.
|
1297
|
-
|
1298
|
-
* Fixed a copy/paste error in `SignalHandler` example.
|
1299
|
-
|
1300
|
-
* Added the inclusion of the signal header to `signal_set_service.hpp` so that
|
1301
|
-
constants like `NSIG` may be used.
|
1302
|
-
|
1303
|
-
* Changed the `signal_set_service` implementation so that it doesn't assume
|
1304
|
-
that `SIGRTMAX` is a compile-time constant.
|
1305
|
-
|
1306
|
-
* Changed the Boost.Asio examples so that they don't use Boost.Thread's
|
1307
|
-
convenience header. Use the header file that is specifically for the
|
1308
|
-
boost::thread class instead.
|
1309
|
-
|
1310
|
-
[heading Asio 1.5.1]
|
1311
|
-
|
1312
|
-
* Added support for signal handling, using a new class called `signal_set`.
|
1313
|
-
Programs may add one or more signals to the set, and then perform an
|
1314
|
-
`async_wait()` operation. The specified handler will be called when one of
|
1315
|
-
the signals occurs. The same signal number may registered with multiple
|
1316
|
-
`signal_set` objects, however the signal number must be used only with Asio.
|
1317
|
-
|
1318
|
-
* Added handler tracking, a new debugging aid. When enabled by defining
|
1319
|
-
`(BOOST_)ASIO_ENABLE_HANDLER_TRACKING`, Asio writes debugging output to the
|
1320
|
-
standard error stream. The output records asynchronous operations and the
|
1321
|
-
relationships between their handlers. It may be post-processed using the
|
1322
|
-
included [^handlerviz.pl] tool to create a visual representation of the
|
1323
|
-
handlers (requires GraphViz).
|
1324
|
-
|
1325
|
-
* Fixed a bug in `asio::streambuf` where the `consume()` function did not
|
1326
|
-
always update the internal buffer pointers correctly. The problem may occur
|
1327
|
-
when the `asio::streambuf` is filled with data using the standard C++ member
|
1328
|
-
functions such as `sputn()`. (Note: the problem does not manifest when the
|
1329
|
-
streambuf is populated by the Asio free functions `read()`,
|
1330
|
-
`async_read()`, `read_until()` or `async_read_until()`.)
|
1331
|
-
|
1332
|
-
* Fixed a bug on kqueue-based platforms, where reactor read operations that
|
1333
|
-
return false from their `perform()` function are not correctly re-registered
|
1334
|
-
with kqueue.
|
1335
|
-
|
1336
|
-
* Support for `std::error_code` and `std::system_error` is no longer enabled by
|
1337
|
-
default for MSVC10, as that compiler's standard library does not implement
|
1338
|
-
`std::system_error::what()` correctly.
|
1339
|
-
|
1340
|
-
* Modified the `buffers_iterator<>` and `ip::basic_resolver_iterator` classes
|
1341
|
-
so that the value_type typedefs are non-const byte types.
|
1342
|
-
|
1343
|
-
[heading Asio 1.5.0]
|
1344
|
-
|
1345
|
-
* Added support for timeouts on socket iostreams, such as `ip::tcp::iostream`.
|
1346
|
-
A timeout is set by calling `expires_at()` or `expires_from_now()` to
|
1347
|
-
establish a deadline. Any socket operations which occur past the deadline
|
1348
|
-
will put the iostream into a bad state.
|
1349
|
-
|
1350
|
-
* Added a new `error()` member function to socket iostreams, for retrieving the
|
1351
|
-
error code from the most recent system call.
|
1352
|
-
|
1353
|
-
* Added a new `basic_deadline_timer::cancel_one()` function. This function lets
|
1354
|
-
you cancel a single waiting handler on a timer. Handlers are cancelled in
|
1355
|
-
FIFO order.
|
1356
|
-
|
1357
|
-
* Added a new `transfer_exactly()` completion condition. This can be used to
|
1358
|
-
send or receive a specified number of bytes even if the total size of the
|
1359
|
-
buffer (or buffer sequence) is larger.
|
1360
|
-
|
1361
|
-
* Added new free functions `connect()` and `async_connect()`. These operations
|
1362
|
-
try each endpoint in a list until the socket is successfully connected.
|
1363
|
-
|
1364
|
-
* Extended the `buffer_size()` function so that it works for buffer sequences
|
1365
|
-
in addition to individual buffers.
|
1366
|
-
|
1367
|
-
* Added a new `buffer_copy()` function that can be used to copy the raw bytes
|
1368
|
-
between individual buffers and buffer sequences.
|
1369
|
-
|
1370
|
-
* Added new non-throwing overloads of `read()`, `read_at()`, `write()` and
|
1371
|
-
`write_at()` that do not require a completion condition.
|
1372
|
-
|
1373
|
-
* Added friendlier compiler errors for when a completion handler does not meet
|
1374
|
-
the necessary type requirements. When C++0x is available (currently supported
|
1375
|
-
for g++ 4.5 or later, and MSVC 10), `static_assert` is also used to generate
|
1376
|
-
an informative error message. This checking may be disabled by defining
|
1377
|
-
`(BOOST_)ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS`.
|
1378
|
-
|
1379
|
-
* Added support for using `std::error_code` and `std::system_error`, when
|
1380
|
-
available. The support is automatically enabled when compiling in
|
1381
|
-
[^-std=c++0x] mode on g++ 4.5 or higher, or when using MSVC 10. The support
|
1382
|
-
may be explicitly enabled by defining `ASIO_HAS_STD_SYSTEM_ERROR`, or
|
1383
|
-
disabled by defining `ASIO_DISABLE_STD_SYSTEM_ERROR`. (Available in non-Boost
|
1384
|
-
version of Asio only.)
|
1385
|
-
|
1386
|
-
* Made the `is_loopback()`, `is_unspecified()` and `is_multicast()` functions
|
1387
|
-
consistently available across the `ip::address`, `ip::address_v4` and
|
1388
|
-
`ip::address_v6` classes.
|
1389
|
-
|
1390
|
-
* Added new `non_blocking()` functions for managing the non-blocking behaviour
|
1391
|
-
of a socket or descriptor. The `io_control()` commands named `non_blocking_io`
|
1392
|
-
are now deprecated in favour of these new functions.
|
1393
|
-
|
1394
|
-
* Added new `native_non_blocking()` functions for managing the non-blocking
|
1395
|
-
mode of the underlying socket or descriptor. These functions are intended to
|
1396
|
-
allow the encapsulation of arbitrary non-blocking system calls as
|
1397
|
-
asynchronous operations, in a way that is transparent to the user of the
|
1398
|
-
socket object. The functions have no effect on the behaviour of the
|
1399
|
-
synchronous operations of the socket or descriptor.
|
1400
|
-
|
1401
|
-
* Added the `io_control()` member function for socket acceptors.
|
1402
|
-
|
1403
|
-
* For consistency with the C++0x standard library, deprecated the `native_type`
|
1404
|
-
typedefs in favour of `native_handle_type`, and the `native()` member
|
1405
|
-
functions in favour of `native_handle()`.
|
1406
|
-
|
1407
|
-
* Added a `release()` member function to posix descriptors. This function
|
1408
|
-
releases ownership of the underlying native descriptor to the caller.
|
1409
|
-
|
1410
|
-
* Added support for sequenced packet sockets (`SOCK_SEQPACKET`).
|
1411
|
-
|
1412
|
-
* Added a new `io_service::stopped()` function that can be used to determine
|
1413
|
-
whether the `io_service` has stopped (i.e. a `reset()` call is needed prior
|
1414
|
-
to any further calls to `run()`, `run_one()`, `poll()` or `poll_one()`).
|
1415
|
-
|
1416
|
-
* Reduced the copying of handler function objects.
|
1417
|
-
|
1418
|
-
* Added support for C++0x move construction to further reduce copying of
|
1419
|
-
handler objects. Move support is enabled when compiling in [^-std=c++0x] mode
|
1420
|
-
on g++ 4.5 or higher, or when using MSVC10.
|
1421
|
-
|
1422
|
-
* Removed the dependency on OS-provided macros for the well-known IPv4 and IPv6
|
1423
|
-
addresses. This should eliminate the annoying "missing braces around
|
1424
|
-
initializer" warnings.
|
1425
|
-
|
1426
|
-
* Reduced the size of `ip::basic_endpoint<>` objects (such as
|
1427
|
-
`ip::tcp::endpoint` and `ip::udp::endpoint`).
|
1428
|
-
|
1429
|
-
* Changed the reactor backends to assume that any descriptors or sockets added
|
1430
|
-
using `assign()` may have been `dup()`-ed, and so require explicit
|
1431
|
-
deregistration from the reactor.
|
1432
|
-
|
1433
|
-
* Changed the SSL error category to return error strings from the OpenSSL
|
1434
|
-
library.
|
1435
|
-
|
1436
|
-
* Changed the separate compilation support such that, to use Asio's SSL
|
1437
|
-
capabilities, you should also include 'asio/ssl/impl/src.hpp` in one source
|
1438
|
-
file in your program.
|
1439
|
-
|
1440
|
-
* Removed the deprecated member functions named `io_service()`. The
|
1441
|
-
`get_io_service()` member functions should be used instead.
|
1442
|
-
|
1443
|
-
* Removed the deprecated typedefs `resolver_query` and `resolver_iterator` from
|
1444
|
-
the `ip::tcp`, `ip::udp` and `ip::icmp` classes.
|
1445
|
-
|
1446
|
-
* Fixed a compile error on some versions of g++ due to anonymous enums.
|
1447
|
-
|
1448
|
-
* Added an explicit cast to the `FIONBIO` constant to int to suppress a compiler
|
1449
|
-
warning on some platforms.
|
1450
|
-
|
1451
|
-
* Fixed warnings reported by g++'s [^-Wshadow] compiler option.
|
1452
|
-
|
1453
|
-
[heading Asio 1.4.8]
|
1454
|
-
|
1455
|
-
* Fixed an integer overflow problem that occurs when
|
1456
|
-
`ip::address_v4::broadcast()` is used on 64-bit platforms.
|
1457
|
-
|
1458
|
-
* Fixed a problem on older Linux kernels (where epoll is used without `timerfd`
|
1459
|
-
support) that prevents timely delivery of `deadline_timer` handlers, after the
|
1460
|
-
program has been running for some time.
|
1461
|
-
|
1462
|
-
[heading Asio 1.4.7]
|
1463
|
-
|
1464
|
-
* Fixed a problem on kqueue-based platforms where a `deadline_timer` may
|
1465
|
-
never fire if the `io_service` is running in a background thread.
|
1466
|
-
|
1467
|
-
* Fixed a const-correctness issue that prevented valid uses of
|
1468
|
-
`has_service<>` from compiling.
|
1469
|
-
|
1470
|
-
* Fixed MinGW cross-compilation.
|
1471
|
-
|
1472
|
-
* Removed dependency on deprecated Boost.System functions (Boost.Asio only).
|
1473
|
-
|
1474
|
-
* Ensured `close()`/`closesocket()` failures are correctly propagated.
|
1475
|
-
|
1476
|
-
* Added a check for errors returned by `InitializeCriticalSectionAndSpinCount`.
|
1477
|
-
|
1478
|
-
* Added support for hardware flow control on QNX.
|
1479
|
-
|
1480
|
-
* Always use `pselect()` on HP-UX, if it is available.
|
1481
|
-
|
1482
|
-
* Ensured handler arguments are passed as lvalues.
|
1483
|
-
|
1484
|
-
* Fixed Windows build when thread support is disabled.
|
1485
|
-
|
1486
|
-
* Fixed a Windows-specific problem where `deadline_timer` objects with expiry
|
1487
|
-
times set more than 5 minutes in the future may never expire.
|
1488
|
-
|
1489
|
-
* Fixed the resolver backend on BSD platforms so that an empty service name
|
1490
|
-
resolves to port number `0`, as per the documentation.
|
1491
|
-
|
1492
|
-
* Fixed read operations so that they do not accept buffer sequences of type
|
1493
|
-
`const_buffers_1`.
|
1494
|
-
|
1495
|
-
* Redefined `Protocol` and `id` to avoid clashing with Objective-C++ keywords.
|
1496
|
-
|
1497
|
-
* Fixed a `vector` reallocation performance issue that can occur when there are
|
1498
|
-
many active `deadline_timer` objects.
|
1499
|
-
|
1500
|
-
* Fixed the kqueue backend so that it compiles on NetBSD.
|
1501
|
-
|
1502
|
-
* Fixed the socket `io_control()` implementation on 64-bit Mac OS X and BSD
|
1503
|
-
platforms.
|
1504
|
-
|
1505
|
-
* Fixed a Windows-specific problem where failures from `accept()` are
|
1506
|
-
incorrectly treated as successes.
|
1507
|
-
|
1508
|
-
* Deprecated the separate compilation header `asio/impl/src.cpp` in
|
1509
|
-
favour of `asio/impl/src.hpp`.
|
1510
|
-
|
1511
|
-
[heading Asio 1.4.6]
|
1512
|
-
|
1513
|
-
* Reduced compile times. (Note that some programs may need to add additional
|
1514
|
-
`#include`s, e.g. if the program uses boost::array but does not explicitly
|
1515
|
-
include `<boost/array.hpp>`.)
|
1516
|
-
|
1517
|
-
* Reduced the size of generated code.
|
1518
|
-
|
1519
|
-
* Refactored `deadline_timer` implementation to improve performance.
|
1520
|
-
|
1521
|
-
* Improved multiprocessor scalability on Windows by using a dedicated hidden
|
1522
|
-
thread to wait for timers.
|
1523
|
-
|
1524
|
-
* Improved performance of `asio::streambuf` with `async_read()` and
|
1525
|
-
`async_read_until()`. These read operations now use the existing capacity of
|
1526
|
-
the `streambuf` when reading, rather than limiting the read to 512 bytes.
|
1527
|
-
|
1528
|
-
* Added optional separate compilation. To enable, include
|
1529
|
-
`asio/impl/src.cpp` in one source file in a program, then
|
1530
|
-
build the program with `(BOOST_)ASIO_SEPARATE_COMPILATION` defined in the
|
1531
|
-
project\/compiler settings. Alternatively, `(BOOST_)ASIO_DYN_LINK` may be
|
1532
|
-
defined to build a separately-compiled Asio as part of a shared library.
|
1533
|
-
|
1534
|
-
* Added new macro `(BOOST_)ASIO_DISABLE_FENCED_BLOCK` to permit the disabling of
|
1535
|
-
memory fences around completion handlers, even if thread support is enabled.
|
1536
|
-
|
1537
|
-
* Reworked timeout examples to better illustrate typical use cases.
|
1538
|
-
|
1539
|
-
* Ensured that handler arguments are passed as const types.
|
1540
|
-
|
1541
|
-
* Fixed incorrect parameter order in `null_buffers` variant of `async_send_to`.
|
1542
|
-
|
1543
|
-
* Ensured unsigned char is used with `isdigit` in `getaddrinfo` emulation.
|
1544
|
-
|
1545
|
-
* Fixed handling of very small but non-zero timeouts.
|
1546
|
-
|
1547
|
-
* Fixed crash that occurred when an empty buffer sequence was passed to a
|
1548
|
-
composed read or write operation.
|
1549
|
-
|
1550
|
-
* Added missing operator+ overload in `buffers_iterator`.
|
1551
|
-
|
1552
|
-
* Implemented cancellation of `null_buffers` operations on Windows.
|
1553
|
-
|
1554
|
-
[heading Asio 1.4.5]
|
1555
|
-
|
1556
|
-
* Improved performance.
|
1557
|
-
|
1558
|
-
* Reduced compile times.
|
1559
|
-
|
1560
|
-
* Reduced the size of generated code.
|
1561
|
-
|
1562
|
-
* Extended the guarantee that background threads don't call user code to
|
1563
|
-
all asynchronous operations.
|
1564
|
-
|
1565
|
-
* Changed to use edge-triggered epoll on Linux.
|
1566
|
-
|
1567
|
-
* Changed to use `timerfd` for dispatching timers on Linux, when
|
1568
|
-
available.
|
1569
|
-
|
1570
|
-
* Changed to use one-shot notifications with kqueue on Mac OS X and BSD
|
1571
|
-
platforms.
|
1572
|
-
|
1573
|
-
* Added a bitmask type `ip::resolver_query_base::flags` as per the TR2
|
1574
|
-
proposal. This type prevents implicit conversion from `int` to
|
1575
|
-
`flags`, allowing the compiler to catch cases where users incorrectly
|
1576
|
-
pass a numeric port number as the service name.
|
1577
|
-
|
1578
|
-
* Added `#define NOMINMAX` for all Windows compilers. Users can define
|
1579
|
-
`(BOOST_)ASIO_NO_NOMINMAX` to suppress this definition.
|
1580
|
-
|
1581
|
-
* Fixed a bug where 0-byte asynchronous reads were incorrectly passing
|
1582
|
-
an `error::eof` result to the completion handler.
|
1583
|
-
|
1584
|
-
* Changed the `io_control()` member functions to always call `ioctl` on
|
1585
|
-
the underlying descriptor when modifying blocking mode.
|
1586
|
-
|
1587
|
-
* Changed the resolver implementation so that it no longer requires the
|
1588
|
-
typedefs `InternetProtocol::resolver_query` and
|
1589
|
-
`InternetProtocol::resolver_iterator`, as neither typedef is part of
|
1590
|
-
the documented `InternetProtocol` requirements. The corresponding
|
1591
|
-
typedefs in the `ip::tcp`, `ip::udp` and `ip::icmp` classes have been
|
1592
|
-
deprecated.
|
1593
|
-
|
1594
|
-
* Fixed out-of-band handling for reactors not based on `select()`.
|
1595
|
-
|
1596
|
-
* Added new `(BOOST_)ASIO_DISABLE_THREADS` macro that allows Asio's
|
1597
|
-
threading support to be independently disabled.
|
1598
|
-
|
1599
|
-
* Minor documentation improvements.
|
1600
|
-
|
1601
|
-
[heading Asio 1.4.4]
|
1602
|
-
|
1603
|
-
* Added a new HTTP Server 4 example illustrating the use of stackless
|
1604
|
-
coroutines with Asio.
|
1605
|
-
|
1606
|
-
* Changed handler allocation and invocation to use `boost::addressof` to
|
1607
|
-
get the address of handler objects, rather than applying `operator&`
|
1608
|
-
directly.
|
1609
|
-
|
1610
|
-
* Restricted MSVC buffer debugging workaround to 2008, as it causes a
|
1611
|
-
crash with 2010 beta 2.
|
1612
|
-
|
1613
|
-
* Fixed a problem with the lifetime of handler memory, where Windows
|
1614
|
-
needs the `OVERLAPPED` structure to be valid until both the initiating
|
1615
|
-
function call has returned and the completion packet has been
|
1616
|
-
delivered.
|
1617
|
-
|
1618
|
-
* Don't block signals while performing system calls, but instead restart
|
1619
|
-
the calls if they are interrupted.
|
1620
|
-
|
1621
|
-
* Documented the guarantee made by strand objects with respect to order
|
1622
|
-
of handler invocation.
|
1623
|
-
|
1624
|
-
* Changed strands to use a pool of implementations, to make copying of
|
1625
|
-
strands cheaper.
|
1626
|
-
|
1627
|
-
* Ensured that kqueue support is enabled for BSD platforms.
|
1628
|
-
|
1629
|
-
* Added a `boost_` prefix to the `extern "C"` thread entry point
|
1630
|
-
function.
|
1631
|
-
|
1632
|
-
* In `getaddrinfo` emulation, only check the socket type (`SOCK_STREAM`
|
1633
|
-
or `SOCK_DGRAM`) if a service name has been specified. This should
|
1634
|
-
allow the emulation to work with raw sockets.
|
1635
|
-
|
1636
|
-
* Added a workaround for some broken Windows firewalls that make a
|
1637
|
-
socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
|
1638
|
-
|
1639
|
-
* Applied a fix for reported excessive CPU usage under Solaris.
|
1640
|
-
|
1641
|
-
* Added some support for platforms that use older compilers such as g++
|
1642
|
-
2.95.
|
1643
|
-
|
1644
|
-
[heading Asio 1.4.3]
|
1645
|
-
|
1646
|
-
* Added a new ping example to illustrate the use of ICMP sockets.
|
1647
|
-
|
1648
|
-
* Changed the `buffered*_stream<>` templates to treat 0-byte reads and
|
1649
|
-
writes as no-ops, to comply with the documented type requirements for
|
1650
|
-
`SyncReadStream`, `AsyncReadStream`, `SyncWriteStream` and
|
1651
|
-
`AsyncWriteStream`.
|
1652
|
-
|
1653
|
-
* Changed some instances of the `throw` keyword to
|
1654
|
-
`boost::throw_exception()` to allow Asio to be used when exception
|
1655
|
-
support is disabled. Note that the SSL wrappers still require
|
1656
|
-
exception support.
|
1657
|
-
|
1658
|
-
* Made Asio compatible with the OpenSSL 1.0 beta.
|
1659
|
-
|
1660
|
-
* Eliminated a redundant system call in the Solaris /dev/poll backend.
|
1661
|
-
|
1662
|
-
* Fixed a bug in resizing of the bucket array in the internal hash maps.
|
1663
|
-
|
1664
|
-
* Ensured correct propagation of the error code when a synchronous
|
1665
|
-
accept fails.
|
1666
|
-
|
1667
|
-
* Ensured correct propagation of the error code when a synchronous read
|
1668
|
-
or write on a Windows `HANDLE` fails.
|
1669
|
-
|
1670
|
-
* Fixed failures reported when `_GLIBCXX_DEBUG` is defined.
|
1671
|
-
|
1672
|
-
* Fixed custom memory allocation support for timers.
|
1673
|
-
|
1674
|
-
* Tidied up various warnings reported by g++.
|
1675
|
-
|
1676
|
-
* Various documentation improvements, including more obvious hyperlinks
|
1677
|
-
to function overloads, header file information, examples for the
|
1678
|
-
handler type requirements, and adding enum values to the index.
|
1679
|
-
|
1680
|
-
[heading Asio 1.4.2]
|
1681
|
-
|
1682
|
-
* Implement automatic resizing of the bucket array in the internal hash
|
1683
|
-
maps. This is to improve performance for very large numbers of
|
1684
|
-
asynchronous operations and also to reduce memory usage for very small
|
1685
|
-
numbers. A new macro `(BOOST_)ASIO_HASH_MAP_BUCKETS` may be used to
|
1686
|
-
tweak the sizes used for the bucket arrays. (N.B. this feature
|
1687
|
-
introduced a bug which was fixed in Asio 1.4.3 / Boost 1.40.)
|
1688
|
-
|
1689
|
-
* Add performance optimisation for the Windows IOCP backend for when no
|
1690
|
-
timers are used.
|
1691
|
-
|
1692
|
-
* Prevent locale settings from affecting formatting of TCP and UDP
|
1693
|
-
endpoints.
|
1694
|
-
|
1695
|
-
* Fix a memory leak that occurred when an asynchronous SSL operation's
|
1696
|
-
completion handler threw an exception.
|
1697
|
-
|
1698
|
-
* Fix the implementation of `io_control()` so that it adheres to the
|
1699
|
-
documented type requirements for IoControlCommand.
|
1700
|
-
|
1701
|
-
* Fix incompatibility between Asio and ncurses.h.
|
1702
|
-
|
1703
|
-
* On Windows, specifically handle the case when an overlapped `ReadFile`
|
1704
|
-
call fails with `ERROR_MORE_DATA`. This enables a hack where a
|
1705
|
-
`windows::stream_handle` can be used with a message-oriented named
|
1706
|
-
pipe.
|
1707
|
-
|
1708
|
-
* Fix system call wrappers to always clear the error on success, as
|
1709
|
-
POSIX allows successful system calls to modify errno.
|
1710
|
-
|
1711
|
-
* Don't include termios.h if `(BOOST_)ASIO_DISABLE_SERIAL_PORT` is
|
1712
|
-
defined.
|
1713
|
-
|
1714
|
-
* Cleaned up some more MSVC level 4 warnings.
|
1715
|
-
|
1716
|
-
* Various documentation fixes.
|
1717
|
-
|
1718
|
-
[heading Asio 1.4.1]
|
1719
|
-
|
1720
|
-
* Improved compatibility with some Windows firewall software.
|
1721
|
-
|
1722
|
-
* Ensured arguments to `windows::overlapped_ptr::complete()` are correctly
|
1723
|
-
passed to the completion handler.
|
1724
|
-
|
1725
|
-
* Fixed a link problem and multicast failure on QNX.
|
1726
|
-
|
1727
|
-
* Fixed a compile error in SSL support on MinGW / g++ 3.4.5.
|
1728
|
-
|
1729
|
-
* Drop back to using a pipe for notification if eventfd is not available
|
1730
|
-
at runtime on Linux.
|
1731
|
-
|
1732
|
-
* Various minor bug and documentation fixes.
|
1733
|
-
|
1734
|
-
[heading Asio 1.4.0]
|
1735
|
-
|
1736
|
-
* Enhanced CompletionCondition concept with the signature
|
1737
|
-
`size_t CompletionCondition(error_code ec, size_t total)`, where the return
|
1738
|
-
value indicates the maximum number of bytes to be transferred on the next
|
1739
|
-
read or write operation. (The old CompletionCondition signature is still
|
1740
|
-
supported for backwards compatibility).
|
1741
|
-
|
1742
|
-
* New `windows::overlapped_ptr` class to allow arbitrary overlapped I/O
|
1743
|
-
functions (such as `TransmitFile`) to be used with Asio.
|
1744
|
-
|
1745
|
-
* On recent versions of Linux, an `eventfd` descriptor is now used (rather than
|
1746
|
-
a pipe) to interrupt a blocked select/epoll reactor.
|
1747
|
-
|
1748
|
-
* Added const overloads of `lowest_layer()`.
|
1749
|
-
|
1750
|
-
* Synchronous read, write, accept and connect operations are now thread safe
|
1751
|
-
(meaning that it is now permitted to perform concurrent synchronous
|
1752
|
-
operations on an individual socket, if supported by the OS).
|
1753
|
-
|
1754
|
-
* Reactor-based `io_service` implementations now use lazy initialisation to
|
1755
|
-
reduce the memory usage of an `io_service` object used only as a message
|
1756
|
-
queue.
|
1757
|
-
|
1758
|
-
[heading Asio 1.2.0]
|
1759
|
-
|
1760
|
-
* Added support for serial ports.
|
1761
|
-
|
1762
|
-
* Added support for UNIX domain sockets.
|
1763
|
-
|
1764
|
-
* Added support for raw sockets and ICMP.
|
1765
|
-
|
1766
|
-
* Added wrappers for POSIX stream-oriented file descriptors (excluding regular
|
1767
|
-
files).
|
1768
|
-
|
1769
|
-
* Added wrappers for Windows stream-oriented `HANDLE`s such as named pipes
|
1770
|
-
(requires `HANDLE`s that work with I/O completion ports).
|
1771
|
-
|
1772
|
-
* Added wrappers for Windows random-access `HANDLE`s such as files (requires
|
1773
|
-
`HANDLE`s that work with I/O completion ports).
|
1774
|
-
|
1775
|
-
* Added support for reactor-style operations (i.e. they report readiness but
|
1776
|
-
perform no I/O) using a new `null_buffers` type.
|
1777
|
-
|
1778
|
-
* Added an iterator type for bytewise traversal of buffer sequences.
|
1779
|
-
|
1780
|
-
* Added new `read_until()` and `async_read_until()` overloads that take a
|
1781
|
-
user-defined function object for locating message boundaries.
|
1782
|
-
|
1783
|
-
* Added an experimental two-lock queue (enabled by defining
|
1784
|
-
`(BOOST_)ASIO_ENABLE_TWO_LOCK_QUEUE`) that may provide better `io_service`
|
1785
|
-
scalability across many processors.
|
1786
|
-
|
1787
|
-
* Various fixes, performance improvements, and more complete coverage of the
|
1788
|
-
custom memory allocation support.
|
1789
|
-
|
1790
|
-
[heading Asio 1.0.0]
|
1791
|
-
|
1792
|
-
First stable release of Asio.
|
1793
|
-
|
1794
|
-
[endsect]
|