passenger 6.0.7 → 6.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +29 -0
- data/CONTRIBUTORS +1 -0
- data/README.md +2 -9
- data/build/common_library.rb +4 -4
- data/build/packaging.rb +4 -2
- data/build/support/cxx_dependency_map.rb +1 -0
- data/dev/copy_boost_headers +1 -1
- data/resources/release.txt +1 -0
- data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
- data/resources/templates/standalone/global.erb +4 -0
- data/src/agent/Core/AdminPanelConnector.h +1 -1
- data/src/agent/Core/ApplicationPool/Group.h +1 -1
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Options.h +2 -2
- data/src/agent/Core/ApplicationPool/Pool.h +1 -1
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
- data/src/agent/Core/Config.h +2 -2
- data/src/agent/Core/Controller/Config.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -1
- data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
- data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
- data/src/agent/Core/SpawningKit/Spawner.h +1 -0
- data/src/agent/Core/TelemetryCollector.h +1 -1
- data/src/agent/Shared/ApiServerUtils.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +1 -1
- data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
- data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
- data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
- data/src/cxx_supportlib/Constants.h +2 -2
- data/src/cxx_supportlib/FileTools/FileManip.cpp +10 -1
- data/src/cxx_supportlib/FileTools/FileManip.h +16 -0
- data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
- data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -1
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
- data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +9 -12
- data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +5 -1
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +107 -5
- data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +2 -2
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +12 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +13 -3
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +6 -2
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +13 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +6 -15
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +24 -24
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +1 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +84 -19
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +3 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +4 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +10 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +150 -147
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +47 -25
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +3 -3
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +14 -9
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -189
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +59 -66
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +73 -38
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +9 -7
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +12 -22
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +11 -11
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +13 -13
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +3 -3
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +8 -8
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +1 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +2 -4
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +47 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +37 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +426 -65
- data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +135 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +432 -257
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +178 -113
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +433 -257
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +286 -143
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +315 -96
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +241 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +364 -227
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +976 -461
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +21 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +15 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +329 -197
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +221 -115
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +11 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +416 -89
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +23 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +31 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +23 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +473 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +118 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +33 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +145 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +107 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +481 -129
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +29 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +25 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +36 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +36 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +205 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +55 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +378 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +218 -84
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +12 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +40 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +16 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +37 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +87 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +22 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +674 -283
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +15 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +211 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +65 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +16 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +62 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +53 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +20 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +43 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +42 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +26 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +48 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +43 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +82 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +77 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +16 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +31 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +31 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +22 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +21 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +24 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +47 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +26 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +67 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +65 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +177 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +84 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +46 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +251 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +2266 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1353 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1066 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +394 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1020 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +490 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +203 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +154 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +235 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +240 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +919 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +96 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +723 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +329 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +282 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +722 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +257 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +257 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +490 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +254 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +454 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +129 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +29 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +30 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +438 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +154 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +148 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +299 -243
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +204 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +199 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +16 -101
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +14 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +209 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +204 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +619 -132
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +194 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +2278 -445
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/redirect_error.hpp +148 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +59 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +114 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +261 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +73 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +281 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +131 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +562 -132
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +185 -91
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +714 -60
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +46 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +35 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +32 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +41 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +24 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +200 -190
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +189 -74
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +180 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +29 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +660 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +398 -57
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +51 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1460 -423
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/redirect_error.hpp → redirect_error.hpp} +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +528 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +314 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +37 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +51 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +41 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +44 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +235 -97
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +264 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +16 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +558 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +917 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +236 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +236 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +101 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +295 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +186 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +188 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +3 -346
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +4 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +38 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +3 -344
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +3 -328
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +372 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +51 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +178 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{atomic_template.hpp → atomic_impl.hpp} +327 -429
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1126 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +23 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_alpha.hpp → caps_arch_gcc_alpha.hpp} +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_arm.hpp → caps_arch_gcc_arm.hpp} +37 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_ppc.hpp → caps_arch_gcc_ppc.hpp} +19 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_sparc.hpp → caps_arch_gcc_sparc.hpp} +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_x86.hpp → caps_arch_gcc_x86.hpp} +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_arm.hpp → caps_arch_msvc_arm.hpp} +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_x86.hpp → caps_arch_msvc_x86.hpp} +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +39 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_alpha.hpp → core_arch_ops_gcc_alpha.hpp} +280 -289
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_arm.hpp → core_arch_ops_gcc_arm.hpp} +467 -447
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_ppc.hpp → core_arch_ops_gcc_ppc.hpp} +75 -94
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sparc.hpp → core_arch_ops_gcc_sparc.hpp} +33 -58
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_x86_dcas.hpp → core_arch_ops_gcc_x86.hpp} +507 -20
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_arm.hpp → core_arch_ops_msvc_arm.hpp} +58 -54
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_x86.hpp → core_arch_ops_msvc_x86.hpp} +69 -101
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_cas_based.hpp → core_ops_cas_based.hpp} +9 -22
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sync.hpp → core_ops_gcc_sync.hpp} +75 -52
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_linux_arm.hpp → core_ops_linux_arm.hpp} +32 -43
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +201 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_extending_cas_based.hpp → extending_cas_based_arithmetic.hpp} +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +23 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +60 -40
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +94 -91
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +147 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{integral_extend.hpp → integral_conversions.hpp} +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +23 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +64 -27
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +150 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +25 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +107 -105
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +25 -31
- data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +72 -22
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +155 -10
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +21 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +68 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
- data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +19 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +117 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +250 -208
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +11 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +30 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +133 -117
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +83 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +103 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +3 -12
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +51 -45
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +24 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +83 -77
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +82 -87
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +278 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +30 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +90 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +63 -67
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +48 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +150 -105
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +174 -155
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +157 -105
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +54 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +207 -207
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +633 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -6
- data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +157 -50
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +82 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +4 -17
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +22 -14
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +32 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +27 -22
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -11
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +3 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +63 -8
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +15 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +19 -57
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +4 -12
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +30 -28
- data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +18 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +7 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +13 -17
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +93 -66
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +17 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +67 -60
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
- data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +18 -13
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +43 -43
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +50 -52
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +41 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +23 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +35 -26
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +103 -318
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +437 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1252 -358
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +90 -59
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +149 -27
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +865 -159
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +159 -76
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +25 -16
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +154 -70
- data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
- data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
- data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
- data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
- data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
- data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +553 -884
- data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
- data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +152 -70
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +86 -32
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +28 -27
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +19 -18
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +26 -25
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +39 -32
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +97 -35
- data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +59 -58
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +17 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +27 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +36 -15
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +16 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +92 -388
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +87 -47
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +25 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +25 -17
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +23 -26
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_sleep.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -146
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +47 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +58 -23
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +79 -8
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +5 -11
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +57 -16
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +32 -16
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +16 -17
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +4 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +841 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +18 -24
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +6 -13
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +11 -37
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +1 -69
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +138 -59
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +15 -11
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +25 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +102 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +143 -28
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +3 -42
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +4 -43
- data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +29 -67
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/Configuration.c +3 -3
- data/src/nginx_module/config +2 -0
- data/src/nginx_module/ngx_http_passenger_module.c +2 -2
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +4 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +17 -9
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
- metadata +302 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -228
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -151
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -161
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -116
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// read_at.hpp
|
|
3
3
|
// ~~~~~~~~~~~
|
|
4
4
|
//
|
|
5
|
-
// Copyright (c) 2003-
|
|
5
|
+
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
|
6
6
|
//
|
|
7
7
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
8
8
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -440,9 +440,9 @@ std::size_t read_at(SyncRandomAccessReadDevice& d,
|
|
|
440
440
|
* std::size_t bytes_transferred
|
|
441
441
|
* ); @endcode
|
|
442
442
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
443
|
-
* not, the handler will not be invoked from within this function.
|
|
444
|
-
* the handler will be performed in a
|
|
445
|
-
* boost::asio::
|
|
443
|
+
* not, the handler will not be invoked from within this function. On
|
|
444
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
445
|
+
* manner equivalent to using boost::asio::post().
|
|
446
446
|
*
|
|
447
447
|
* @par Example
|
|
448
448
|
* To read into a single data buffer use the @ref buffer function as follows:
|
|
@@ -460,12 +460,17 @@ std::size_t read_at(SyncRandomAccessReadDevice& d,
|
|
|
460
460
|
* handler); @endcode
|
|
461
461
|
*/
|
|
462
462
|
template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
|
|
463
|
-
|
|
464
|
-
|
|
463
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
464
|
+
std::size_t)) ReadHandler
|
|
465
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
466
|
+
typename AsyncRandomAccessReadDevice::executor_type)>
|
|
467
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
465
468
|
void (boost::system::error_code, std::size_t))
|
|
466
469
|
async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
|
|
467
470
|
const MutableBufferSequence& buffers,
|
|
468
|
-
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
471
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
472
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
473
|
+
typename AsyncRandomAccessReadDevice::executor_type));
|
|
469
474
|
|
|
470
475
|
/// Start an asynchronous operation to read a certain amount of data at the
|
|
471
476
|
/// specified offset.
|
|
@@ -518,9 +523,9 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
|
|
|
518
523
|
* std::size_t bytes_transferred
|
|
519
524
|
* ); @endcode
|
|
520
525
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
521
|
-
* not, the handler will not be invoked from within this function.
|
|
522
|
-
* the handler will be performed in a
|
|
523
|
-
* boost::asio::
|
|
526
|
+
* not, the handler will not be invoked from within this function. On
|
|
527
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
528
|
+
* manner equivalent to using boost::asio::post().
|
|
524
529
|
*
|
|
525
530
|
* @par Example
|
|
526
531
|
* To read into a single data buffer use the @ref buffer function as follows:
|
|
@@ -532,14 +537,20 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
|
|
|
532
537
|
* buffers in one go, and how to use it with arrays, boost::array or
|
|
533
538
|
* std::vector.
|
|
534
539
|
*/
|
|
535
|
-
template <typename AsyncRandomAccessReadDevice,
|
|
536
|
-
typename
|
|
537
|
-
|
|
540
|
+
template <typename AsyncRandomAccessReadDevice,
|
|
541
|
+
typename MutableBufferSequence, typename CompletionCondition,
|
|
542
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
543
|
+
std::size_t)) ReadHandler
|
|
544
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
545
|
+
typename AsyncRandomAccessReadDevice::executor_type)>
|
|
546
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
538
547
|
void (boost::system::error_code, std::size_t))
|
|
539
548
|
async_read_at(AsyncRandomAccessReadDevice& d,
|
|
540
549
|
uint64_t offset, const MutableBufferSequence& buffers,
|
|
541
550
|
CompletionCondition completion_condition,
|
|
542
|
-
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
551
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
552
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
553
|
+
typename AsyncRandomAccessReadDevice::executor_type));
|
|
543
554
|
|
|
544
555
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
545
556
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
@@ -579,9 +590,9 @@ async_read_at(AsyncRandomAccessReadDevice& d,
|
|
|
579
590
|
* std::size_t bytes_transferred
|
|
580
591
|
* ); @endcode
|
|
581
592
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
582
|
-
* not, the handler will not be invoked from within this function.
|
|
583
|
-
* the handler will be performed in a
|
|
584
|
-
* boost::asio::
|
|
593
|
+
* not, the handler will not be invoked from within this function. On
|
|
594
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
595
|
+
* manner equivalent to using boost::asio::post().
|
|
585
596
|
*
|
|
586
597
|
* @note This overload is equivalent to calling:
|
|
587
598
|
* @code boost::asio::async_read_at(
|
|
@@ -590,11 +601,17 @@ async_read_at(AsyncRandomAccessReadDevice& d,
|
|
|
590
601
|
* handler); @endcode
|
|
591
602
|
*/
|
|
592
603
|
template <typename AsyncRandomAccessReadDevice, typename Allocator,
|
|
593
|
-
|
|
594
|
-
|
|
604
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
605
|
+
std::size_t)) ReadHandler
|
|
606
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
607
|
+
typename AsyncRandomAccessReadDevice::executor_type)>
|
|
608
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
595
609
|
void (boost::system::error_code, std::size_t))
|
|
596
|
-
async_read_at(AsyncRandomAccessReadDevice& d,
|
|
597
|
-
basic_streambuf<Allocator>& b,
|
|
610
|
+
async_read_at(AsyncRandomAccessReadDevice& d,
|
|
611
|
+
uint64_t offset, basic_streambuf<Allocator>& b,
|
|
612
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
613
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
614
|
+
typename AsyncRandomAccessReadDevice::executor_type));
|
|
598
615
|
|
|
599
616
|
/// Start an asynchronous operation to read a certain amount of data at the
|
|
600
617
|
/// specified offset.
|
|
@@ -645,18 +662,24 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
|
|
|
645
662
|
* std::size_t bytes_transferred
|
|
646
663
|
* ); @endcode
|
|
647
664
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
648
|
-
* not, the handler will not be invoked from within this function.
|
|
649
|
-
* the handler will be performed in a
|
|
650
|
-
* boost::asio::
|
|
665
|
+
* not, the handler will not be invoked from within this function. On
|
|
666
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
667
|
+
* manner equivalent to using boost::asio::post().
|
|
651
668
|
*/
|
|
652
|
-
template <typename AsyncRandomAccessReadDevice,
|
|
653
|
-
typename
|
|
654
|
-
|
|
669
|
+
template <typename AsyncRandomAccessReadDevice,
|
|
670
|
+
typename Allocator, typename CompletionCondition,
|
|
671
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
672
|
+
std::size_t)) ReadHandler
|
|
673
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
674
|
+
typename AsyncRandomAccessReadDevice::executor_type)>
|
|
675
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
655
676
|
void (boost::system::error_code, std::size_t))
|
|
656
677
|
async_read_at(AsyncRandomAccessReadDevice& d,
|
|
657
678
|
uint64_t offset, basic_streambuf<Allocator>& b,
|
|
658
679
|
CompletionCondition completion_condition,
|
|
659
|
-
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
680
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
681
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
682
|
+
typename AsyncRandomAccessReadDevice::executor_type));
|
|
660
683
|
|
|
661
684
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
662
685
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// read_until.hpp
|
|
3
3
|
// ~~~~~~~~~~~~~~
|
|
4
4
|
//
|
|
5
|
-
// Copyright (c) 2003-
|
|
5
|
+
// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
|
6
6
|
//
|
|
7
7
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
8
8
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#include <cstddef>
|
|
20
20
|
#include <string>
|
|
21
21
|
#include <boost/asio/async_result.hpp>
|
|
22
|
+
#include <boost/asio/buffer.hpp>
|
|
22
23
|
#include <boost/asio/detail/regex_fwd.hpp>
|
|
23
24
|
#include <boost/asio/detail/string_view.hpp>
|
|
24
25
|
#include <boost/asio/detail/type_traits.hpp>
|
|
@@ -75,6 +76,8 @@ struct is_match_condition
|
|
|
75
76
|
*/
|
|
76
77
|
/*@{*/
|
|
77
78
|
|
|
79
|
+
#if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
|
80
|
+
|
|
78
81
|
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
79
82
|
/// delimiter.
|
|
80
83
|
/**
|
|
@@ -112,7 +115,7 @@ struct is_match_condition
|
|
|
112
115
|
* @par Example
|
|
113
116
|
* To read data into a @c std::string until a newline is encountered:
|
|
114
117
|
* @code std::string data;
|
|
115
|
-
* std::
|
|
118
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
116
119
|
* boost::asio::dynamic_buffer(data), '\n');
|
|
117
120
|
* std::string line = data.substr(0, n);
|
|
118
121
|
* data.erase(0, n); @endcode
|
|
@@ -128,9 +131,13 @@ struct is_match_condition
|
|
|
128
131
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
129
132
|
* @c read_until operation.
|
|
130
133
|
*/
|
|
131
|
-
template <typename SyncReadStream, typename
|
|
134
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
132
135
|
std::size_t read_until(SyncReadStream& s,
|
|
133
|
-
BOOST_ASIO_MOVE_ARG(
|
|
136
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
|
|
137
|
+
typename enable_if<
|
|
138
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
139
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
140
|
+
>::type* = 0);
|
|
134
141
|
|
|
135
142
|
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
136
143
|
/// delimiter.
|
|
@@ -166,10 +173,14 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
166
173
|
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
167
174
|
* read_until operation to examine.
|
|
168
175
|
*/
|
|
169
|
-
template <typename SyncReadStream, typename
|
|
176
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
170
177
|
std::size_t read_until(SyncReadStream& s,
|
|
171
|
-
BOOST_ASIO_MOVE_ARG(
|
|
172
|
-
char delim, boost::system::error_code& ec
|
|
178
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
179
|
+
char delim, boost::system::error_code& ec,
|
|
180
|
+
typename enable_if<
|
|
181
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
182
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
183
|
+
>::type* = 0);
|
|
173
184
|
|
|
174
185
|
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
175
186
|
/// delimiter.
|
|
@@ -206,7 +217,7 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
206
217
|
* @par Example
|
|
207
218
|
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
208
219
|
* @code std::string data;
|
|
209
|
-
* std::
|
|
220
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
210
221
|
* boost::asio::dynamic_buffer(data), "\r\n");
|
|
211
222
|
* std::string line = data.substr(0, n);
|
|
212
223
|
* data.erase(0, n); @endcode
|
|
@@ -222,10 +233,14 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
222
233
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
223
234
|
* @c read_until operation.
|
|
224
235
|
*/
|
|
225
|
-
template <typename SyncReadStream, typename
|
|
236
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
226
237
|
std::size_t read_until(SyncReadStream& s,
|
|
227
|
-
BOOST_ASIO_MOVE_ARG(
|
|
228
|
-
BOOST_ASIO_STRING_VIEW_PARAM delim
|
|
238
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
239
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
240
|
+
typename enable_if<
|
|
241
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
242
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
243
|
+
>::type* = 0);
|
|
229
244
|
|
|
230
245
|
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
231
246
|
/// delimiter.
|
|
@@ -261,11 +276,15 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
261
276
|
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
262
277
|
* read_until operation to examine.
|
|
263
278
|
*/
|
|
264
|
-
template <typename SyncReadStream, typename
|
|
279
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
265
280
|
std::size_t read_until(SyncReadStream& s,
|
|
266
|
-
BOOST_ASIO_MOVE_ARG(
|
|
281
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
267
282
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
268
|
-
boost::system::error_code& ec
|
|
283
|
+
boost::system::error_code& ec,
|
|
284
|
+
typename enable_if<
|
|
285
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
286
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
287
|
+
>::type* = 0);
|
|
269
288
|
|
|
270
289
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
271
290
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
@@ -309,7 +328,7 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
309
328
|
* @par Example
|
|
310
329
|
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
311
330
|
* @code std::string data;
|
|
312
|
-
* std::
|
|
331
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
313
332
|
* boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
|
|
314
333
|
* std::string line = data.substr(0, n);
|
|
315
334
|
* data.erase(0, n); @endcode
|
|
@@ -325,10 +344,14 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
325
344
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
326
345
|
* @c read_until operation.
|
|
327
346
|
*/
|
|
328
|
-
template <typename SyncReadStream, typename
|
|
347
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
329
348
|
std::size_t read_until(SyncReadStream& s,
|
|
330
|
-
BOOST_ASIO_MOVE_ARG(
|
|
331
|
-
const boost::regex& expr
|
|
349
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
350
|
+
const boost::regex& expr,
|
|
351
|
+
typename enable_if<
|
|
352
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
353
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
354
|
+
>::type* = 0);
|
|
332
355
|
|
|
333
356
|
/// Read data into a dynamic buffer sequence until some part of the data it
|
|
334
357
|
/// contains matches a regular expression.
|
|
@@ -366,10 +389,14 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
366
389
|
* expression. An application will typically leave that data in the dynamic
|
|
367
390
|
* buffer sequence for a subsequent read_until operation to examine.
|
|
368
391
|
*/
|
|
369
|
-
template <typename SyncReadStream, typename
|
|
392
|
+
template <typename SyncReadStream, typename DynamicBuffer_v1>
|
|
370
393
|
std::size_t read_until(SyncReadStream& s,
|
|
371
|
-
BOOST_ASIO_MOVE_ARG(
|
|
372
|
-
const boost::regex& expr, boost::system::error_code& ec
|
|
394
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
395
|
+
const boost::regex& expr, boost::system::error_code& ec,
|
|
396
|
+
typename enable_if<
|
|
397
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
398
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
399
|
+
>::type* = 0);
|
|
373
400
|
|
|
374
401
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
375
402
|
// || defined(GENERATING_DOCUMENTATION)
|
|
@@ -402,7 +429,7 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
402
429
|
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
403
430
|
* @endcode
|
|
404
431
|
* where @c iterator represents the type:
|
|
405
|
-
* @code buffers_iterator<typename
|
|
432
|
+
* @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
|
|
406
433
|
* @endcode
|
|
407
434
|
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
408
435
|
* scanned to determine whether there is a match. The @c first member of the
|
|
@@ -477,11 +504,15 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
477
504
|
* @endcode
|
|
478
505
|
*/
|
|
479
506
|
template <typename SyncReadStream,
|
|
480
|
-
typename
|
|
507
|
+
typename DynamicBuffer_v1, typename MatchCondition>
|
|
481
508
|
std::size_t read_until(SyncReadStream& s,
|
|
482
|
-
BOOST_ASIO_MOVE_ARG(
|
|
509
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
483
510
|
MatchCondition match_condition,
|
|
484
|
-
typename enable_if<
|
|
511
|
+
typename enable_if<
|
|
512
|
+
is_match_condition<MatchCondition>::value
|
|
513
|
+
&& is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
514
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
515
|
+
>::type* = 0);
|
|
485
516
|
|
|
486
517
|
/// Read data into a dynamic buffer sequence until a function object indicates a
|
|
487
518
|
/// match.
|
|
@@ -510,7 +541,7 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
510
541
|
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
511
542
|
* @endcode
|
|
512
543
|
* where @c iterator represents the type:
|
|
513
|
-
* @code buffers_iterator<
|
|
544
|
+
* @code buffers_iterator<DynamicBuffer_v1::const_buffers_type>
|
|
514
545
|
* @endcode
|
|
515
546
|
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
516
547
|
* scanned to determine whether there is a match. The @c first member of the
|
|
@@ -537,11 +568,15 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
537
568
|
* function objects.
|
|
538
569
|
*/
|
|
539
570
|
template <typename SyncReadStream,
|
|
540
|
-
typename
|
|
571
|
+
typename DynamicBuffer_v1, typename MatchCondition>
|
|
541
572
|
std::size_t read_until(SyncReadStream& s,
|
|
542
|
-
BOOST_ASIO_MOVE_ARG(
|
|
573
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
543
574
|
MatchCondition match_condition, boost::system::error_code& ec,
|
|
544
|
-
typename enable_if<
|
|
575
|
+
typename enable_if<
|
|
576
|
+
is_match_condition<MatchCondition>::value
|
|
577
|
+
&& is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
578
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
579
|
+
>::type* = 0);
|
|
545
580
|
|
|
546
581
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
547
582
|
|
|
@@ -982,26 +1017,15 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
982
1017
|
|
|
983
1018
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
984
1019
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1020
|
+
#endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
|
985
1021
|
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
* @defgroup async_read_until boost::asio::async_read_until
|
|
989
|
-
*
|
|
990
|
-
* @brief The @c async_read_until function is a composed asynchronous operation
|
|
991
|
-
* that reads data into a dynamic buffer sequence, or into a streambuf, until
|
|
992
|
-
* it contains a delimiter, matches a regular expression, or a function object
|
|
993
|
-
* indicates a match.
|
|
994
|
-
*/
|
|
995
|
-
/*@{*/
|
|
996
|
-
|
|
997
|
-
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
998
|
-
/// until it contains a specified delimiter.
|
|
1022
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
1023
|
+
/// delimiter.
|
|
999
1024
|
/**
|
|
1000
|
-
* This function is used to
|
|
1001
|
-
*
|
|
1002
|
-
*
|
|
1003
|
-
*
|
|
1004
|
-
* is true:
|
|
1025
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1026
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
1027
|
+
* delimiter. The call will block until one of the following conditions is
|
|
1028
|
+
* true:
|
|
1005
1029
|
*
|
|
1006
1030
|
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1007
1031
|
* delimiter.
|
|
@@ -1009,89 +1033,58 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
1009
1033
|
* @li An error occurred.
|
|
1010
1034
|
*
|
|
1011
1035
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1012
|
-
*
|
|
1013
|
-
*
|
|
1014
|
-
* asynchronous operation completes immediately. The program must ensure that
|
|
1015
|
-
* the stream performs no other read operations (such as async_read,
|
|
1016
|
-
* async_read_until, the stream's async_read_some function, or any other
|
|
1017
|
-
* composed operations that perform reads) until this operation completes.
|
|
1036
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1037
|
+
* contains the delimiter, the function returns immediately.
|
|
1018
1038
|
*
|
|
1019
1039
|
* @param s The stream from which the data is to be read. The type must support
|
|
1020
|
-
* the
|
|
1040
|
+
* the SyncReadStream concept.
|
|
1021
1041
|
*
|
|
1022
1042
|
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1023
|
-
* Although the buffers object may be copied as necessary, ownership of the
|
|
1024
|
-
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1025
|
-
* that they remain valid until the handler is called.
|
|
1026
1043
|
*
|
|
1027
1044
|
* @param delim The delimiter character.
|
|
1028
1045
|
*
|
|
1029
|
-
* @
|
|
1030
|
-
*
|
|
1031
|
-
* handler must be:
|
|
1032
|
-
* @code void handler(
|
|
1033
|
-
* // Result of operation.
|
|
1034
|
-
* const boost::system::error_code& error,
|
|
1046
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1047
|
+
* and including the delimiter.
|
|
1035
1048
|
*
|
|
1036
|
-
*
|
|
1037
|
-
* // get area up to and including the delimiter.
|
|
1038
|
-
* // 0 if an error occurred.
|
|
1039
|
-
* std::size_t bytes_transferred
|
|
1040
|
-
* ); @endcode
|
|
1041
|
-
* Regardless of whether the asynchronous operation completes immediately or
|
|
1042
|
-
* not, the handler will not be invoked from within this function. Invocation of
|
|
1043
|
-
* the handler will be performed in a manner equivalent to using
|
|
1044
|
-
* boost::asio::io_context::post().
|
|
1049
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
1045
1050
|
*
|
|
1046
|
-
* @note After a successful
|
|
1047
|
-
*
|
|
1048
|
-
*
|
|
1049
|
-
*
|
|
1051
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1052
|
+
* may contain additional data beyond the delimiter. An application will
|
|
1053
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
1054
|
+
* read_until operation to examine.
|
|
1050
1055
|
*
|
|
1051
1056
|
* @par Example
|
|
1052
|
-
* To
|
|
1053
|
-
* encountered:
|
|
1057
|
+
* To read data into a @c std::string until a newline is encountered:
|
|
1054
1058
|
* @code std::string data;
|
|
1055
|
-
*
|
|
1056
|
-
*
|
|
1057
|
-
*
|
|
1058
|
-
*
|
|
1059
|
-
*
|
|
1060
|
-
*
|
|
1061
|
-
* data.erase(0, n);
|
|
1062
|
-
* ...
|
|
1063
|
-
* }
|
|
1064
|
-
* }
|
|
1065
|
-
* ...
|
|
1066
|
-
* boost::asio::async_read_until(s, data, '\n', handler); @endcode
|
|
1067
|
-
* After the @c async_read_until operation completes successfully, the buffer
|
|
1068
|
-
* @c data contains the delimiter:
|
|
1059
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
1060
|
+
* boost::asio::dynamic_buffer(data), '\n');
|
|
1061
|
+
* std::string line = data.substr(0, n);
|
|
1062
|
+
* data.erase(0, n); @endcode
|
|
1063
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
1064
|
+
* contains the delimiter:
|
|
1069
1065
|
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
1070
1066
|
* The call to @c substr then extracts the data up to and including the
|
|
1071
1067
|
* delimiter, so that the string @c line contains:
|
|
1072
1068
|
* @code { 'a', 'b', ..., 'c', '\n' } @endcode
|
|
1073
|
-
* After the call to @c erase, the remaining data is left in the buffer @c
|
|
1074
|
-
*
|
|
1069
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
1070
|
+
* follows:
|
|
1075
1071
|
* @code { 'd', 'e', ... } @endcode
|
|
1076
1072
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1077
|
-
* @c
|
|
1073
|
+
* @c read_until operation.
|
|
1078
1074
|
*/
|
|
1079
|
-
template <typename
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1085
|
-
char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
|
|
1075
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1076
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
|
|
1077
|
+
typename enable_if<
|
|
1078
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1079
|
+
>::type* = 0);
|
|
1086
1080
|
|
|
1087
|
-
///
|
|
1088
|
-
///
|
|
1081
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
1082
|
+
/// delimiter.
|
|
1089
1083
|
/**
|
|
1090
|
-
* This function is used to
|
|
1091
|
-
*
|
|
1092
|
-
*
|
|
1093
|
-
*
|
|
1094
|
-
* is true:
|
|
1084
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1085
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
1086
|
+
* delimiter. The call will block until one of the following conditions is
|
|
1087
|
+
* true:
|
|
1095
1088
|
*
|
|
1096
1089
|
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1097
1090
|
* delimiter.
|
|
@@ -1099,192 +1092,1182 @@ async_read_until(AsyncReadStream& s,
|
|
|
1099
1092
|
* @li An error occurred.
|
|
1100
1093
|
*
|
|
1101
1094
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1102
|
-
*
|
|
1103
|
-
*
|
|
1104
|
-
* asynchronous operation completes immediately. The program must ensure that
|
|
1105
|
-
* the stream performs no other read operations (such as async_read,
|
|
1106
|
-
* async_read_until, the stream's async_read_some function, or any other
|
|
1107
|
-
* composed operations that perform reads) until this operation completes.
|
|
1095
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1096
|
+
* contains the delimiter, the function returns immediately.
|
|
1108
1097
|
*
|
|
1109
1098
|
* @param s The stream from which the data is to be read. The type must support
|
|
1110
|
-
* the
|
|
1099
|
+
* the SyncReadStream concept.
|
|
1111
1100
|
*
|
|
1112
1101
|
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1113
|
-
* Although the buffers object may be copied as necessary, ownership of the
|
|
1114
|
-
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1115
|
-
* that they remain valid until the handler is called.
|
|
1116
1102
|
*
|
|
1117
|
-
* @param delim The delimiter
|
|
1103
|
+
* @param delim The delimiter character.
|
|
1118
1104
|
*
|
|
1119
|
-
* @param
|
|
1120
|
-
* Copies will be made of the handler as required. The function signature of the
|
|
1121
|
-
* handler must be:
|
|
1122
|
-
* @code void handler(
|
|
1123
|
-
* // Result of operation.
|
|
1124
|
-
* const boost::system::error_code& error,
|
|
1105
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
1125
1106
|
*
|
|
1126
|
-
*
|
|
1127
|
-
*
|
|
1128
|
-
* // 0 if an error occurred.
|
|
1129
|
-
* std::size_t bytes_transferred
|
|
1130
|
-
* ); @endcode
|
|
1131
|
-
* Regardless of whether the asynchronous operation completes immediately or
|
|
1132
|
-
* not, the handler will not be invoked from within this function. Invocation of
|
|
1133
|
-
* the handler will be performed in a manner equivalent to using
|
|
1134
|
-
* boost::asio::io_context::post().
|
|
1107
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1108
|
+
* and including the delimiter. Returns 0 if an error occurred.
|
|
1135
1109
|
*
|
|
1136
|
-
* @note After a successful
|
|
1137
|
-
*
|
|
1138
|
-
*
|
|
1139
|
-
*
|
|
1110
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1111
|
+
* may contain additional data beyond the delimiter. An application will
|
|
1112
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
1113
|
+
* read_until operation to examine.
|
|
1114
|
+
*/
|
|
1115
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1116
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1117
|
+
char delim, boost::system::error_code& ec,
|
|
1118
|
+
typename enable_if<
|
|
1119
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1120
|
+
>::type* = 0);
|
|
1121
|
+
|
|
1122
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
1123
|
+
/// delimiter.
|
|
1124
|
+
/**
|
|
1125
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1126
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
1127
|
+
* delimiter. The call will block until one of the following conditions is
|
|
1128
|
+
* true:
|
|
1129
|
+
*
|
|
1130
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1131
|
+
* delimiter.
|
|
1132
|
+
*
|
|
1133
|
+
* @li An error occurred.
|
|
1134
|
+
*
|
|
1135
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1136
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1137
|
+
* contains the delimiter, the function returns immediately.
|
|
1138
|
+
*
|
|
1139
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1140
|
+
* the SyncReadStream concept.
|
|
1141
|
+
*
|
|
1142
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1143
|
+
*
|
|
1144
|
+
* @param delim The delimiter string.
|
|
1145
|
+
*
|
|
1146
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1147
|
+
* and including the delimiter.
|
|
1148
|
+
*
|
|
1149
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1150
|
+
* may contain additional data beyond the delimiter. An application will
|
|
1151
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
1152
|
+
* read_until operation to examine.
|
|
1140
1153
|
*
|
|
1141
1154
|
* @par Example
|
|
1142
|
-
* To
|
|
1143
|
-
* encountered:
|
|
1155
|
+
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
1144
1156
|
* @code std::string data;
|
|
1145
|
-
*
|
|
1146
|
-
*
|
|
1147
|
-
*
|
|
1148
|
-
*
|
|
1149
|
-
*
|
|
1150
|
-
*
|
|
1151
|
-
* data.erase(0, n);
|
|
1152
|
-
* ...
|
|
1153
|
-
* }
|
|
1154
|
-
* }
|
|
1155
|
-
* ...
|
|
1156
|
-
* boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
|
|
1157
|
-
* After the @c async_read_until operation completes successfully, the string
|
|
1158
|
-
* @c data contains the delimiter:
|
|
1157
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
1158
|
+
* boost::asio::dynamic_buffer(data), "\r\n");
|
|
1159
|
+
* std::string line = data.substr(0, n);
|
|
1160
|
+
* data.erase(0, n); @endcode
|
|
1161
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
1162
|
+
* contains the delimiter:
|
|
1159
1163
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1160
1164
|
* The call to @c substr then extracts the data up to and including the
|
|
1161
1165
|
* delimiter, so that the string @c line contains:
|
|
1162
1166
|
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
1163
|
-
* After the call to @c erase, the remaining data is left in the
|
|
1164
|
-
*
|
|
1167
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
1168
|
+
* follows:
|
|
1165
1169
|
* @code { 'd', 'e', ... } @endcode
|
|
1166
1170
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1167
|
-
* @c
|
|
1171
|
+
* @c read_until operation.
|
|
1168
1172
|
*/
|
|
1169
|
-
template <typename
|
|
1170
|
-
|
|
1171
|
-
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
1172
|
-
void (boost::system::error_code, std::size_t))
|
|
1173
|
-
async_read_until(AsyncReadStream& s,
|
|
1174
|
-
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1173
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1174
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1175
1175
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
1180
|
-
|| defined(GENERATING_DOCUMENTATION)
|
|
1176
|
+
typename enable_if<
|
|
1177
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1178
|
+
>::type* = 0);
|
|
1181
1179
|
|
|
1182
|
-
///
|
|
1183
|
-
///
|
|
1180
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
1181
|
+
/// delimiter.
|
|
1184
1182
|
/**
|
|
1185
|
-
* This function is used to
|
|
1186
|
-
*
|
|
1187
|
-
*
|
|
1188
|
-
*
|
|
1189
|
-
* following conditions is true:
|
|
1183
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1184
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
1185
|
+
* delimiter. The call will block until one of the following conditions is
|
|
1186
|
+
* true:
|
|
1190
1187
|
*
|
|
1191
|
-
* @li
|
|
1192
|
-
*
|
|
1188
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1189
|
+
* delimiter.
|
|
1193
1190
|
*
|
|
1194
1191
|
* @li An error occurred.
|
|
1195
1192
|
*
|
|
1196
1193
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1197
|
-
*
|
|
1198
|
-
* the
|
|
1199
|
-
* the regular expression, this asynchronous operation completes immediately.
|
|
1200
|
-
* The program must ensure that the stream performs no other read operations
|
|
1201
|
-
* (such as async_read, async_read_until, the stream's async_read_some
|
|
1202
|
-
* function, or any other composed operations that perform reads) until this
|
|
1203
|
-
* operation completes.
|
|
1194
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1195
|
+
* contains the delimiter, the function returns immediately.
|
|
1204
1196
|
*
|
|
1205
1197
|
* @param s The stream from which the data is to be read. The type must support
|
|
1206
|
-
* the
|
|
1198
|
+
* the SyncReadStream concept.
|
|
1207
1199
|
*
|
|
1208
1200
|
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1209
|
-
* Although the buffers object may be copied as necessary, ownership of the
|
|
1210
|
-
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1211
|
-
* that they remain valid until the handler is called.
|
|
1212
1201
|
*
|
|
1213
|
-
* @param
|
|
1202
|
+
* @param delim The delimiter string.
|
|
1214
1203
|
*
|
|
1215
|
-
* @param
|
|
1216
|
-
*
|
|
1217
|
-
*
|
|
1218
|
-
*
|
|
1219
|
-
*
|
|
1220
|
-
*
|
|
1204
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
1205
|
+
*
|
|
1206
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1207
|
+
* and including the delimiter. Returns 0 if an error occurred.
|
|
1208
|
+
*
|
|
1209
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1210
|
+
* may contain additional data beyond the delimiter. An application will
|
|
1211
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
1212
|
+
* read_until operation to examine.
|
|
1213
|
+
*/
|
|
1214
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1215
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1216
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec,
|
|
1217
|
+
typename enable_if<
|
|
1218
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1219
|
+
>::type* = 0);
|
|
1220
|
+
|
|
1221
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1222
|
+
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
1223
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
1224
|
+
|
|
1225
|
+
/// Read data into a dynamic buffer sequence until some part of the data it
|
|
1226
|
+
/// contains matches a regular expression.
|
|
1227
|
+
/**
|
|
1228
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1229
|
+
* sequence until the dynamic buffer sequence's get area contains some data
|
|
1230
|
+
* that matches a regular expression. The call will block until one of the
|
|
1231
|
+
* following conditions is true:
|
|
1232
|
+
*
|
|
1233
|
+
* @li A substring of the dynamic buffer sequence's get area matches the
|
|
1234
|
+
* regular expression.
|
|
1235
|
+
*
|
|
1236
|
+
* @li An error occurred.
|
|
1237
|
+
*
|
|
1238
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1239
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1240
|
+
* contains data that matches the regular expression, the function returns
|
|
1241
|
+
* immediately.
|
|
1242
|
+
*
|
|
1243
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1244
|
+
* the SyncReadStream concept.
|
|
1245
|
+
*
|
|
1246
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
1247
|
+
*
|
|
1248
|
+
* @param expr The regular expression.
|
|
1249
|
+
*
|
|
1250
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1251
|
+
* and including the substring that matches the regular expression.
|
|
1252
|
+
*
|
|
1253
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
1254
|
+
*
|
|
1255
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1256
|
+
* may contain additional data beyond that which matched the regular
|
|
1257
|
+
* expression. An application will typically leave that data in the dynamic
|
|
1258
|
+
* buffer sequence for a subsequent read_until operation to examine.
|
|
1259
|
+
*
|
|
1260
|
+
* @par Example
|
|
1261
|
+
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
1262
|
+
* @code std::string data;
|
|
1263
|
+
* std::size_t n = boost::asio::read_until(s,
|
|
1264
|
+
* boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
|
|
1265
|
+
* std::string line = data.substr(0, n);
|
|
1266
|
+
* data.erase(0, n); @endcode
|
|
1267
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
1268
|
+
* contains the delimiter:
|
|
1269
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1270
|
+
* The call to @c substr then extracts the data up to and including the
|
|
1271
|
+
* delimiter, so that the string @c line contains:
|
|
1272
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
1273
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
1274
|
+
* follows:
|
|
1275
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1276
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1277
|
+
* @c read_until operation.
|
|
1278
|
+
*/
|
|
1279
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1280
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1281
|
+
const boost::regex& expr,
|
|
1282
|
+
typename enable_if<
|
|
1283
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1284
|
+
>::type* = 0);
|
|
1285
|
+
|
|
1286
|
+
/// Read data into a dynamic buffer sequence until some part of the data it
|
|
1287
|
+
/// contains matches a regular expression.
|
|
1288
|
+
/**
|
|
1289
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1290
|
+
* sequence until the dynamic buffer sequence's get area contains some data
|
|
1291
|
+
* that matches a regular expression. The call will block until one of the
|
|
1292
|
+
* following conditions is true:
|
|
1293
|
+
*
|
|
1294
|
+
* @li A substring of the dynamic buffer sequence's get area matches the
|
|
1295
|
+
* regular expression.
|
|
1296
|
+
*
|
|
1297
|
+
* @li An error occurred.
|
|
1298
|
+
*
|
|
1299
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1300
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
1301
|
+
* contains data that matches the regular expression, the function returns
|
|
1302
|
+
* immediately.
|
|
1303
|
+
*
|
|
1304
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1305
|
+
* the SyncReadStream concept.
|
|
1306
|
+
*
|
|
1307
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
1308
|
+
*
|
|
1309
|
+
* @param expr The regular expression.
|
|
1310
|
+
*
|
|
1311
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
1312
|
+
*
|
|
1313
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
1314
|
+
* and including the substring that matches the regular expression. Returns 0
|
|
1315
|
+
* if an error occurred.
|
|
1316
|
+
*
|
|
1317
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1318
|
+
* may contain additional data beyond that which matched the regular
|
|
1319
|
+
* expression. An application will typically leave that data in the dynamic
|
|
1320
|
+
* buffer sequence for a subsequent read_until operation to examine.
|
|
1321
|
+
*/
|
|
1322
|
+
template <typename SyncReadStream, typename DynamicBuffer_v2>
|
|
1323
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1324
|
+
const boost::regex& expr, boost::system::error_code& ec,
|
|
1325
|
+
typename enable_if<
|
|
1326
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1327
|
+
>::type* = 0);
|
|
1328
|
+
|
|
1329
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
1330
|
+
// || defined(GENERATING_DOCUMENTATION)
|
|
1331
|
+
|
|
1332
|
+
/// Read data into a dynamic buffer sequence until a function object indicates a
|
|
1333
|
+
/// match.
|
|
1334
|
+
|
|
1335
|
+
/**
|
|
1336
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1337
|
+
* sequence until a user-defined match condition function object, when applied
|
|
1338
|
+
* to the data contained in the dynamic buffer sequence, indicates a successful
|
|
1339
|
+
* match. The call will block until one of the following conditions is true:
|
|
1340
|
+
*
|
|
1341
|
+
* @li The match condition function object returns a std::pair where the second
|
|
1342
|
+
* element evaluates to true.
|
|
1343
|
+
*
|
|
1344
|
+
* @li An error occurred.
|
|
1345
|
+
*
|
|
1346
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1347
|
+
* read_some function. If the match condition function object already indicates
|
|
1348
|
+
* a match, the function returns immediately.
|
|
1349
|
+
*
|
|
1350
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1351
|
+
* the SyncReadStream concept.
|
|
1352
|
+
*
|
|
1353
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
1354
|
+
*
|
|
1355
|
+
* @param match_condition The function object to be called to determine whether
|
|
1356
|
+
* a match exists. The signature of the function object must be:
|
|
1357
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
1358
|
+
* @endcode
|
|
1359
|
+
* where @c iterator represents the type:
|
|
1360
|
+
* @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
|
|
1361
|
+
* @endcode
|
|
1362
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
1363
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
1364
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
1365
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
1366
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
1367
|
+
* @c second member of the return value is true if a match has been found, false
|
|
1368
|
+
* otherwise.
|
|
1369
|
+
*
|
|
1370
|
+
* @returns The number of bytes in the dynamic_buffer's get area that
|
|
1371
|
+
* have been fully consumed by the match function.
|
|
1372
|
+
*
|
|
1373
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
1374
|
+
*
|
|
1375
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1376
|
+
* may contain additional data beyond that which matched the function object.
|
|
1377
|
+
* An application will typically leave that data in the dynamic buffer sequence
|
|
1378
|
+
* for a subsequent read_until operation to examine.
|
|
1379
|
+
|
|
1380
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
1381
|
+
* evaluates to true for function pointers and function objects with a
|
|
1382
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
1383
|
+
* function objects.
|
|
1384
|
+
*
|
|
1385
|
+
* @par Examples
|
|
1386
|
+
* To read data into a dynamic buffer sequence until whitespace is encountered:
|
|
1387
|
+
* @code typedef boost::asio::buffers_iterator<
|
|
1388
|
+
* boost::asio::const_buffers_1> iterator;
|
|
1389
|
+
*
|
|
1390
|
+
* std::pair<iterator, bool>
|
|
1391
|
+
* match_whitespace(iterator begin, iterator end)
|
|
1392
|
+
* {
|
|
1393
|
+
* iterator i = begin;
|
|
1394
|
+
* while (i != end)
|
|
1395
|
+
* if (std::isspace(*i++))
|
|
1396
|
+
* return std::make_pair(i, true);
|
|
1397
|
+
* return std::make_pair(i, false);
|
|
1398
|
+
* }
|
|
1399
|
+
* ...
|
|
1400
|
+
* std::string data;
|
|
1401
|
+
* boost::asio::read_until(s, data, match_whitespace);
|
|
1402
|
+
* @endcode
|
|
1403
|
+
*
|
|
1404
|
+
* To read data into a @c std::string until a matching character is found:
|
|
1405
|
+
* @code class match_char
|
|
1406
|
+
* {
|
|
1407
|
+
* public:
|
|
1408
|
+
* explicit match_char(char c) : c_(c) {}
|
|
1409
|
+
*
|
|
1410
|
+
* template <typename Iterator>
|
|
1411
|
+
* std::pair<Iterator, bool> operator()(
|
|
1412
|
+
* Iterator begin, Iterator end) const
|
|
1413
|
+
* {
|
|
1414
|
+
* Iterator i = begin;
|
|
1415
|
+
* while (i != end)
|
|
1416
|
+
* if (c_ == *i++)
|
|
1417
|
+
* return std::make_pair(i, true);
|
|
1418
|
+
* return std::make_pair(i, false);
|
|
1419
|
+
* }
|
|
1420
|
+
*
|
|
1421
|
+
* private:
|
|
1422
|
+
* char c_;
|
|
1423
|
+
* };
|
|
1424
|
+
*
|
|
1425
|
+
* namespace asio {
|
|
1426
|
+
* template <> struct is_match_condition<match_char>
|
|
1427
|
+
* : public boost::true_type {};
|
|
1428
|
+
* } // namespace asio
|
|
1429
|
+
* ...
|
|
1430
|
+
* std::string data;
|
|
1431
|
+
* boost::asio::read_until(s, data, match_char('a'));
|
|
1432
|
+
* @endcode
|
|
1433
|
+
*/
|
|
1434
|
+
template <typename SyncReadStream,
|
|
1435
|
+
typename DynamicBuffer_v2, typename MatchCondition>
|
|
1436
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1437
|
+
MatchCondition match_condition,
|
|
1438
|
+
typename enable_if<
|
|
1439
|
+
is_match_condition<MatchCondition>::value
|
|
1440
|
+
&& is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1441
|
+
>::type* = 0);
|
|
1442
|
+
|
|
1443
|
+
/// Read data into a dynamic buffer sequence until a function object indicates a
|
|
1444
|
+
/// match.
|
|
1445
|
+
/**
|
|
1446
|
+
* This function is used to read data into the specified dynamic buffer
|
|
1447
|
+
* sequence until a user-defined match condition function object, when applied
|
|
1448
|
+
* to the data contained in the dynamic buffer sequence, indicates a successful
|
|
1449
|
+
* match. The call will block until one of the following conditions is true:
|
|
1450
|
+
*
|
|
1451
|
+
* @li The match condition function object returns a std::pair where the second
|
|
1452
|
+
* element evaluates to true.
|
|
1453
|
+
*
|
|
1454
|
+
* @li An error occurred.
|
|
1455
|
+
*
|
|
1456
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1457
|
+
* read_some function. If the match condition function object already indicates
|
|
1458
|
+
* a match, the function returns immediately.
|
|
1459
|
+
*
|
|
1460
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1461
|
+
* the SyncReadStream concept.
|
|
1462
|
+
*
|
|
1463
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
1464
|
+
*
|
|
1465
|
+
* @param match_condition The function object to be called to determine whether
|
|
1466
|
+
* a match exists. The signature of the function object must be:
|
|
1467
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
1468
|
+
* @endcode
|
|
1469
|
+
* where @c iterator represents the type:
|
|
1470
|
+
* @code buffers_iterator<DynamicBuffer_v2::const_buffers_type>
|
|
1471
|
+
* @endcode
|
|
1472
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
1473
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
1474
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
1475
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
1476
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
1477
|
+
* @c second member of the return value is true if a match has been found, false
|
|
1478
|
+
* otherwise.
|
|
1479
|
+
*
|
|
1480
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
1481
|
+
*
|
|
1482
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area that
|
|
1483
|
+
* have been fully consumed by the match function. Returns 0 if an error
|
|
1484
|
+
* occurred.
|
|
1485
|
+
*
|
|
1486
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
1487
|
+
* may contain additional data beyond that which matched the function object.
|
|
1488
|
+
* An application will typically leave that data in the dynamic buffer sequence
|
|
1489
|
+
* for a subsequent read_until operation to examine.
|
|
1490
|
+
*
|
|
1491
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
1492
|
+
* evaluates to true for function pointers and function objects with a
|
|
1493
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
1494
|
+
* function objects.
|
|
1495
|
+
*/
|
|
1496
|
+
template <typename SyncReadStream,
|
|
1497
|
+
typename DynamicBuffer_v2, typename MatchCondition>
|
|
1498
|
+
std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1499
|
+
MatchCondition match_condition, boost::system::error_code& ec,
|
|
1500
|
+
typename enable_if<
|
|
1501
|
+
is_match_condition<MatchCondition>::value
|
|
1502
|
+
&& is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
1503
|
+
>::type* = 0);
|
|
1504
|
+
|
|
1505
|
+
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1506
|
+
|
|
1507
|
+
/*@}*/
|
|
1508
|
+
/**
|
|
1509
|
+
* @defgroup async_read_until boost::asio::async_read_until
|
|
1510
|
+
*
|
|
1511
|
+
* @brief The @c async_read_until function is a composed asynchronous operation
|
|
1512
|
+
* that reads data into a dynamic buffer sequence, or into a streambuf, until
|
|
1513
|
+
* it contains a delimiter, matches a regular expression, or a function object
|
|
1514
|
+
* indicates a match.
|
|
1515
|
+
*/
|
|
1516
|
+
/*@{*/
|
|
1517
|
+
|
|
1518
|
+
#if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
|
1519
|
+
|
|
1520
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1521
|
+
/// until it contains a specified delimiter.
|
|
1522
|
+
/**
|
|
1523
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1524
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
1525
|
+
* specified delimiter. The function call always returns immediately. The
|
|
1526
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1527
|
+
* is true:
|
|
1528
|
+
*
|
|
1529
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1530
|
+
* delimiter.
|
|
1531
|
+
*
|
|
1532
|
+
* @li An error occurred.
|
|
1533
|
+
*
|
|
1534
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1535
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1536
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
1537
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1538
|
+
* the stream performs no other read operations (such as async_read,
|
|
1539
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1540
|
+
* composed operations that perform reads) until this operation completes.
|
|
1541
|
+
*
|
|
1542
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1543
|
+
* the AsyncReadStream concept.
|
|
1544
|
+
*
|
|
1545
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1546
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1547
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1548
|
+
* that they remain valid until the handler is called.
|
|
1549
|
+
*
|
|
1550
|
+
* @param delim The delimiter character.
|
|
1551
|
+
*
|
|
1552
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1553
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1554
|
+
* handler must be:
|
|
1555
|
+
* @code void handler(
|
|
1556
|
+
* // Result of operation.
|
|
1557
|
+
* const boost::system::error_code& error,
|
|
1558
|
+
*
|
|
1559
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1560
|
+
* // get area up to and including the delimiter.
|
|
1561
|
+
* // 0 if an error occurred.
|
|
1562
|
+
* std::size_t bytes_transferred
|
|
1563
|
+
* ); @endcode
|
|
1564
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1565
|
+
* not, the handler will not be invoked from within this function. On
|
|
1566
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
1567
|
+
* manner equivalent to using boost::asio::post().
|
|
1568
|
+
*
|
|
1569
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1570
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
1571
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
1572
|
+
* subsequent async_read_until operation to examine.
|
|
1573
|
+
*
|
|
1574
|
+
* @par Example
|
|
1575
|
+
* To asynchronously read data into a @c std::string until a newline is
|
|
1576
|
+
* encountered:
|
|
1577
|
+
* @code std::string data;
|
|
1578
|
+
* ...
|
|
1579
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1580
|
+
* {
|
|
1581
|
+
* if (!e)
|
|
1582
|
+
* {
|
|
1583
|
+
* std::string line = data.substr(0, n);
|
|
1584
|
+
* data.erase(0, n);
|
|
1585
|
+
* ...
|
|
1586
|
+
* }
|
|
1587
|
+
* }
|
|
1588
|
+
* ...
|
|
1589
|
+
* boost::asio::async_read_until(s, data, '\n', handler); @endcode
|
|
1590
|
+
* After the @c async_read_until operation completes successfully, the buffer
|
|
1591
|
+
* @c data contains the delimiter:
|
|
1592
|
+
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
1593
|
+
* The call to @c substr then extracts the data up to and including the
|
|
1594
|
+
* delimiter, so that the string @c line contains:
|
|
1595
|
+
* @code { 'a', 'b', ..., 'c', '\n' } @endcode
|
|
1596
|
+
* After the call to @c erase, the remaining data is left in the buffer @c data
|
|
1597
|
+
* as follows:
|
|
1598
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1599
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1600
|
+
* @c async_read_until operation.
|
|
1601
|
+
*/
|
|
1602
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v1,
|
|
1603
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
1604
|
+
std::size_t)) ReadHandler
|
|
1605
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
1606
|
+
typename AsyncReadStream::executor_type)>
|
|
1607
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1608
|
+
void (boost::system::error_code, std::size_t))
|
|
1609
|
+
async_read_until(AsyncReadStream& s,
|
|
1610
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
|
|
1611
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
1612
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
1613
|
+
typename AsyncReadStream::executor_type),
|
|
1614
|
+
typename enable_if<
|
|
1615
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
1616
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
1617
|
+
>::type* = 0);
|
|
1618
|
+
|
|
1619
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1620
|
+
/// until it contains a specified delimiter.
|
|
1621
|
+
/**
|
|
1622
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1623
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
1624
|
+
* specified delimiter. The function call always returns immediately. The
|
|
1625
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1626
|
+
* is true:
|
|
1627
|
+
*
|
|
1628
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1629
|
+
* delimiter.
|
|
1630
|
+
*
|
|
1631
|
+
* @li An error occurred.
|
|
1632
|
+
*
|
|
1633
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1634
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1635
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
1636
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1637
|
+
* the stream performs no other read operations (such as async_read,
|
|
1638
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1639
|
+
* composed operations that perform reads) until this operation completes.
|
|
1640
|
+
*
|
|
1641
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1642
|
+
* the AsyncReadStream concept.
|
|
1643
|
+
*
|
|
1644
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1645
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1646
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1647
|
+
* that they remain valid until the handler is called.
|
|
1648
|
+
*
|
|
1649
|
+
* @param delim The delimiter string.
|
|
1650
|
+
*
|
|
1651
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1652
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1653
|
+
* handler must be:
|
|
1654
|
+
* @code void handler(
|
|
1655
|
+
* // Result of operation.
|
|
1656
|
+
* const boost::system::error_code& error,
|
|
1657
|
+
*
|
|
1658
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1659
|
+
* // get area up to and including the delimiter.
|
|
1660
|
+
* // 0 if an error occurred.
|
|
1661
|
+
* std::size_t bytes_transferred
|
|
1662
|
+
* ); @endcode
|
|
1663
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1664
|
+
* not, the handler will not be invoked from within this function. On
|
|
1665
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
1666
|
+
* manner equivalent to using boost::asio::post().
|
|
1667
|
+
*
|
|
1668
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1669
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
1670
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
1671
|
+
* subsequent async_read_until operation to examine.
|
|
1672
|
+
*
|
|
1673
|
+
* @par Example
|
|
1674
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
1675
|
+
* encountered:
|
|
1676
|
+
* @code std::string data;
|
|
1677
|
+
* ...
|
|
1678
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1679
|
+
* {
|
|
1680
|
+
* if (!e)
|
|
1681
|
+
* {
|
|
1682
|
+
* std::string line = data.substr(0, n);
|
|
1683
|
+
* data.erase(0, n);
|
|
1684
|
+
* ...
|
|
1685
|
+
* }
|
|
1686
|
+
* }
|
|
1687
|
+
* ...
|
|
1688
|
+
* boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
|
|
1689
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
1690
|
+
* @c data contains the delimiter:
|
|
1691
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1692
|
+
* The call to @c substr then extracts the data up to and including the
|
|
1693
|
+
* delimiter, so that the string @c line contains:
|
|
1694
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
1695
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
1696
|
+
* as follows:
|
|
1697
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1698
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1699
|
+
* @c async_read_until operation.
|
|
1700
|
+
*/
|
|
1701
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v1,
|
|
1702
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
1703
|
+
std::size_t)) ReadHandler
|
|
1704
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
1705
|
+
typename AsyncReadStream::executor_type)>
|
|
1706
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1707
|
+
void (boost::system::error_code, std::size_t))
|
|
1708
|
+
async_read_until(AsyncReadStream& s,
|
|
1709
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
1710
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
1711
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
1712
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
1713
|
+
typename AsyncReadStream::executor_type),
|
|
1714
|
+
typename enable_if<
|
|
1715
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
1716
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
1717
|
+
>::type* = 0);
|
|
1718
|
+
|
|
1719
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1720
|
+
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
1721
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
1722
|
+
|
|
1723
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1724
|
+
/// until some part of its data matches a regular expression.
|
|
1725
|
+
/**
|
|
1726
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1727
|
+
* buffer sequence until the dynamic buffer sequence's get area contains some
|
|
1728
|
+
* data that matches a regular expression. The function call always returns
|
|
1729
|
+
* immediately. The asynchronous operation will continue until one of the
|
|
1730
|
+
* following conditions is true:
|
|
1731
|
+
*
|
|
1732
|
+
* @li A substring of the dynamic buffer sequence's get area matches the regular
|
|
1733
|
+
* expression.
|
|
1734
|
+
*
|
|
1735
|
+
* @li An error occurred.
|
|
1736
|
+
*
|
|
1737
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1738
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1739
|
+
* the dynamic buffer sequence's get area already contains data that matches
|
|
1740
|
+
* the regular expression, this asynchronous operation completes immediately.
|
|
1741
|
+
* The program must ensure that the stream performs no other read operations
|
|
1742
|
+
* (such as async_read, async_read_until, the stream's async_read_some
|
|
1743
|
+
* function, or any other composed operations that perform reads) until this
|
|
1744
|
+
* operation completes.
|
|
1745
|
+
*
|
|
1746
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1747
|
+
* the AsyncReadStream concept.
|
|
1748
|
+
*
|
|
1749
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1750
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1751
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1752
|
+
* that they remain valid until the handler is called.
|
|
1753
|
+
*
|
|
1754
|
+
* @param expr The regular expression.
|
|
1755
|
+
*
|
|
1756
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1757
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1758
|
+
* handler must be:
|
|
1759
|
+
* @code void handler(
|
|
1760
|
+
* // Result of operation.
|
|
1761
|
+
* const boost::system::error_code& error,
|
|
1762
|
+
*
|
|
1763
|
+
* // The number of bytes in the dynamic buffer
|
|
1764
|
+
* // sequence's get area up to and including the
|
|
1765
|
+
* // substring that matches the regular expression.
|
|
1766
|
+
* // 0 if an error occurred.
|
|
1767
|
+
* std::size_t bytes_transferred
|
|
1768
|
+
* ); @endcode
|
|
1769
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1770
|
+
* not, the handler will not be invoked from within this function. On
|
|
1771
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
1772
|
+
* manner equivalent to using boost::asio::post().
|
|
1773
|
+
*
|
|
1774
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1775
|
+
* sequence may contain additional data beyond that which matched the regular
|
|
1776
|
+
* expression. An application will typically leave that data in the dynamic
|
|
1777
|
+
* buffer sequence for a subsequent async_read_until operation to examine.
|
|
1778
|
+
*
|
|
1779
|
+
* @par Example
|
|
1780
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
1781
|
+
* encountered:
|
|
1782
|
+
* @code std::string data;
|
|
1783
|
+
* ...
|
|
1784
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1785
|
+
* {
|
|
1786
|
+
* if (!e)
|
|
1787
|
+
* {
|
|
1788
|
+
* std::string line = data.substr(0, n);
|
|
1789
|
+
* data.erase(0, n);
|
|
1790
|
+
* ...
|
|
1791
|
+
* }
|
|
1792
|
+
* }
|
|
1793
|
+
* ...
|
|
1794
|
+
* boost::asio::async_read_until(s, data,
|
|
1795
|
+
* boost::regex("\r\n"), handler); @endcode
|
|
1796
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
1797
|
+
* @c data contains the data which matched the regular expression:
|
|
1798
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1799
|
+
* The call to @c substr then extracts the data up to and including the match,
|
|
1800
|
+
* so that the string @c line contains:
|
|
1801
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
1802
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
1803
|
+
* as follows:
|
|
1804
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1805
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1806
|
+
* @c async_read_until operation.
|
|
1807
|
+
*/
|
|
1808
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v1,
|
|
1809
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
1810
|
+
std::size_t)) ReadHandler
|
|
1811
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
1812
|
+
typename AsyncReadStream::executor_type)>
|
|
1813
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1814
|
+
void (boost::system::error_code, std::size_t))
|
|
1815
|
+
async_read_until(AsyncReadStream& s,
|
|
1816
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
1817
|
+
const boost::regex& expr,
|
|
1818
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
1819
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
1820
|
+
typename AsyncReadStream::executor_type),
|
|
1821
|
+
typename enable_if<
|
|
1822
|
+
is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
1823
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
1824
|
+
>::type* = 0);
|
|
1825
|
+
|
|
1826
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
1827
|
+
// || defined(GENERATING_DOCUMENTATION)
|
|
1828
|
+
|
|
1829
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1830
|
+
/// until a function object indicates a match.
|
|
1831
|
+
/**
|
|
1832
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1833
|
+
* buffer sequence until a user-defined match condition function object, when
|
|
1834
|
+
* applied to the data contained in the dynamic buffer sequence, indicates a
|
|
1835
|
+
* successful match. The function call always returns immediately. The
|
|
1836
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1837
|
+
* is true:
|
|
1838
|
+
*
|
|
1839
|
+
* @li The match condition function object returns a std::pair where the second
|
|
1840
|
+
* element evaluates to true.
|
|
1841
|
+
*
|
|
1842
|
+
* @li An error occurred.
|
|
1843
|
+
*
|
|
1844
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1845
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1846
|
+
* the match condition function object already indicates a match, this
|
|
1847
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1848
|
+
* the stream performs no other read operations (such as async_read,
|
|
1849
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1850
|
+
* composed operations that perform reads) until this operation completes.
|
|
1851
|
+
*
|
|
1852
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1853
|
+
* the AsyncReadStream concept.
|
|
1854
|
+
*
|
|
1855
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1856
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1857
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1858
|
+
* that they remain valid until the handler is called.
|
|
1859
|
+
*
|
|
1860
|
+
* @param match_condition The function object to be called to determine whether
|
|
1861
|
+
* a match exists. The signature of the function object must be:
|
|
1862
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
1863
|
+
* @endcode
|
|
1864
|
+
* where @c iterator represents the type:
|
|
1865
|
+
* @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
|
|
1866
|
+
* @endcode
|
|
1867
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
1868
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
1869
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
1870
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
1871
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
1872
|
+
* @c second member of the return value is true if a match has been found, false
|
|
1873
|
+
* otherwise.
|
|
1874
|
+
*
|
|
1875
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1876
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1877
|
+
* handler must be:
|
|
1878
|
+
* @code void handler(
|
|
1879
|
+
* // Result of operation.
|
|
1880
|
+
* const boost::system::error_code& error,
|
|
1881
|
+
*
|
|
1882
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1883
|
+
* // get area that have been fully consumed by the match
|
|
1884
|
+
* // function. O if an error occurred.
|
|
1885
|
+
* std::size_t bytes_transferred
|
|
1886
|
+
* ); @endcode
|
|
1887
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1888
|
+
* not, the handler will not be invoked from within this function. On
|
|
1889
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
1890
|
+
* manner equivalent to using boost::asio::post().
|
|
1891
|
+
*
|
|
1892
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1893
|
+
* sequence may contain additional data beyond that which matched the function
|
|
1894
|
+
* object. An application will typically leave that data in the dynamic buffer
|
|
1895
|
+
* sequence for a subsequent async_read_until operation to examine.
|
|
1896
|
+
*
|
|
1897
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
1898
|
+
* evaluates to true for function pointers and function objects with a
|
|
1899
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
1900
|
+
* function objects.
|
|
1901
|
+
*
|
|
1902
|
+
* @par Examples
|
|
1903
|
+
* To asynchronously read data into a @c std::string until whitespace is
|
|
1904
|
+
* encountered:
|
|
1905
|
+
* @code typedef boost::asio::buffers_iterator<
|
|
1906
|
+
* boost::asio::const_buffers_1> iterator;
|
|
1907
|
+
*
|
|
1908
|
+
* std::pair<iterator, bool>
|
|
1909
|
+
* match_whitespace(iterator begin, iterator end)
|
|
1910
|
+
* {
|
|
1911
|
+
* iterator i = begin;
|
|
1912
|
+
* while (i != end)
|
|
1913
|
+
* if (std::isspace(*i++))
|
|
1914
|
+
* return std::make_pair(i, true);
|
|
1915
|
+
* return std::make_pair(i, false);
|
|
1916
|
+
* }
|
|
1917
|
+
* ...
|
|
1918
|
+
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1919
|
+
* ...
|
|
1920
|
+
* std::string data;
|
|
1921
|
+
* boost::asio::async_read_until(s, data, match_whitespace, handler);
|
|
1922
|
+
* @endcode
|
|
1923
|
+
*
|
|
1924
|
+
* To asynchronously read data into a @c std::string until a matching character
|
|
1925
|
+
* is found:
|
|
1926
|
+
* @code class match_char
|
|
1927
|
+
* {
|
|
1928
|
+
* public:
|
|
1929
|
+
* explicit match_char(char c) : c_(c) {}
|
|
1930
|
+
*
|
|
1931
|
+
* template <typename Iterator>
|
|
1932
|
+
* std::pair<Iterator, bool> operator()(
|
|
1933
|
+
* Iterator begin, Iterator end) const
|
|
1934
|
+
* {
|
|
1935
|
+
* Iterator i = begin;
|
|
1936
|
+
* while (i != end)
|
|
1937
|
+
* if (c_ == *i++)
|
|
1938
|
+
* return std::make_pair(i, true);
|
|
1939
|
+
* return std::make_pair(i, false);
|
|
1940
|
+
* }
|
|
1941
|
+
*
|
|
1942
|
+
* private:
|
|
1943
|
+
* char c_;
|
|
1944
|
+
* };
|
|
1945
|
+
*
|
|
1946
|
+
* namespace asio {
|
|
1947
|
+
* template <> struct is_match_condition<match_char>
|
|
1948
|
+
* : public boost::true_type {};
|
|
1949
|
+
* } // namespace asio
|
|
1950
|
+
* ...
|
|
1951
|
+
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1952
|
+
* ...
|
|
1953
|
+
* std::string data;
|
|
1954
|
+
* boost::asio::async_read_until(s, data, match_char('a'), handler);
|
|
1955
|
+
* @endcode
|
|
1956
|
+
*/
|
|
1957
|
+
template <typename AsyncReadStream,
|
|
1958
|
+
typename DynamicBuffer_v1, typename MatchCondition,
|
|
1959
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
1960
|
+
std::size_t)) ReadHandler
|
|
1961
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
1962
|
+
typename AsyncReadStream::executor_type)>
|
|
1963
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1964
|
+
void (boost::system::error_code, std::size_t))
|
|
1965
|
+
async_read_until(AsyncReadStream& s,
|
|
1966
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
|
|
1967
|
+
MatchCondition match_condition,
|
|
1968
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
1969
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
1970
|
+
typename AsyncReadStream::executor_type),
|
|
1971
|
+
typename enable_if<
|
|
1972
|
+
is_match_condition<MatchCondition>::value
|
|
1973
|
+
&& is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
|
|
1974
|
+
&& !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
|
|
1975
|
+
>::type* = 0);
|
|
1976
|
+
|
|
1977
|
+
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
1978
|
+
|
|
1979
|
+
/// Start an asynchronous operation to read data into a streambuf until it
|
|
1980
|
+
/// contains a specified delimiter.
|
|
1981
|
+
/**
|
|
1982
|
+
* This function is used to asynchronously read data into the specified
|
|
1983
|
+
* streambuf until the streambuf's get area contains the specified delimiter.
|
|
1984
|
+
* The function call always returns immediately. The asynchronous operation
|
|
1985
|
+
* will continue until one of the following conditions is true:
|
|
1986
|
+
*
|
|
1987
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
1988
|
+
*
|
|
1989
|
+
* @li An error occurred.
|
|
1990
|
+
*
|
|
1991
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1992
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1993
|
+
* the streambuf's get area already contains the delimiter, this asynchronous
|
|
1994
|
+
* operation completes immediately. The program must ensure that the stream
|
|
1995
|
+
* performs no other read operations (such as async_read, async_read_until, the
|
|
1996
|
+
* stream's async_read_some function, or any other composed operations that
|
|
1997
|
+
* perform reads) until this operation completes.
|
|
1998
|
+
*
|
|
1999
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
2000
|
+
* the AsyncReadStream concept.
|
|
2001
|
+
*
|
|
2002
|
+
* @param b A streambuf object into which the data will be read. Ownership of
|
|
2003
|
+
* the streambuf is retained by the caller, which must guarantee that it remains
|
|
2004
|
+
* valid until the handler is called.
|
|
2005
|
+
*
|
|
2006
|
+
* @param delim The delimiter character.
|
|
2007
|
+
*
|
|
2008
|
+
* @param handler The handler to be called when the read operation completes.
|
|
2009
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
2010
|
+
* handler must be:
|
|
2011
|
+
* @code void handler(
|
|
2012
|
+
* // Result of operation.
|
|
2013
|
+
* const boost::system::error_code& error,
|
|
2014
|
+
*
|
|
2015
|
+
* // The number of bytes in the streambuf's get
|
|
2016
|
+
* // area up to and including the delimiter.
|
|
2017
|
+
* // 0 if an error occurred.
|
|
2018
|
+
* std::size_t bytes_transferred
|
|
2019
|
+
* ); @endcode
|
|
2020
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
2021
|
+
* not, the handler will not be invoked from within this function. On
|
|
2022
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2023
|
+
* manner equivalent to using boost::asio::post().
|
|
2024
|
+
*
|
|
2025
|
+
* @note After a successful async_read_until operation, the streambuf may
|
|
2026
|
+
* contain additional data beyond the delimiter. An application will typically
|
|
2027
|
+
* leave that data in the streambuf for a subsequent async_read_until operation
|
|
2028
|
+
* to examine.
|
|
2029
|
+
*
|
|
2030
|
+
* @par Example
|
|
2031
|
+
* To asynchronously read data into a streambuf until a newline is encountered:
|
|
2032
|
+
* @code boost::asio::streambuf b;
|
|
2033
|
+
* ...
|
|
2034
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
2035
|
+
* {
|
|
2036
|
+
* if (!e)
|
|
2037
|
+
* {
|
|
2038
|
+
* std::istream is(&b);
|
|
2039
|
+
* std::string line;
|
|
2040
|
+
* std::getline(is, line);
|
|
2041
|
+
* ...
|
|
2042
|
+
* }
|
|
2043
|
+
* }
|
|
2044
|
+
* ...
|
|
2045
|
+
* boost::asio::async_read_until(s, b, '\n', handler); @endcode
|
|
2046
|
+
* After the @c async_read_until operation completes successfully, the buffer
|
|
2047
|
+
* @c b contains the delimiter:
|
|
2048
|
+
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
2049
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
2050
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
2051
|
+
* @code { 'a', 'b', ..., 'c' } @endcode
|
|
2052
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
2053
|
+
* @code { 'd', 'e', ... } @endcode
|
|
2054
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
2055
|
+
* @c async_read_until operation.
|
|
2056
|
+
*/
|
|
2057
|
+
template <typename AsyncReadStream, typename Allocator,
|
|
2058
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2059
|
+
std::size_t)) ReadHandler
|
|
2060
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2061
|
+
typename AsyncReadStream::executor_type)>
|
|
2062
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
2063
|
+
void (boost::system::error_code, std::size_t))
|
|
2064
|
+
async_read_until(AsyncReadStream& s,
|
|
2065
|
+
boost::asio::basic_streambuf<Allocator>& b, char delim,
|
|
2066
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2067
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2068
|
+
typename AsyncReadStream::executor_type));
|
|
2069
|
+
|
|
2070
|
+
/// Start an asynchronous operation to read data into a streambuf until it
|
|
2071
|
+
/// contains a specified delimiter.
|
|
2072
|
+
/**
|
|
2073
|
+
* This function is used to asynchronously read data into the specified
|
|
2074
|
+
* streambuf until the streambuf's get area contains the specified delimiter.
|
|
2075
|
+
* The function call always returns immediately. The asynchronous operation
|
|
2076
|
+
* will continue until one of the following conditions is true:
|
|
1221
2077
|
*
|
|
1222
|
-
*
|
|
1223
|
-
*
|
|
1224
|
-
*
|
|
2078
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
2079
|
+
*
|
|
2080
|
+
* @li An error occurred.
|
|
2081
|
+
*
|
|
2082
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
2083
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
2084
|
+
* the streambuf's get area already contains the delimiter, this asynchronous
|
|
2085
|
+
* operation completes immediately. The program must ensure that the stream
|
|
2086
|
+
* performs no other read operations (such as async_read, async_read_until, the
|
|
2087
|
+
* stream's async_read_some function, or any other composed operations that
|
|
2088
|
+
* perform reads) until this operation completes.
|
|
2089
|
+
*
|
|
2090
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
2091
|
+
* the AsyncReadStream concept.
|
|
2092
|
+
*
|
|
2093
|
+
* @param b A streambuf object into which the data will be read. Ownership of
|
|
2094
|
+
* the streambuf is retained by the caller, which must guarantee that it remains
|
|
2095
|
+
* valid until the handler is called.
|
|
2096
|
+
*
|
|
2097
|
+
* @param delim The delimiter string.
|
|
2098
|
+
*
|
|
2099
|
+
* @param handler The handler to be called when the read operation completes.
|
|
2100
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
2101
|
+
* handler must be:
|
|
2102
|
+
* @code void handler(
|
|
2103
|
+
* // Result of operation.
|
|
2104
|
+
* const boost::system::error_code& error,
|
|
2105
|
+
*
|
|
2106
|
+
* // The number of bytes in the streambuf's get
|
|
2107
|
+
* // area up to and including the delimiter.
|
|
1225
2108
|
* // 0 if an error occurred.
|
|
1226
2109
|
* std::size_t bytes_transferred
|
|
1227
2110
|
* ); @endcode
|
|
1228
2111
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1229
|
-
* not, the handler will not be invoked from within this function.
|
|
1230
|
-
* the handler will be performed in a
|
|
1231
|
-
* boost::asio::
|
|
2112
|
+
* not, the handler will not be invoked from within this function. On
|
|
2113
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2114
|
+
* manner equivalent to using boost::asio::post().
|
|
1232
2115
|
*
|
|
1233
|
-
* @note After a successful async_read_until operation, the
|
|
1234
|
-
*
|
|
1235
|
-
*
|
|
1236
|
-
*
|
|
2116
|
+
* @note After a successful async_read_until operation, the streambuf may
|
|
2117
|
+
* contain additional data beyond the delimiter. An application will typically
|
|
2118
|
+
* leave that data in the streambuf for a subsequent async_read_until operation
|
|
2119
|
+
* to examine.
|
|
1237
2120
|
*
|
|
1238
2121
|
* @par Example
|
|
1239
|
-
* To asynchronously read data into a
|
|
2122
|
+
* To asynchronously read data into a streambuf until a newline is encountered:
|
|
2123
|
+
* @code boost::asio::streambuf b;
|
|
2124
|
+
* ...
|
|
2125
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
2126
|
+
* {
|
|
2127
|
+
* if (!e)
|
|
2128
|
+
* {
|
|
2129
|
+
* std::istream is(&b);
|
|
2130
|
+
* std::string line;
|
|
2131
|
+
* std::getline(is, line);
|
|
2132
|
+
* ...
|
|
2133
|
+
* }
|
|
2134
|
+
* }
|
|
2135
|
+
* ...
|
|
2136
|
+
* boost::asio::async_read_until(s, b, "\r\n", handler); @endcode
|
|
2137
|
+
* After the @c async_read_until operation completes successfully, the buffer
|
|
2138
|
+
* @c b contains the delimiter:
|
|
2139
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
2140
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
2141
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
2142
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
2143
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
2144
|
+
* @code { 'd', 'e', ... } @endcode
|
|
2145
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
2146
|
+
* @c async_read_until operation.
|
|
2147
|
+
*/
|
|
2148
|
+
template <typename AsyncReadStream, typename Allocator,
|
|
2149
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2150
|
+
std::size_t)) ReadHandler
|
|
2151
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2152
|
+
typename AsyncReadStream::executor_type)>
|
|
2153
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
2154
|
+
void (boost::system::error_code, std::size_t))
|
|
2155
|
+
async_read_until(AsyncReadStream& s,
|
|
2156
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
2157
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
2158
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2159
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2160
|
+
typename AsyncReadStream::executor_type));
|
|
2161
|
+
|
|
2162
|
+
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
2163
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
2164
|
+
|
|
2165
|
+
/// Start an asynchronous operation to read data into a streambuf until some
|
|
2166
|
+
/// part of its data matches a regular expression.
|
|
2167
|
+
/**
|
|
2168
|
+
* This function is used to asynchronously read data into the specified
|
|
2169
|
+
* streambuf until the streambuf's get area contains some data that matches a
|
|
2170
|
+
* regular expression. The function call always returns immediately. The
|
|
2171
|
+
* asynchronous operation will continue until one of the following conditions
|
|
2172
|
+
* is true:
|
|
2173
|
+
*
|
|
2174
|
+
* @li A substring of the streambuf's get area matches the regular expression.
|
|
2175
|
+
*
|
|
2176
|
+
* @li An error occurred.
|
|
2177
|
+
*
|
|
2178
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
2179
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
2180
|
+
* the streambuf's get area already contains data that matches the regular
|
|
2181
|
+
* expression, this asynchronous operation completes immediately. The program
|
|
2182
|
+
* must ensure that the stream performs no other read operations (such as
|
|
2183
|
+
* async_read, async_read_until, the stream's async_read_some function, or any
|
|
2184
|
+
* other composed operations that perform reads) until this operation
|
|
2185
|
+
* completes.
|
|
2186
|
+
*
|
|
2187
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
2188
|
+
* the AsyncReadStream concept.
|
|
2189
|
+
*
|
|
2190
|
+
* @param b A streambuf object into which the data will be read. Ownership of
|
|
2191
|
+
* the streambuf is retained by the caller, which must guarantee that it remains
|
|
2192
|
+
* valid until the handler is called.
|
|
2193
|
+
*
|
|
2194
|
+
* @param expr The regular expression.
|
|
2195
|
+
*
|
|
2196
|
+
* @param handler The handler to be called when the read operation completes.
|
|
2197
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
2198
|
+
* handler must be:
|
|
2199
|
+
* @code void handler(
|
|
2200
|
+
* // Result of operation.
|
|
2201
|
+
* const boost::system::error_code& error,
|
|
2202
|
+
*
|
|
2203
|
+
* // The number of bytes in the streambuf's get
|
|
2204
|
+
* // area up to and including the substring
|
|
2205
|
+
* // that matches the regular. expression.
|
|
2206
|
+
* // 0 if an error occurred.
|
|
2207
|
+
* std::size_t bytes_transferred
|
|
2208
|
+
* ); @endcode
|
|
2209
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
2210
|
+
* not, the handler will not be invoked from within this function. On
|
|
2211
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2212
|
+
* manner equivalent to using boost::asio::post().
|
|
2213
|
+
*
|
|
2214
|
+
* @note After a successful async_read_until operation, the streambuf may
|
|
2215
|
+
* contain additional data beyond that which matched the regular expression. An
|
|
2216
|
+
* application will typically leave that data in the streambuf for a subsequent
|
|
2217
|
+
* async_read_until operation to examine.
|
|
2218
|
+
*
|
|
2219
|
+
* @par Example
|
|
2220
|
+
* To asynchronously read data into a streambuf until a CR-LF sequence is
|
|
1240
2221
|
* encountered:
|
|
1241
|
-
* @code
|
|
2222
|
+
* @code boost::asio::streambuf b;
|
|
1242
2223
|
* ...
|
|
1243
2224
|
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1244
2225
|
* {
|
|
1245
2226
|
* if (!e)
|
|
1246
2227
|
* {
|
|
1247
|
-
* std::
|
|
1248
|
-
*
|
|
2228
|
+
* std::istream is(&b);
|
|
2229
|
+
* std::string line;
|
|
2230
|
+
* std::getline(is, line);
|
|
1249
2231
|
* ...
|
|
1250
2232
|
* }
|
|
1251
2233
|
* }
|
|
1252
2234
|
* ...
|
|
1253
|
-
* boost::asio::async_read_until(s,
|
|
1254
|
-
*
|
|
1255
|
-
*
|
|
1256
|
-
* @c data contains the data which matched the regular expression:
|
|
2235
|
+
* boost::asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
|
|
2236
|
+
* After the @c async_read_until operation completes successfully, the buffer
|
|
2237
|
+
* @c b contains the data which matched the regular expression:
|
|
1257
2238
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1258
|
-
* The call to @c
|
|
1259
|
-
* so that the string @c line contains:
|
|
1260
|
-
* @code { 'a', 'b', ..., 'c', '\r'
|
|
1261
|
-
*
|
|
1262
|
-
* as follows:
|
|
2239
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
2240
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
2241
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
2242
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
1263
2243
|
* @code { 'd', 'e', ... } @endcode
|
|
1264
2244
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1265
2245
|
* @c async_read_until operation.
|
|
1266
2246
|
*/
|
|
1267
|
-
template <typename AsyncReadStream,
|
|
1268
|
-
|
|
1269
|
-
|
|
2247
|
+
template <typename AsyncReadStream, typename Allocator,
|
|
2248
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2249
|
+
std::size_t)) ReadHandler
|
|
2250
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2251
|
+
typename AsyncReadStream::executor_type)>
|
|
2252
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1270
2253
|
void (boost::system::error_code, std::size_t))
|
|
1271
2254
|
async_read_until(AsyncReadStream& s,
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
2255
|
+
boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
|
|
2256
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2257
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2258
|
+
typename AsyncReadStream::executor_type));
|
|
1275
2259
|
|
|
1276
2260
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
1277
2261
|
// || defined(GENERATING_DOCUMENTATION)
|
|
1278
2262
|
|
|
1279
|
-
/// Start an asynchronous operation to read data into a
|
|
1280
|
-
///
|
|
2263
|
+
/// Start an asynchronous operation to read data into a streambuf until a
|
|
2264
|
+
/// function object indicates a match.
|
|
1281
2265
|
/**
|
|
1282
|
-
* This function is used to asynchronously read data into the specified
|
|
1283
|
-
*
|
|
1284
|
-
*
|
|
1285
|
-
*
|
|
1286
|
-
*
|
|
1287
|
-
* is true:
|
|
2266
|
+
* This function is used to asynchronously read data into the specified
|
|
2267
|
+
* streambuf until a user-defined match condition function object, when applied
|
|
2268
|
+
* to the data contained in the streambuf, indicates a successful match. The
|
|
2269
|
+
* function call always returns immediately. The asynchronous operation will
|
|
2270
|
+
* continue until one of the following conditions is true:
|
|
1288
2271
|
*
|
|
1289
2272
|
* @li The match condition function object returns a std::pair where the second
|
|
1290
2273
|
* element evaluates to true.
|
|
@@ -1302,17 +2285,14 @@ async_read_until(AsyncReadStream& s,
|
|
|
1302
2285
|
* @param s The stream from which the data is to be read. The type must support
|
|
1303
2286
|
* the AsyncReadStream concept.
|
|
1304
2287
|
*
|
|
1305
|
-
* @param
|
|
1306
|
-
* Although the buffers object may be copied as necessary, ownership of the
|
|
1307
|
-
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1308
|
-
* that they remain valid until the handler is called.
|
|
2288
|
+
* @param b A streambuf object into which the data will be read.
|
|
1309
2289
|
*
|
|
1310
2290
|
* @param match_condition The function object to be called to determine whether
|
|
1311
2291
|
* a match exists. The signature of the function object must be:
|
|
1312
2292
|
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
1313
2293
|
* @endcode
|
|
1314
2294
|
* where @c iterator represents the type:
|
|
1315
|
-
* @code buffers_iterator<
|
|
2295
|
+
* @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
|
|
1316
2296
|
* @endcode
|
|
1317
2297
|
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
1318
2298
|
* scanned to determine whether there is a match. The @c first member of the
|
|
@@ -1329,20 +2309,20 @@ async_read_until(AsyncReadStream& s,
|
|
|
1329
2309
|
* // Result of operation.
|
|
1330
2310
|
* const boost::system::error_code& error,
|
|
1331
2311
|
*
|
|
1332
|
-
* // The number of bytes in the
|
|
1333
|
-
* //
|
|
1334
|
-
* // function. O if an error occurred.
|
|
2312
|
+
* // The number of bytes in the streambuf's get
|
|
2313
|
+
* // area that have been fully consumed by the
|
|
2314
|
+
* // match function. O if an error occurred.
|
|
1335
2315
|
* std::size_t bytes_transferred
|
|
1336
2316
|
* ); @endcode
|
|
1337
2317
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1338
|
-
* not, the handler will not be invoked from within this function.
|
|
1339
|
-
* the handler will be performed in a
|
|
1340
|
-
* boost::asio::
|
|
2318
|
+
* not, the handler will not be invoked from within this function. On
|
|
2319
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2320
|
+
* manner equivalent to using boost::asio::post().
|
|
1341
2321
|
*
|
|
1342
|
-
* @note After a successful async_read_until operation, the
|
|
1343
|
-
*
|
|
1344
|
-
*
|
|
1345
|
-
*
|
|
2322
|
+
* @note After a successful async_read_until operation, the streambuf may
|
|
2323
|
+
* contain additional data beyond that which matched the function object. An
|
|
2324
|
+
* application will typically leave that data in the streambuf for a subsequent
|
|
2325
|
+
* async_read_until operation to examine.
|
|
1346
2326
|
*
|
|
1347
2327
|
* @note The default implementation of the @c is_match_condition type trait
|
|
1348
2328
|
* evaluates to true for function pointers and function objects with a
|
|
@@ -1350,10 +2330,9 @@ async_read_until(AsyncReadStream& s,
|
|
|
1350
2330
|
* function objects.
|
|
1351
2331
|
*
|
|
1352
2332
|
* @par Examples
|
|
1353
|
-
* To asynchronously read data into a
|
|
1354
|
-
* encountered:
|
|
2333
|
+
* To asynchronously read data into a streambuf until whitespace is encountered:
|
|
1355
2334
|
* @code typedef boost::asio::buffers_iterator<
|
|
1356
|
-
* boost::asio::
|
|
2335
|
+
* boost::asio::streambuf::const_buffers_type> iterator;
|
|
1357
2336
|
*
|
|
1358
2337
|
* std::pair<iterator, bool>
|
|
1359
2338
|
* match_whitespace(iterator begin, iterator end)
|
|
@@ -1367,12 +2346,12 @@ async_read_until(AsyncReadStream& s,
|
|
|
1367
2346
|
* ...
|
|
1368
2347
|
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1369
2348
|
* ...
|
|
1370
|
-
*
|
|
1371
|
-
* boost::asio::async_read_until(s,
|
|
2349
|
+
* boost::asio::streambuf b;
|
|
2350
|
+
* boost::asio::async_read_until(s, b, match_whitespace, handler);
|
|
1372
2351
|
* @endcode
|
|
1373
2352
|
*
|
|
1374
|
-
* To asynchronously read data into a
|
|
1375
|
-
*
|
|
2353
|
+
* To asynchronously read data into a streambuf until a matching character is
|
|
2354
|
+
* found:
|
|
1376
2355
|
* @code class match_char
|
|
1377
2356
|
* {
|
|
1378
2357
|
* public:
|
|
@@ -1400,47 +2379,58 @@ async_read_until(AsyncReadStream& s,
|
|
|
1400
2379
|
* ...
|
|
1401
2380
|
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1402
2381
|
* ...
|
|
1403
|
-
*
|
|
1404
|
-
* boost::asio::async_read_until(s,
|
|
2382
|
+
* boost::asio::streambuf b;
|
|
2383
|
+
* boost::asio::async_read_until(s, b, match_char('a'), handler);
|
|
1405
2384
|
* @endcode
|
|
1406
2385
|
*/
|
|
1407
|
-
template <typename AsyncReadStream, typename
|
|
1408
|
-
|
|
1409
|
-
|
|
2386
|
+
template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
|
|
2387
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2388
|
+
std::size_t)) ReadHandler
|
|
2389
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2390
|
+
typename AsyncReadStream::executor_type)>
|
|
2391
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1410
2392
|
void (boost::system::error_code, std::size_t))
|
|
1411
2393
|
async_read_until(AsyncReadStream& s,
|
|
1412
|
-
|
|
1413
|
-
MatchCondition match_condition,
|
|
2394
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
2395
|
+
MatchCondition match_condition,
|
|
2396
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2397
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2398
|
+
typename AsyncReadStream::executor_type),
|
|
1414
2399
|
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
1415
2400
|
|
|
1416
|
-
#
|
|
2401
|
+
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
2402
|
+
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
2403
|
+
#endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
|
1417
2404
|
|
|
1418
|
-
/// Start an asynchronous operation to read data into a
|
|
1419
|
-
/// contains a specified delimiter.
|
|
2405
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
2406
|
+
/// until it contains a specified delimiter.
|
|
1420
2407
|
/**
|
|
1421
|
-
* This function is used to asynchronously read data into the specified
|
|
1422
|
-
*
|
|
1423
|
-
* The function call always returns immediately. The
|
|
1424
|
-
* will continue until one of the following conditions
|
|
2408
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
2409
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
2410
|
+
* specified delimiter. The function call always returns immediately. The
|
|
2411
|
+
* asynchronous operation will continue until one of the following conditions
|
|
2412
|
+
* is true:
|
|
1425
2413
|
*
|
|
1426
|
-
* @li The get area of the
|
|
2414
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
2415
|
+
* delimiter.
|
|
1427
2416
|
*
|
|
1428
2417
|
* @li An error occurred.
|
|
1429
2418
|
*
|
|
1430
2419
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1431
2420
|
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1432
|
-
* the
|
|
1433
|
-
* operation completes immediately. The program must ensure that
|
|
1434
|
-
* performs no other read operations (such as async_read,
|
|
1435
|
-
* stream's async_read_some function, or any other
|
|
1436
|
-
* perform reads) until this operation completes.
|
|
2421
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
2422
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
2423
|
+
* the stream performs no other read operations (such as async_read,
|
|
2424
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
2425
|
+
* composed operations that perform reads) until this operation completes.
|
|
1437
2426
|
*
|
|
1438
2427
|
* @param s The stream from which the data is to be read. The type must support
|
|
1439
2428
|
* the AsyncReadStream concept.
|
|
1440
2429
|
*
|
|
1441
|
-
* @param
|
|
1442
|
-
* the
|
|
1443
|
-
*
|
|
2430
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
2431
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
2432
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
2433
|
+
* that they remain valid until the handler is called.
|
|
1444
2434
|
*
|
|
1445
2435
|
* @param delim The delimiter character.
|
|
1446
2436
|
*
|
|
@@ -1451,81 +2441,93 @@ async_read_until(AsyncReadStream& s,
|
|
|
1451
2441
|
* // Result of operation.
|
|
1452
2442
|
* const boost::system::error_code& error,
|
|
1453
2443
|
*
|
|
1454
|
-
* // The number of bytes in the
|
|
1455
|
-
* // area up to and including the delimiter.
|
|
2444
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
2445
|
+
* // get area up to and including the delimiter.
|
|
1456
2446
|
* // 0 if an error occurred.
|
|
1457
2447
|
* std::size_t bytes_transferred
|
|
1458
2448
|
* ); @endcode
|
|
1459
2449
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1460
|
-
* not, the handler will not be invoked from within this function.
|
|
1461
|
-
* the handler will be performed in a
|
|
1462
|
-
* boost::asio::
|
|
2450
|
+
* not, the handler will not be invoked from within this function. On
|
|
2451
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2452
|
+
* manner equivalent to using boost::asio::post().
|
|
1463
2453
|
*
|
|
1464
|
-
* @note After a successful async_read_until operation, the
|
|
1465
|
-
* contain additional data beyond the delimiter. An application
|
|
1466
|
-
* leave that data in the
|
|
1467
|
-
* to examine.
|
|
2454
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
2455
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
2456
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
2457
|
+
* subsequent async_read_until operation to examine.
|
|
1468
2458
|
*
|
|
1469
2459
|
* @par Example
|
|
1470
|
-
* To asynchronously read data into a
|
|
1471
|
-
*
|
|
2460
|
+
* To asynchronously read data into a @c std::string until a newline is
|
|
2461
|
+
* encountered:
|
|
2462
|
+
* @code std::string data;
|
|
1472
2463
|
* ...
|
|
1473
2464
|
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1474
2465
|
* {
|
|
1475
2466
|
* if (!e)
|
|
1476
2467
|
* {
|
|
1477
|
-
* std::
|
|
1478
|
-
*
|
|
1479
|
-
* std::getline(is, line);
|
|
2468
|
+
* std::string line = data.substr(0, n);
|
|
2469
|
+
* data.erase(0, n);
|
|
1480
2470
|
* ...
|
|
1481
2471
|
* }
|
|
1482
2472
|
* }
|
|
1483
2473
|
* ...
|
|
1484
|
-
* boost::asio::async_read_until(s,
|
|
2474
|
+
* boost::asio::async_read_until(s, data, '\n', handler); @endcode
|
|
1485
2475
|
* After the @c async_read_until operation completes successfully, the buffer
|
|
1486
|
-
* @c
|
|
2476
|
+
* @c data contains the delimiter:
|
|
1487
2477
|
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
1488
|
-
* The call to @c
|
|
1489
|
-
*
|
|
1490
|
-
* @code { 'a', 'b', ..., 'c' } @endcode
|
|
1491
|
-
*
|
|
2478
|
+
* The call to @c substr then extracts the data up to and including the
|
|
2479
|
+
* delimiter, so that the string @c line contains:
|
|
2480
|
+
* @code { 'a', 'b', ..., 'c', '\n' } @endcode
|
|
2481
|
+
* After the call to @c erase, the remaining data is left in the buffer @c data
|
|
2482
|
+
* as follows:
|
|
1492
2483
|
* @code { 'd', 'e', ... } @endcode
|
|
1493
2484
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1494
2485
|
* @c async_read_until operation.
|
|
1495
2486
|
*/
|
|
1496
|
-
template <typename AsyncReadStream, typename
|
|
1497
|
-
|
|
2487
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v2,
|
|
2488
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2489
|
+
std::size_t)) ReadHandler
|
|
2490
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2491
|
+
typename AsyncReadStream::executor_type)>
|
|
2492
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1498
2493
|
void (boost::system::error_code, std::size_t))
|
|
1499
|
-
async_read_until(AsyncReadStream& s,
|
|
1500
|
-
|
|
1501
|
-
|
|
2494
|
+
async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
|
|
2495
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2496
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2497
|
+
typename AsyncReadStream::executor_type),
|
|
2498
|
+
typename enable_if<
|
|
2499
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
2500
|
+
>::type* = 0);
|
|
1502
2501
|
|
|
1503
|
-
/// Start an asynchronous operation to read data into a
|
|
1504
|
-
/// contains a specified delimiter.
|
|
2502
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
2503
|
+
/// until it contains a specified delimiter.
|
|
1505
2504
|
/**
|
|
1506
|
-
* This function is used to asynchronously read data into the specified
|
|
1507
|
-
*
|
|
1508
|
-
* The function call always returns immediately. The
|
|
1509
|
-
* will continue until one of the following conditions
|
|
2505
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
2506
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
2507
|
+
* specified delimiter. The function call always returns immediately. The
|
|
2508
|
+
* asynchronous operation will continue until one of the following conditions
|
|
2509
|
+
* is true:
|
|
1510
2510
|
*
|
|
1511
|
-
* @li The get area of the
|
|
2511
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
2512
|
+
* delimiter.
|
|
1512
2513
|
*
|
|
1513
2514
|
* @li An error occurred.
|
|
1514
2515
|
*
|
|
1515
2516
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1516
2517
|
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1517
|
-
* the
|
|
1518
|
-
* operation completes immediately. The program must ensure that
|
|
1519
|
-
* performs no other read operations (such as async_read,
|
|
1520
|
-
* stream's async_read_some function, or any other
|
|
1521
|
-
* perform reads) until this operation completes.
|
|
2518
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
2519
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
2520
|
+
* the stream performs no other read operations (such as async_read,
|
|
2521
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
2522
|
+
* composed operations that perform reads) until this operation completes.
|
|
1522
2523
|
*
|
|
1523
2524
|
* @param s The stream from which the data is to be read. The type must support
|
|
1524
2525
|
* the AsyncReadStream concept.
|
|
1525
2526
|
*
|
|
1526
|
-
* @param
|
|
1527
|
-
* the
|
|
1528
|
-
*
|
|
2527
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
2528
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
2529
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
2530
|
+
* that they remain valid until the handler is called.
|
|
1529
2531
|
*
|
|
1530
2532
|
* @param delim The delimiter string.
|
|
1531
2533
|
*
|
|
@@ -1536,87 +2538,99 @@ async_read_until(AsyncReadStream& s,
|
|
|
1536
2538
|
* // Result of operation.
|
|
1537
2539
|
* const boost::system::error_code& error,
|
|
1538
2540
|
*
|
|
1539
|
-
* // The number of bytes in the
|
|
1540
|
-
* // area up to and including the delimiter.
|
|
2541
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
2542
|
+
* // get area up to and including the delimiter.
|
|
1541
2543
|
* // 0 if an error occurred.
|
|
1542
2544
|
* std::size_t bytes_transferred
|
|
1543
2545
|
* ); @endcode
|
|
1544
2546
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1545
|
-
* not, the handler will not be invoked from within this function.
|
|
1546
|
-
* the handler will be performed in a
|
|
1547
|
-
* boost::asio::
|
|
2547
|
+
* not, the handler will not be invoked from within this function. On
|
|
2548
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2549
|
+
* manner equivalent to using boost::asio::post().
|
|
1548
2550
|
*
|
|
1549
|
-
* @note After a successful async_read_until operation, the
|
|
1550
|
-
* contain additional data beyond the delimiter. An application
|
|
1551
|
-
* leave that data in the
|
|
1552
|
-
* to examine.
|
|
2551
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
2552
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
2553
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
2554
|
+
* subsequent async_read_until operation to examine.
|
|
1553
2555
|
*
|
|
1554
2556
|
* @par Example
|
|
1555
|
-
* To asynchronously read data into a
|
|
1556
|
-
*
|
|
2557
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
2558
|
+
* encountered:
|
|
2559
|
+
* @code std::string data;
|
|
1557
2560
|
* ...
|
|
1558
2561
|
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1559
2562
|
* {
|
|
1560
2563
|
* if (!e)
|
|
1561
2564
|
* {
|
|
1562
|
-
* std::
|
|
1563
|
-
*
|
|
1564
|
-
* std::getline(is, line);
|
|
2565
|
+
* std::string line = data.substr(0, n);
|
|
2566
|
+
* data.erase(0, n);
|
|
1565
2567
|
* ...
|
|
1566
2568
|
* }
|
|
1567
2569
|
* }
|
|
1568
2570
|
* ...
|
|
1569
|
-
* boost::asio::async_read_until(s,
|
|
1570
|
-
* After the @c async_read_until operation completes successfully, the
|
|
1571
|
-
* @c
|
|
2571
|
+
* boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
|
|
2572
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
2573
|
+
* @c data contains the delimiter:
|
|
1572
2574
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1573
|
-
* The call to @c
|
|
1574
|
-
*
|
|
1575
|
-
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
1576
|
-
*
|
|
2575
|
+
* The call to @c substr then extracts the data up to and including the
|
|
2576
|
+
* delimiter, so that the string @c line contains:
|
|
2577
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
2578
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
2579
|
+
* as follows:
|
|
1577
2580
|
* @code { 'd', 'e', ... } @endcode
|
|
1578
2581
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1579
2582
|
* @c async_read_until operation.
|
|
1580
2583
|
*/
|
|
1581
|
-
template <typename AsyncReadStream, typename
|
|
1582
|
-
|
|
2584
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v2,
|
|
2585
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2586
|
+
std::size_t)) ReadHandler
|
|
2587
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2588
|
+
typename AsyncReadStream::executor_type)>
|
|
2589
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1583
2590
|
void (boost::system::error_code, std::size_t))
|
|
1584
|
-
async_read_until(AsyncReadStream& s,
|
|
1585
|
-
boost::asio::basic_streambuf<Allocator>& b,
|
|
2591
|
+
async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
1586
2592
|
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
1587
|
-
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2593
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2594
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2595
|
+
typename AsyncReadStream::executor_type),
|
|
2596
|
+
typename enable_if<
|
|
2597
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
2598
|
+
>::type* = 0);
|
|
1588
2599
|
|
|
2600
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1589
2601
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
1590
2602
|
|| defined(GENERATING_DOCUMENTATION)
|
|
1591
2603
|
|
|
1592
|
-
/// Start an asynchronous operation to read data into a
|
|
1593
|
-
/// part of its data matches a regular expression.
|
|
2604
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
2605
|
+
/// until some part of its data matches a regular expression.
|
|
1594
2606
|
/**
|
|
1595
|
-
* This function is used to asynchronously read data into the specified
|
|
1596
|
-
*
|
|
1597
|
-
* regular expression. The function call always returns
|
|
1598
|
-
* asynchronous operation will continue until one of the
|
|
1599
|
-
* is true:
|
|
2607
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
2608
|
+
* buffer sequence until the dynamic buffer sequence's get area contains some
|
|
2609
|
+
* data that matches a regular expression. The function call always returns
|
|
2610
|
+
* immediately. The asynchronous operation will continue until one of the
|
|
2611
|
+
* following conditions is true:
|
|
1600
2612
|
*
|
|
1601
|
-
* @li A substring of the
|
|
2613
|
+
* @li A substring of the dynamic buffer sequence's get area matches the regular
|
|
2614
|
+
* expression.
|
|
1602
2615
|
*
|
|
1603
2616
|
* @li An error occurred.
|
|
1604
2617
|
*
|
|
1605
2618
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1606
2619
|
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1607
|
-
* the
|
|
1608
|
-
* expression, this asynchronous operation completes immediately.
|
|
1609
|
-
* must ensure that the stream performs no other read operations
|
|
1610
|
-
* async_read, async_read_until, the stream's async_read_some
|
|
1611
|
-
* other composed operations that perform reads) until this
|
|
1612
|
-
* completes.
|
|
2620
|
+
* the dynamic buffer sequence's get area already contains data that matches
|
|
2621
|
+
* the regular expression, this asynchronous operation completes immediately.
|
|
2622
|
+
* The program must ensure that the stream performs no other read operations
|
|
2623
|
+
* (such as async_read, async_read_until, the stream's async_read_some
|
|
2624
|
+
* function, or any other composed operations that perform reads) until this
|
|
2625
|
+
* operation completes.
|
|
1613
2626
|
*
|
|
1614
2627
|
* @param s The stream from which the data is to be read. The type must support
|
|
1615
2628
|
* the AsyncReadStream concept.
|
|
1616
2629
|
*
|
|
1617
|
-
* @param
|
|
1618
|
-
* the
|
|
1619
|
-
*
|
|
2630
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
2631
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
2632
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
2633
|
+
* that they remain valid until the handler is called.
|
|
1620
2634
|
*
|
|
1621
2635
|
* @param expr The regular expression.
|
|
1622
2636
|
*
|
|
@@ -1627,68 +2641,79 @@ async_read_until(AsyncReadStream& s,
|
|
|
1627
2641
|
* // Result of operation.
|
|
1628
2642
|
* const boost::system::error_code& error,
|
|
1629
2643
|
*
|
|
1630
|
-
* // The number of bytes in the
|
|
1631
|
-
* // area up to and including the
|
|
1632
|
-
* // that matches the regular
|
|
2644
|
+
* // The number of bytes in the dynamic buffer
|
|
2645
|
+
* // sequence's get area up to and including the
|
|
2646
|
+
* // substring that matches the regular expression.
|
|
1633
2647
|
* // 0 if an error occurred.
|
|
1634
2648
|
* std::size_t bytes_transferred
|
|
1635
2649
|
* ); @endcode
|
|
1636
2650
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1637
|
-
* not, the handler will not be invoked from within this function.
|
|
1638
|
-
* the handler will be performed in a
|
|
1639
|
-
* boost::asio::
|
|
2651
|
+
* not, the handler will not be invoked from within this function. On
|
|
2652
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2653
|
+
* manner equivalent to using boost::asio::post().
|
|
1640
2654
|
*
|
|
1641
|
-
* @note After a successful async_read_until operation, the
|
|
1642
|
-
* contain additional data beyond that which matched the regular
|
|
1643
|
-
* application will typically leave that data in the
|
|
1644
|
-
* async_read_until operation to examine.
|
|
2655
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
2656
|
+
* sequence may contain additional data beyond that which matched the regular
|
|
2657
|
+
* expression. An application will typically leave that data in the dynamic
|
|
2658
|
+
* buffer sequence for a subsequent async_read_until operation to examine.
|
|
1645
2659
|
*
|
|
1646
2660
|
* @par Example
|
|
1647
|
-
* To asynchronously read data into a
|
|
2661
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
1648
2662
|
* encountered:
|
|
1649
|
-
* @code
|
|
2663
|
+
* @code std::string data;
|
|
1650
2664
|
* ...
|
|
1651
2665
|
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1652
2666
|
* {
|
|
1653
2667
|
* if (!e)
|
|
1654
2668
|
* {
|
|
1655
|
-
* std::
|
|
1656
|
-
*
|
|
1657
|
-
* std::getline(is, line);
|
|
2669
|
+
* std::string line = data.substr(0, n);
|
|
2670
|
+
* data.erase(0, n);
|
|
1658
2671
|
* ...
|
|
1659
2672
|
* }
|
|
1660
2673
|
* }
|
|
1661
2674
|
* ...
|
|
1662
|
-
* boost::asio::async_read_until(s,
|
|
1663
|
-
*
|
|
1664
|
-
* @c
|
|
2675
|
+
* boost::asio::async_read_until(s, data,
|
|
2676
|
+
* boost::regex("\r\n"), handler); @endcode
|
|
2677
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
2678
|
+
* @c data contains the data which matched the regular expression:
|
|
1665
2679
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1666
|
-
* The call to @c
|
|
1667
|
-
*
|
|
1668
|
-
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
1669
|
-
*
|
|
2680
|
+
* The call to @c substr then extracts the data up to and including the match,
|
|
2681
|
+
* so that the string @c line contains:
|
|
2682
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
2683
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
2684
|
+
* as follows:
|
|
1670
2685
|
* @code { 'd', 'e', ... } @endcode
|
|
1671
2686
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1672
2687
|
* @c async_read_until operation.
|
|
1673
2688
|
*/
|
|
1674
|
-
template <typename AsyncReadStream, typename
|
|
1675
|
-
|
|
2689
|
+
template <typename AsyncReadStream, typename DynamicBuffer_v2,
|
|
2690
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2691
|
+
std::size_t)) ReadHandler
|
|
2692
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2693
|
+
typename AsyncReadStream::executor_type)>
|
|
2694
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1676
2695
|
void (boost::system::error_code, std::size_t))
|
|
1677
|
-
async_read_until(AsyncReadStream& s,
|
|
1678
|
-
|
|
1679
|
-
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2696
|
+
async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
2697
|
+
const boost::regex& expr,
|
|
2698
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2699
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2700
|
+
typename AsyncReadStream::executor_type),
|
|
2701
|
+
typename enable_if<
|
|
2702
|
+
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
2703
|
+
>::type* = 0);
|
|
1680
2704
|
|
|
1681
2705
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
1682
2706
|
// || defined(GENERATING_DOCUMENTATION)
|
|
1683
2707
|
|
|
1684
|
-
/// Start an asynchronous operation to read data into a
|
|
1685
|
-
/// function object indicates a match.
|
|
2708
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
2709
|
+
/// until a function object indicates a match.
|
|
1686
2710
|
/**
|
|
1687
|
-
* This function is used to asynchronously read data into the specified
|
|
1688
|
-
*
|
|
1689
|
-
* to the data contained in the
|
|
1690
|
-
* function call always returns immediately. The
|
|
1691
|
-
* continue until one of the following conditions
|
|
2711
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
2712
|
+
* buffer sequence until a user-defined match condition function object, when
|
|
2713
|
+
* applied to the data contained in the dynamic buffer sequence, indicates a
|
|
2714
|
+
* successful match. The function call always returns immediately. The
|
|
2715
|
+
* asynchronous operation will continue until one of the following conditions
|
|
2716
|
+
* is true:
|
|
1692
2717
|
*
|
|
1693
2718
|
* @li The match condition function object returns a std::pair where the second
|
|
1694
2719
|
* element evaluates to true.
|
|
@@ -1706,14 +2731,17 @@ async_read_until(AsyncReadStream& s,
|
|
|
1706
2731
|
* @param s The stream from which the data is to be read. The type must support
|
|
1707
2732
|
* the AsyncReadStream concept.
|
|
1708
2733
|
*
|
|
1709
|
-
* @param
|
|
2734
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
2735
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
2736
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
2737
|
+
* that they remain valid until the handler is called.
|
|
1710
2738
|
*
|
|
1711
2739
|
* @param match_condition The function object to be called to determine whether
|
|
1712
2740
|
* a match exists. The signature of the function object must be:
|
|
1713
2741
|
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
1714
2742
|
* @endcode
|
|
1715
2743
|
* where @c iterator represents the type:
|
|
1716
|
-
* @code buffers_iterator<
|
|
2744
|
+
* @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
|
|
1717
2745
|
* @endcode
|
|
1718
2746
|
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
1719
2747
|
* scanned to determine whether there is a match. The @c first member of the
|
|
@@ -1730,20 +2758,20 @@ async_read_until(AsyncReadStream& s,
|
|
|
1730
2758
|
* // Result of operation.
|
|
1731
2759
|
* const boost::system::error_code& error,
|
|
1732
2760
|
*
|
|
1733
|
-
* // The number of bytes in the
|
|
1734
|
-
* // area that have been fully consumed by the
|
|
1735
|
-
* //
|
|
2761
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
2762
|
+
* // get area that have been fully consumed by the match
|
|
2763
|
+
* // function. O if an error occurred.
|
|
1736
2764
|
* std::size_t bytes_transferred
|
|
1737
2765
|
* ); @endcode
|
|
1738
2766
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
1739
|
-
* not, the handler will not be invoked from within this function.
|
|
1740
|
-
* the handler will be performed in a
|
|
1741
|
-
* boost::asio::
|
|
2767
|
+
* not, the handler will not be invoked from within this function. On
|
|
2768
|
+
* immediate completion, invocation of the handler will be performed in a
|
|
2769
|
+
* manner equivalent to using boost::asio::post().
|
|
1742
2770
|
*
|
|
1743
|
-
* @note After a successful async_read_until operation, the
|
|
1744
|
-
* contain additional data beyond that which matched the function
|
|
1745
|
-
* application will typically leave that data in the
|
|
1746
|
-
* async_read_until operation to examine.
|
|
2771
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
2772
|
+
* sequence may contain additional data beyond that which matched the function
|
|
2773
|
+
* object. An application will typically leave that data in the dynamic buffer
|
|
2774
|
+
* sequence for a subsequent async_read_until operation to examine.
|
|
1747
2775
|
*
|
|
1748
2776
|
* @note The default implementation of the @c is_match_condition type trait
|
|
1749
2777
|
* evaluates to true for function pointers and function objects with a
|
|
@@ -1751,9 +2779,10 @@ async_read_until(AsyncReadStream& s,
|
|
|
1751
2779
|
* function objects.
|
|
1752
2780
|
*
|
|
1753
2781
|
* @par Examples
|
|
1754
|
-
* To asynchronously read data into a
|
|
2782
|
+
* To asynchronously read data into a @c std::string until whitespace is
|
|
2783
|
+
* encountered:
|
|
1755
2784
|
* @code typedef boost::asio::buffers_iterator<
|
|
1756
|
-
* boost::asio::
|
|
2785
|
+
* boost::asio::const_buffers_1> iterator;
|
|
1757
2786
|
*
|
|
1758
2787
|
* std::pair<iterator, bool>
|
|
1759
2788
|
* match_whitespace(iterator begin, iterator end)
|
|
@@ -1767,12 +2796,12 @@ async_read_until(AsyncReadStream& s,
|
|
|
1767
2796
|
* ...
|
|
1768
2797
|
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1769
2798
|
* ...
|
|
1770
|
-
*
|
|
1771
|
-
* boost::asio::async_read_until(s,
|
|
2799
|
+
* std::string data;
|
|
2800
|
+
* boost::asio::async_read_until(s, data, match_whitespace, handler);
|
|
1772
2801
|
* @endcode
|
|
1773
2802
|
*
|
|
1774
|
-
* To asynchronously read data into a
|
|
1775
|
-
* found:
|
|
2803
|
+
* To asynchronously read data into a @c std::string until a matching character
|
|
2804
|
+
* is found:
|
|
1776
2805
|
* @code class match_char
|
|
1777
2806
|
* {
|
|
1778
2807
|
* public:
|
|
@@ -1800,20 +2829,28 @@ async_read_until(AsyncReadStream& s,
|
|
|
1800
2829
|
* ...
|
|
1801
2830
|
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1802
2831
|
* ...
|
|
1803
|
-
*
|
|
1804
|
-
* boost::asio::async_read_until(s,
|
|
2832
|
+
* std::string data;
|
|
2833
|
+
* boost::asio::async_read_until(s, data, match_char('a'), handler);
|
|
1805
2834
|
* @endcode
|
|
1806
2835
|
*/
|
|
1807
|
-
template <typename AsyncReadStream,
|
|
1808
|
-
typename
|
|
1809
|
-
|
|
2836
|
+
template <typename AsyncReadStream,
|
|
2837
|
+
typename DynamicBuffer_v2, typename MatchCondition,
|
|
2838
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
|
2839
|
+
std::size_t)) ReadHandler
|
|
2840
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
|
|
2841
|
+
typename AsyncReadStream::executor_type)>
|
|
2842
|
+
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
|
|
1810
2843
|
void (boost::system::error_code, std::size_t))
|
|
1811
|
-
async_read_until(AsyncReadStream& s,
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
2844
|
+
async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
|
|
2845
|
+
MatchCondition match_condition,
|
|
2846
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
|
|
2847
|
+
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
|
|
2848
|
+
typename AsyncReadStream::executor_type),
|
|
2849
|
+
typename enable_if<
|
|
2850
|
+
is_match_condition<MatchCondition>::value
|
|
2851
|
+
&& is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
|
2852
|
+
>::type* = 0);
|
|
1815
2853
|
|
|
1816
|
-
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
1817
2854
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1818
2855
|
|
|
1819
2856
|
/*@}*/
|