passenger 5.3.3 → 5.3.4
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 +8 -0
- data/build/support/cxx_dependency_map.rb +151 -83
- data/dev/configkit-schemas/index.json +3 -3
- data/src/agent/Core/AdminPanelConnector.h +5 -3
- data/src/agent/Core/ApplicationPool/Common.h +1 -2
- data/src/agent/Core/ApplicationPool/Context.h +1 -2
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller.h +2 -1
- data/src/agent/Core/Controller/Config.h +6 -5
- data/src/agent/Core/Controller/Hooks.cpp +11 -0
- data/src/agent/Core/Controller/SendRequest.cpp +7 -7
- data/src/agent/Core/CoreMain.cpp +0 -2
- data/src/agent/Core/SpawningKit/Context.h +1 -3
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
- data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
- data/src/agent/Shared/ApiServerUtils.h +2 -2
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
- data/src/apache2_module/Config.cpp +7 -6
- data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Exceptions.h +0 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
- data/src/cxx_supportlib/ResourceLocator.h +3 -21
- data/src/cxx_supportlib/SafeLibev.h +6 -6
- data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
- data/src/cxx_supportlib/ServerKit/Server.h +2 -2
- data/src/cxx_supportlib/SystemTools/README.md +1 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
- data/src/cxx_supportlib/Utils.cpp +1 -113
- data/src/cxx_supportlib/Utils.h +1 -29
- data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
- data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
- 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 +26 -6
- 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 +27 -14
- 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 +61 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
- 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 +212 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
- 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 +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -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 +65 -14
- 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 +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
- 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/{function.hpp → functional.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
- 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 +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -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 +11 -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 +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
- 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 +12 -5
- 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 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
- 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 +36 -14
- 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 +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
- 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 +17 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
- 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 +10 -9
- 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 +29 -19
- 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 +7 -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 +26 -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 +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
- 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 +82 -0
- 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 +5 -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 +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
- 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 +106 -0
- 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 +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
- 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 +9 -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 +37 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
- 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 +9 -5
- 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 +14 -13
- 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 +9 -6
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
- 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 +1 -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 +72 -0
- 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 +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
- 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 +29 -2
- 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 +11 -5
- 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 +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
- 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 +29 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
- 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 +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
- 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 +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
- 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 +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
- 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 +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
- 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 +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
- 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 +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
- 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 +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
- 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 +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
- 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_executor.hpp +48 -0
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
- 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 +27 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
- 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 +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
- data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +36 -92
- data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
- 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 +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
- metadata +201 -47
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
- data/src/cxx_supportlib/MessageClient.h +0 -309
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// read_until.hpp
|
|
3
3
|
// ~~~~~~~~~~~~~~
|
|
4
4
|
//
|
|
5
|
-
// Copyright (c) 2003-
|
|
5
|
+
// Copyright (c) 2003-2018 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)
|
|
@@ -16,17 +16,18 @@
|
|
|
16
16
|
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
|
17
17
|
|
|
18
18
|
#include <boost/asio/detail/config.hpp>
|
|
19
|
-
|
|
20
|
-
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
21
|
-
|
|
22
19
|
#include <cstddef>
|
|
23
20
|
#include <string>
|
|
24
21
|
#include <boost/asio/async_result.hpp>
|
|
25
|
-
#include <boost/asio/basic_streambuf.hpp>
|
|
26
22
|
#include <boost/asio/detail/regex_fwd.hpp>
|
|
23
|
+
#include <boost/asio/detail/string_view.hpp>
|
|
27
24
|
#include <boost/asio/detail/type_traits.hpp>
|
|
28
25
|
#include <boost/asio/error.hpp>
|
|
29
26
|
|
|
27
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
28
|
+
# include <boost/asio/basic_streambuf_fwd.hpp>
|
|
29
|
+
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
30
|
+
|
|
30
31
|
#include <boost/asio/detail/push_options.hpp>
|
|
31
32
|
|
|
32
33
|
namespace boost {
|
|
@@ -67,289 +68,1221 @@ struct is_match_condition
|
|
|
67
68
|
/**
|
|
68
69
|
* @defgroup read_until boost::asio::read_until
|
|
69
70
|
*
|
|
70
|
-
* @brief Read data into a
|
|
71
|
-
* regular expression, or a function object
|
|
71
|
+
* @brief Read data into a dynamic buffer sequence, or into a streambuf, until
|
|
72
|
+
* it contains a delimiter, matches a regular expression, or a function object
|
|
73
|
+
* indicates a match.
|
|
72
74
|
*/
|
|
73
75
|
/*@{*/
|
|
74
76
|
|
|
75
|
-
/// Read data into a
|
|
77
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
78
|
+
/// delimiter.
|
|
76
79
|
/**
|
|
77
|
-
* This function is used to read data into the specified
|
|
78
|
-
*
|
|
79
|
-
* until one of the following conditions is
|
|
80
|
+
* This function is used to read data into the specified dynamic buffer
|
|
81
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
82
|
+
* delimiter. The call will block until one of the following conditions is
|
|
83
|
+
* true:
|
|
80
84
|
*
|
|
81
|
-
* @li The get area of the
|
|
85
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
86
|
+
* delimiter.
|
|
82
87
|
*
|
|
83
88
|
* @li An error occurred.
|
|
84
89
|
*
|
|
85
90
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
86
|
-
* read_some function. If the
|
|
87
|
-
* delimiter, the function returns immediately.
|
|
91
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
92
|
+
* contains the delimiter, the function returns immediately.
|
|
88
93
|
*
|
|
89
94
|
* @param s The stream from which the data is to be read. The type must support
|
|
90
95
|
* the SyncReadStream concept.
|
|
91
96
|
*
|
|
92
|
-
* @param
|
|
97
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
93
98
|
*
|
|
94
99
|
* @param delim The delimiter character.
|
|
95
100
|
*
|
|
96
|
-
* @returns The number of bytes in the
|
|
97
|
-
* the delimiter.
|
|
101
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
102
|
+
* and including the delimiter.
|
|
98
103
|
*
|
|
99
104
|
* @throws boost::system::system_error Thrown on failure.
|
|
100
105
|
*
|
|
101
|
-
* @note After a successful read_until operation, the
|
|
102
|
-
* additional data beyond the delimiter. An application will
|
|
103
|
-
* that data in the
|
|
106
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
107
|
+
* may contain additional data beyond the delimiter. An application will
|
|
108
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
109
|
+
* read_until operation to examine.
|
|
104
110
|
*
|
|
105
111
|
* @par Example
|
|
106
|
-
* To read data into a
|
|
107
|
-
* @code
|
|
108
|
-
* boost::asio::read_until(s,
|
|
109
|
-
*
|
|
110
|
-
* std::string line;
|
|
111
|
-
*
|
|
112
|
-
* After the @c read_until operation completes successfully, the
|
|
112
|
+
* To read data into a @c std::string until a newline is encountered:
|
|
113
|
+
* @code std::string data;
|
|
114
|
+
* std::string n = boost::asio::read_until(s,
|
|
115
|
+
* boost::asio::dynamic_buffer(data), '\n');
|
|
116
|
+
* std::string line = data.substr(0, n);
|
|
117
|
+
* data.erase(0, n); @endcode
|
|
118
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
113
119
|
* contains the delimiter:
|
|
114
120
|
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
115
|
-
* The call to @c
|
|
121
|
+
* The call to @c substr then extracts the data up to and including the
|
|
116
122
|
* delimiter, so that the string @c line contains:
|
|
117
123
|
* @code { 'a', 'b', ..., 'c', '\n' } @endcode
|
|
118
|
-
*
|
|
124
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
125
|
+
* follows:
|
|
119
126
|
* @code { 'd', 'e', ... } @endcode
|
|
120
127
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
121
128
|
* @c read_until operation.
|
|
122
129
|
*/
|
|
123
|
-
template <typename SyncReadStream, typename
|
|
130
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
124
131
|
std::size_t read_until(SyncReadStream& s,
|
|
125
|
-
|
|
132
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers, char delim);
|
|
126
133
|
|
|
127
|
-
/// Read data into a
|
|
134
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
135
|
+
/// delimiter.
|
|
128
136
|
/**
|
|
129
|
-
* This function is used to read data into the specified
|
|
130
|
-
*
|
|
131
|
-
* until one of the following conditions is
|
|
137
|
+
* This function is used to read data into the specified dynamic buffer
|
|
138
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
139
|
+
* delimiter. The call will block until one of the following conditions is
|
|
140
|
+
* true:
|
|
132
141
|
*
|
|
133
|
-
* @li The get area of the
|
|
142
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
143
|
+
* delimiter.
|
|
134
144
|
*
|
|
135
145
|
* @li An error occurred.
|
|
136
146
|
*
|
|
137
147
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
138
|
-
* read_some function. If the
|
|
139
|
-
* delimiter, the function returns immediately.
|
|
148
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
149
|
+
* contains the delimiter, the function returns immediately.
|
|
140
150
|
*
|
|
141
151
|
* @param s The stream from which the data is to be read. The type must support
|
|
142
152
|
* the SyncReadStream concept.
|
|
143
153
|
*
|
|
144
|
-
* @param
|
|
154
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
145
155
|
*
|
|
146
156
|
* @param delim The delimiter character.
|
|
147
157
|
*
|
|
148
158
|
* @param ec Set to indicate what error occurred, if any.
|
|
149
159
|
*
|
|
150
|
-
* @returns The number of bytes in the
|
|
151
|
-
* the delimiter. Returns 0 if an error occurred.
|
|
160
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
161
|
+
* and including the delimiter. Returns 0 if an error occurred.
|
|
152
162
|
*
|
|
153
|
-
* @note After a successful read_until operation, the
|
|
154
|
-
* additional data beyond the delimiter. An application will
|
|
155
|
-
* that data in the
|
|
163
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
164
|
+
* may contain additional data beyond the delimiter. An application will
|
|
165
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
166
|
+
* read_until operation to examine.
|
|
156
167
|
*/
|
|
157
|
-
template <typename SyncReadStream, typename
|
|
168
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
158
169
|
std::size_t read_until(SyncReadStream& s,
|
|
159
|
-
|
|
160
|
-
boost::system::error_code& ec);
|
|
170
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
171
|
+
char delim, boost::system::error_code& ec);
|
|
161
172
|
|
|
162
|
-
/// Read data into a
|
|
173
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
174
|
+
/// delimiter.
|
|
163
175
|
/**
|
|
164
|
-
* This function is used to read data into the specified
|
|
165
|
-
*
|
|
166
|
-
* until one of the following conditions is
|
|
176
|
+
* This function is used to read data into the specified dynamic buffer
|
|
177
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
178
|
+
* delimiter. The call will block until one of the following conditions is
|
|
179
|
+
* true:
|
|
167
180
|
*
|
|
168
|
-
* @li The get area of the
|
|
181
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
182
|
+
* delimiter.
|
|
169
183
|
*
|
|
170
184
|
* @li An error occurred.
|
|
171
185
|
*
|
|
172
186
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
173
|
-
* read_some function. If the
|
|
174
|
-
* delimiter, the function returns immediately.
|
|
187
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
188
|
+
* contains the delimiter, the function returns immediately.
|
|
175
189
|
*
|
|
176
190
|
* @param s The stream from which the data is to be read. The type must support
|
|
177
191
|
* the SyncReadStream concept.
|
|
178
192
|
*
|
|
179
|
-
* @param
|
|
193
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
180
194
|
*
|
|
181
195
|
* @param delim The delimiter string.
|
|
182
196
|
*
|
|
183
|
-
* @returns The number of bytes in the
|
|
184
|
-
* the delimiter.
|
|
185
|
-
*
|
|
186
|
-
* @throws boost::system::system_error Thrown on failure.
|
|
197
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
198
|
+
* and including the delimiter.
|
|
187
199
|
*
|
|
188
|
-
* @note After a successful read_until operation, the
|
|
189
|
-
* additional data beyond the delimiter. An application will
|
|
190
|
-
* that data in the
|
|
200
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
201
|
+
* may contain additional data beyond the delimiter. An application will
|
|
202
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
203
|
+
* read_until operation to examine.
|
|
191
204
|
*
|
|
192
205
|
* @par Example
|
|
193
|
-
* To read data into a
|
|
194
|
-
* @code
|
|
195
|
-
* boost::asio::read_until(s,
|
|
196
|
-
*
|
|
197
|
-
* std::string line;
|
|
198
|
-
*
|
|
199
|
-
* After the @c read_until operation completes successfully, the
|
|
206
|
+
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
207
|
+
* @code std::string data;
|
|
208
|
+
* std::string n = boost::asio::read_until(s,
|
|
209
|
+
* boost::asio::dynamic_buffer(data), "\r\n");
|
|
210
|
+
* std::string line = data.substr(0, n);
|
|
211
|
+
* data.erase(0, n); @endcode
|
|
212
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
200
213
|
* contains the delimiter:
|
|
201
214
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
202
|
-
* The call to @c
|
|
215
|
+
* The call to @c substr then extracts the data up to and including the
|
|
203
216
|
* delimiter, so that the string @c line contains:
|
|
204
217
|
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
205
|
-
*
|
|
218
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
219
|
+
* follows:
|
|
206
220
|
* @code { 'd', 'e', ... } @endcode
|
|
207
221
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
208
222
|
* @c read_until operation.
|
|
209
223
|
*/
|
|
210
|
-
template <typename SyncReadStream, typename
|
|
224
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
211
225
|
std::size_t read_until(SyncReadStream& s,
|
|
212
|
-
|
|
226
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
227
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim);
|
|
213
228
|
|
|
214
|
-
/// Read data into a
|
|
229
|
+
/// Read data into a dynamic buffer sequence until it contains a specified
|
|
230
|
+
/// delimiter.
|
|
215
231
|
/**
|
|
216
|
-
* This function is used to read data into the specified
|
|
217
|
-
*
|
|
218
|
-
* until one of the following conditions is
|
|
232
|
+
* This function is used to read data into the specified dynamic buffer
|
|
233
|
+
* sequence until the dynamic buffer sequence's get area contains the specified
|
|
234
|
+
* delimiter. The call will block until one of the following conditions is
|
|
235
|
+
* true:
|
|
219
236
|
*
|
|
220
|
-
* @li The get area of the
|
|
237
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
238
|
+
* delimiter.
|
|
221
239
|
*
|
|
222
240
|
* @li An error occurred.
|
|
223
241
|
*
|
|
224
242
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
225
|
-
* read_some function. If the
|
|
226
|
-
* delimiter, the function returns immediately.
|
|
243
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
244
|
+
* contains the delimiter, the function returns immediately.
|
|
227
245
|
*
|
|
228
246
|
* @param s The stream from which the data is to be read. The type must support
|
|
229
247
|
* the SyncReadStream concept.
|
|
230
248
|
*
|
|
231
|
-
* @param
|
|
249
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
232
250
|
*
|
|
233
251
|
* @param delim The delimiter string.
|
|
234
252
|
*
|
|
235
253
|
* @param ec Set to indicate what error occurred, if any.
|
|
236
254
|
*
|
|
237
|
-
* @returns The number of bytes in the
|
|
238
|
-
* the delimiter. Returns 0 if an error occurred.
|
|
255
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
256
|
+
* and including the delimiter. Returns 0 if an error occurred.
|
|
239
257
|
*
|
|
240
|
-
* @note After a successful read_until operation, the
|
|
241
|
-
* additional data beyond the delimiter. An application will
|
|
242
|
-
* that data in the
|
|
258
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
259
|
+
* may contain additional data beyond the delimiter. An application will
|
|
260
|
+
* typically leave that data in the dynamic buffer sequence for a subsequent
|
|
261
|
+
* read_until operation to examine.
|
|
243
262
|
*/
|
|
244
|
-
template <typename SyncReadStream, typename
|
|
263
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
245
264
|
std::size_t read_until(SyncReadStream& s,
|
|
246
|
-
|
|
265
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
266
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
247
267
|
boost::system::error_code& ec);
|
|
248
268
|
|
|
269
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
249
270
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
250
271
|
|| defined(GENERATING_DOCUMENTATION)
|
|
251
272
|
|
|
252
|
-
/// Read data into a
|
|
253
|
-
/// a regular expression.
|
|
273
|
+
/// Read data into a dynamic buffer sequence until some part of the data it
|
|
274
|
+
/// contains matches a regular expression.
|
|
275
|
+
/**
|
|
276
|
+
* This function is used to read data into the specified dynamic buffer
|
|
277
|
+
* sequence until the dynamic buffer sequence's get area contains some data
|
|
278
|
+
* that matches a regular expression. The call will block until one of the
|
|
279
|
+
* following conditions is true:
|
|
280
|
+
*
|
|
281
|
+
* @li A substring of the dynamic buffer sequence's get area matches the
|
|
282
|
+
* regular expression.
|
|
283
|
+
*
|
|
284
|
+
* @li An error occurred.
|
|
285
|
+
*
|
|
286
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
287
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
288
|
+
* contains data that matches the regular expression, the function returns
|
|
289
|
+
* immediately.
|
|
290
|
+
*
|
|
291
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
292
|
+
* the SyncReadStream concept.
|
|
293
|
+
*
|
|
294
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
295
|
+
*
|
|
296
|
+
* @param expr The regular expression.
|
|
297
|
+
*
|
|
298
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
299
|
+
* and including the substring that matches the regular expression.
|
|
300
|
+
*
|
|
301
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
302
|
+
*
|
|
303
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
304
|
+
* may contain additional data beyond that which matched the regular
|
|
305
|
+
* expression. An application will typically leave that data in the dynamic
|
|
306
|
+
* buffer sequence for a subsequent read_until operation to examine.
|
|
307
|
+
*
|
|
308
|
+
* @par Example
|
|
309
|
+
* To read data into a @c std::string until a CR-LF sequence is encountered:
|
|
310
|
+
* @code std::string data;
|
|
311
|
+
* std::string n = boost::asio::read_until(s,
|
|
312
|
+
* boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
|
|
313
|
+
* std::string line = data.substr(0, n);
|
|
314
|
+
* data.erase(0, n); @endcode
|
|
315
|
+
* After the @c read_until operation completes successfully, the string @c data
|
|
316
|
+
* contains the delimiter:
|
|
317
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
318
|
+
* The call to @c substr then extracts the data up to and including the
|
|
319
|
+
* delimiter, so that the string @c line contains:
|
|
320
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
321
|
+
* After the call to @c erase, the remaining data is left in the buffer @c b as
|
|
322
|
+
* follows:
|
|
323
|
+
* @code { 'd', 'e', ... } @endcode
|
|
324
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
325
|
+
* @c read_until operation.
|
|
326
|
+
*/
|
|
327
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
328
|
+
std::size_t read_until(SyncReadStream& s,
|
|
329
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
330
|
+
const boost::regex& expr);
|
|
331
|
+
|
|
332
|
+
/// Read data into a dynamic buffer sequence until some part of the data it
|
|
333
|
+
/// contains matches a regular expression.
|
|
334
|
+
/**
|
|
335
|
+
* This function is used to read data into the specified dynamic buffer
|
|
336
|
+
* sequence until the dynamic buffer sequence's get area contains some data
|
|
337
|
+
* that matches a regular expression. The call will block until one of the
|
|
338
|
+
* following conditions is true:
|
|
339
|
+
*
|
|
340
|
+
* @li A substring of the dynamic buffer sequence's get area matches the
|
|
341
|
+
* regular expression.
|
|
342
|
+
*
|
|
343
|
+
* @li An error occurred.
|
|
344
|
+
*
|
|
345
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
346
|
+
* read_some function. If the dynamic buffer sequence's get area already
|
|
347
|
+
* contains data that matches the regular expression, the function returns
|
|
348
|
+
* immediately.
|
|
349
|
+
*
|
|
350
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
351
|
+
* the SyncReadStream concept.
|
|
352
|
+
*
|
|
353
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
354
|
+
*
|
|
355
|
+
* @param expr The regular expression.
|
|
356
|
+
*
|
|
357
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
358
|
+
*
|
|
359
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area up to
|
|
360
|
+
* and including the substring that matches the regular expression. Returns 0
|
|
361
|
+
* if an error occurred.
|
|
362
|
+
*
|
|
363
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
364
|
+
* may contain additional data beyond that which matched the regular
|
|
365
|
+
* expression. An application will typically leave that data in the dynamic
|
|
366
|
+
* buffer sequence for a subsequent read_until operation to examine.
|
|
367
|
+
*/
|
|
368
|
+
template <typename SyncReadStream, typename DynamicBuffer>
|
|
369
|
+
std::size_t read_until(SyncReadStream& s,
|
|
370
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
371
|
+
const boost::regex& expr, boost::system::error_code& ec);
|
|
372
|
+
|
|
373
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
374
|
+
// || defined(GENERATING_DOCUMENTATION)
|
|
375
|
+
|
|
376
|
+
/// Read data into a dynamic buffer sequence until a function object indicates a
|
|
377
|
+
/// match.
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* This function is used to read data into the specified dynamic buffer
|
|
381
|
+
* sequence until a user-defined match condition function object, when applied
|
|
382
|
+
* to the data contained in the dynamic buffer sequence, indicates a successful
|
|
383
|
+
* match. The call will block until one of the following conditions is true:
|
|
384
|
+
*
|
|
385
|
+
* @li The match condition function object returns a std::pair where the second
|
|
386
|
+
* element evaluates to true.
|
|
387
|
+
*
|
|
388
|
+
* @li An error occurred.
|
|
389
|
+
*
|
|
390
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
391
|
+
* read_some function. If the match condition function object already indicates
|
|
392
|
+
* a match, the function returns immediately.
|
|
393
|
+
*
|
|
394
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
395
|
+
* the SyncReadStream concept.
|
|
396
|
+
*
|
|
397
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
398
|
+
*
|
|
399
|
+
* @param match_condition The function object to be called to determine whether
|
|
400
|
+
* a match exists. The signature of the function object must be:
|
|
401
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
402
|
+
* @endcode
|
|
403
|
+
* where @c iterator represents the type:
|
|
404
|
+
* @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
|
|
405
|
+
* @endcode
|
|
406
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
407
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
408
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
409
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
410
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
411
|
+
* @c second member of the return value is true if a match has been found, false
|
|
412
|
+
* otherwise.
|
|
413
|
+
*
|
|
414
|
+
* @returns The number of bytes in the dynamic_buffer's get area that
|
|
415
|
+
* have been fully consumed by the match function.
|
|
416
|
+
*
|
|
417
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
418
|
+
*
|
|
419
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
420
|
+
* may contain additional data beyond that which matched the function object.
|
|
421
|
+
* An application will typically leave that data in the dynamic buffer sequence
|
|
422
|
+
* for a subsequent read_until operation to examine.
|
|
423
|
+
|
|
424
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
425
|
+
* evaluates to true for function pointers and function objects with a
|
|
426
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
427
|
+
* function objects.
|
|
428
|
+
*
|
|
429
|
+
* @par Examples
|
|
430
|
+
* To read data into a dynamic buffer sequence until whitespace is encountered:
|
|
431
|
+
* @code typedef boost::asio::buffers_iterator<
|
|
432
|
+
* boost::asio::const_buffers_1> iterator;
|
|
433
|
+
*
|
|
434
|
+
* std::pair<iterator, bool>
|
|
435
|
+
* match_whitespace(iterator begin, iterator end)
|
|
436
|
+
* {
|
|
437
|
+
* iterator i = begin;
|
|
438
|
+
* while (i != end)
|
|
439
|
+
* if (std::isspace(*i++))
|
|
440
|
+
* return std::make_pair(i, true);
|
|
441
|
+
* return std::make_pair(i, false);
|
|
442
|
+
* }
|
|
443
|
+
* ...
|
|
444
|
+
* std::string data;
|
|
445
|
+
* boost::asio::read_until(s, data, match_whitespace);
|
|
446
|
+
* @endcode
|
|
447
|
+
*
|
|
448
|
+
* To read data into a @c std::string until a matching character is found:
|
|
449
|
+
* @code class match_char
|
|
450
|
+
* {
|
|
451
|
+
* public:
|
|
452
|
+
* explicit match_char(char c) : c_(c) {}
|
|
453
|
+
*
|
|
454
|
+
* template <typename Iterator>
|
|
455
|
+
* std::pair<Iterator, bool> operator()(
|
|
456
|
+
* Iterator begin, Iterator end) const
|
|
457
|
+
* {
|
|
458
|
+
* Iterator i = begin;
|
|
459
|
+
* while (i != end)
|
|
460
|
+
* if (c_ == *i++)
|
|
461
|
+
* return std::make_pair(i, true);
|
|
462
|
+
* return std::make_pair(i, false);
|
|
463
|
+
* }
|
|
464
|
+
*
|
|
465
|
+
* private:
|
|
466
|
+
* char c_;
|
|
467
|
+
* };
|
|
468
|
+
*
|
|
469
|
+
* namespace asio {
|
|
470
|
+
* template <> struct is_match_condition<match_char>
|
|
471
|
+
* : public boost::true_type {};
|
|
472
|
+
* } // namespace asio
|
|
473
|
+
* ...
|
|
474
|
+
* std::string data;
|
|
475
|
+
* boost::asio::read_until(s, data, match_char('a'));
|
|
476
|
+
* @endcode
|
|
477
|
+
*/
|
|
478
|
+
template <typename SyncReadStream,
|
|
479
|
+
typename DynamicBuffer, typename MatchCondition>
|
|
480
|
+
std::size_t read_until(SyncReadStream& s,
|
|
481
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
482
|
+
MatchCondition match_condition,
|
|
483
|
+
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
484
|
+
|
|
485
|
+
/// Read data into a dynamic buffer sequence until a function object indicates a
|
|
486
|
+
/// match.
|
|
487
|
+
/**
|
|
488
|
+
* This function is used to read data into the specified dynamic buffer
|
|
489
|
+
* sequence until a user-defined match condition function object, when applied
|
|
490
|
+
* to the data contained in the dynamic buffer sequence, indicates a successful
|
|
491
|
+
* match. The call will block until one of the following conditions is true:
|
|
492
|
+
*
|
|
493
|
+
* @li The match condition function object returns a std::pair where the second
|
|
494
|
+
* element evaluates to true.
|
|
495
|
+
*
|
|
496
|
+
* @li An error occurred.
|
|
497
|
+
*
|
|
498
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
499
|
+
* read_some function. If the match condition function object already indicates
|
|
500
|
+
* a match, the function returns immediately.
|
|
501
|
+
*
|
|
502
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
503
|
+
* the SyncReadStream concept.
|
|
504
|
+
*
|
|
505
|
+
* @param buffers A dynamic buffer sequence into which the data will be read.
|
|
506
|
+
*
|
|
507
|
+
* @param match_condition The function object to be called to determine whether
|
|
508
|
+
* a match exists. The signature of the function object must be:
|
|
509
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
510
|
+
* @endcode
|
|
511
|
+
* where @c iterator represents the type:
|
|
512
|
+
* @code buffers_iterator<DynamicBuffer::const_buffers_type>
|
|
513
|
+
* @endcode
|
|
514
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
515
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
516
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
517
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
518
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
519
|
+
* @c second member of the return value is true if a match has been found, false
|
|
520
|
+
* otherwise.
|
|
521
|
+
*
|
|
522
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
523
|
+
*
|
|
524
|
+
* @returns The number of bytes in the dynamic buffer sequence's get area that
|
|
525
|
+
* have been fully consumed by the match function. Returns 0 if an error
|
|
526
|
+
* occurred.
|
|
527
|
+
*
|
|
528
|
+
* @note After a successful read_until operation, the dynamic buffer sequence
|
|
529
|
+
* may contain additional data beyond that which matched the function object.
|
|
530
|
+
* An application will typically leave that data in the dynamic buffer sequence
|
|
531
|
+
* for a subsequent read_until operation to examine.
|
|
532
|
+
*
|
|
533
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
534
|
+
* evaluates to true for function pointers and function objects with a
|
|
535
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
536
|
+
* function objects.
|
|
537
|
+
*/
|
|
538
|
+
template <typename SyncReadStream,
|
|
539
|
+
typename DynamicBuffer, typename MatchCondition>
|
|
540
|
+
std::size_t read_until(SyncReadStream& s,
|
|
541
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
542
|
+
MatchCondition match_condition, boost::system::error_code& ec,
|
|
543
|
+
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
544
|
+
|
|
545
|
+
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
546
|
+
|
|
547
|
+
/// Read data into a streambuf until it contains a specified delimiter.
|
|
548
|
+
/**
|
|
549
|
+
* This function is used to read data into the specified streambuf until the
|
|
550
|
+
* streambuf's get area contains the specified delimiter. The call will block
|
|
551
|
+
* until one of the following conditions is true:
|
|
552
|
+
*
|
|
553
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
554
|
+
*
|
|
555
|
+
* @li An error occurred.
|
|
556
|
+
*
|
|
557
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
558
|
+
* read_some function. If the streambuf's get area already contains the
|
|
559
|
+
* delimiter, the function returns immediately.
|
|
560
|
+
*
|
|
561
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
562
|
+
* the SyncReadStream concept.
|
|
563
|
+
*
|
|
564
|
+
* @param b A streambuf object into which the data will be read.
|
|
565
|
+
*
|
|
566
|
+
* @param delim The delimiter character.
|
|
567
|
+
*
|
|
568
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
569
|
+
* the delimiter.
|
|
570
|
+
*
|
|
571
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
572
|
+
*
|
|
573
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
574
|
+
* additional data beyond the delimiter. An application will typically leave
|
|
575
|
+
* that data in the streambuf for a subsequent read_until operation to examine.
|
|
576
|
+
*
|
|
577
|
+
* @par Example
|
|
578
|
+
* To read data into a streambuf until a newline is encountered:
|
|
579
|
+
* @code boost::asio::streambuf b;
|
|
580
|
+
* boost::asio::read_until(s, b, '\n');
|
|
581
|
+
* std::istream is(&b);
|
|
582
|
+
* std::string line;
|
|
583
|
+
* std::getline(is, line); @endcode
|
|
584
|
+
* After the @c read_until operation completes successfully, the buffer @c b
|
|
585
|
+
* contains the delimiter:
|
|
586
|
+
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
587
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
588
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
589
|
+
* @code { 'a', 'b', ..., 'c' } @endcode
|
|
590
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
591
|
+
* @code { 'd', 'e', ... } @endcode
|
|
592
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
593
|
+
* @c read_until operation.
|
|
594
|
+
*/
|
|
595
|
+
template <typename SyncReadStream, typename Allocator>
|
|
596
|
+
std::size_t read_until(SyncReadStream& s,
|
|
597
|
+
boost::asio::basic_streambuf<Allocator>& b, char delim);
|
|
598
|
+
|
|
599
|
+
/// Read data into a streambuf until it contains a specified delimiter.
|
|
600
|
+
/**
|
|
601
|
+
* This function is used to read data into the specified streambuf until the
|
|
602
|
+
* streambuf's get area contains the specified delimiter. The call will block
|
|
603
|
+
* until one of the following conditions is true:
|
|
604
|
+
*
|
|
605
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
606
|
+
*
|
|
607
|
+
* @li An error occurred.
|
|
608
|
+
*
|
|
609
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
610
|
+
* read_some function. If the streambuf's get area already contains the
|
|
611
|
+
* delimiter, the function returns immediately.
|
|
612
|
+
*
|
|
613
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
614
|
+
* the SyncReadStream concept.
|
|
615
|
+
*
|
|
616
|
+
* @param b A streambuf object into which the data will be read.
|
|
617
|
+
*
|
|
618
|
+
* @param delim The delimiter character.
|
|
619
|
+
*
|
|
620
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
621
|
+
*
|
|
622
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
623
|
+
* the delimiter. Returns 0 if an error occurred.
|
|
624
|
+
*
|
|
625
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
626
|
+
* additional data beyond the delimiter. An application will typically leave
|
|
627
|
+
* that data in the streambuf for a subsequent read_until operation to examine.
|
|
628
|
+
*/
|
|
629
|
+
template <typename SyncReadStream, typename Allocator>
|
|
630
|
+
std::size_t read_until(SyncReadStream& s,
|
|
631
|
+
boost::asio::basic_streambuf<Allocator>& b, char delim,
|
|
632
|
+
boost::system::error_code& ec);
|
|
633
|
+
|
|
634
|
+
/// Read data into a streambuf until it contains a specified delimiter.
|
|
635
|
+
/**
|
|
636
|
+
* This function is used to read data into the specified streambuf until the
|
|
637
|
+
* streambuf's get area contains the specified delimiter. The call will block
|
|
638
|
+
* until one of the following conditions is true:
|
|
639
|
+
*
|
|
640
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
641
|
+
*
|
|
642
|
+
* @li An error occurred.
|
|
643
|
+
*
|
|
644
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
645
|
+
* read_some function. If the streambuf's get area already contains the
|
|
646
|
+
* delimiter, the function returns immediately.
|
|
647
|
+
*
|
|
648
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
649
|
+
* the SyncReadStream concept.
|
|
650
|
+
*
|
|
651
|
+
* @param b A streambuf object into which the data will be read.
|
|
652
|
+
*
|
|
653
|
+
* @param delim The delimiter string.
|
|
654
|
+
*
|
|
655
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
656
|
+
* the delimiter.
|
|
657
|
+
*
|
|
658
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
659
|
+
*
|
|
660
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
661
|
+
* additional data beyond the delimiter. An application will typically leave
|
|
662
|
+
* that data in the streambuf for a subsequent read_until operation to examine.
|
|
663
|
+
*
|
|
664
|
+
* @par Example
|
|
665
|
+
* To read data into a streambuf until a newline is encountered:
|
|
666
|
+
* @code boost::asio::streambuf b;
|
|
667
|
+
* boost::asio::read_until(s, b, "\r\n");
|
|
668
|
+
* std::istream is(&b);
|
|
669
|
+
* std::string line;
|
|
670
|
+
* std::getline(is, line); @endcode
|
|
671
|
+
* After the @c read_until operation completes successfully, the buffer @c b
|
|
672
|
+
* contains the delimiter:
|
|
673
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
674
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
675
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
676
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
677
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
678
|
+
* @code { 'd', 'e', ... } @endcode
|
|
679
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
680
|
+
* @c read_until operation.
|
|
681
|
+
*/
|
|
682
|
+
template <typename SyncReadStream, typename Allocator>
|
|
683
|
+
std::size_t read_until(SyncReadStream& s,
|
|
684
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
685
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim);
|
|
686
|
+
|
|
687
|
+
/// Read data into a streambuf until it contains a specified delimiter.
|
|
688
|
+
/**
|
|
689
|
+
* This function is used to read data into the specified streambuf until the
|
|
690
|
+
* streambuf's get area contains the specified delimiter. The call will block
|
|
691
|
+
* until one of the following conditions is true:
|
|
692
|
+
*
|
|
693
|
+
* @li The get area of the streambuf contains the specified delimiter.
|
|
694
|
+
*
|
|
695
|
+
* @li An error occurred.
|
|
696
|
+
*
|
|
697
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
698
|
+
* read_some function. If the streambuf's get area already contains the
|
|
699
|
+
* delimiter, the function returns immediately.
|
|
700
|
+
*
|
|
701
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
702
|
+
* the SyncReadStream concept.
|
|
703
|
+
*
|
|
704
|
+
* @param b A streambuf object into which the data will be read.
|
|
705
|
+
*
|
|
706
|
+
* @param delim The delimiter string.
|
|
707
|
+
*
|
|
708
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
709
|
+
*
|
|
710
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
711
|
+
* the delimiter. Returns 0 if an error occurred.
|
|
712
|
+
*
|
|
713
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
714
|
+
* additional data beyond the delimiter. An application will typically leave
|
|
715
|
+
* that data in the streambuf for a subsequent read_until operation to examine.
|
|
716
|
+
*/
|
|
717
|
+
template <typename SyncReadStream, typename Allocator>
|
|
718
|
+
std::size_t read_until(SyncReadStream& s,
|
|
719
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
720
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec);
|
|
721
|
+
|
|
722
|
+
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
723
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
724
|
+
|
|
725
|
+
/// Read data into a streambuf until some part of the data it contains matches
|
|
726
|
+
/// a regular expression.
|
|
727
|
+
/**
|
|
728
|
+
* This function is used to read data into the specified streambuf until the
|
|
729
|
+
* streambuf's get area contains some data that matches a regular expression.
|
|
730
|
+
* The call will block until one of the following conditions is true:
|
|
731
|
+
*
|
|
732
|
+
* @li A substring of the streambuf's get area matches the regular expression.
|
|
733
|
+
*
|
|
734
|
+
* @li An error occurred.
|
|
735
|
+
*
|
|
736
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
737
|
+
* read_some function. If the streambuf's get area already contains data that
|
|
738
|
+
* matches the regular expression, the function returns immediately.
|
|
739
|
+
*
|
|
740
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
741
|
+
* the SyncReadStream concept.
|
|
742
|
+
*
|
|
743
|
+
* @param b A streambuf object into which the data will be read.
|
|
744
|
+
*
|
|
745
|
+
* @param expr The regular expression.
|
|
746
|
+
*
|
|
747
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
748
|
+
* the substring that matches the regular expression.
|
|
749
|
+
*
|
|
750
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
751
|
+
*
|
|
752
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
753
|
+
* additional data beyond that which matched the regular expression. An
|
|
754
|
+
* application will typically leave that data in the streambuf for a subsequent
|
|
755
|
+
* read_until operation to examine.
|
|
756
|
+
*
|
|
757
|
+
* @par Example
|
|
758
|
+
* To read data into a streambuf until a CR-LF sequence is encountered:
|
|
759
|
+
* @code boost::asio::streambuf b;
|
|
760
|
+
* boost::asio::read_until(s, b, boost::regex("\r\n"));
|
|
761
|
+
* std::istream is(&b);
|
|
762
|
+
* std::string line;
|
|
763
|
+
* std::getline(is, line); @endcode
|
|
764
|
+
* After the @c read_until operation completes successfully, the buffer @c b
|
|
765
|
+
* contains the data which matched the regular expression:
|
|
766
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
767
|
+
* The call to @c std::getline then extracts the data up to and including the
|
|
768
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
769
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
770
|
+
* The remaining data is left in the buffer @c b as follows:
|
|
771
|
+
* @code { 'd', 'e', ... } @endcode
|
|
772
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
773
|
+
* @c read_until operation.
|
|
774
|
+
*/
|
|
775
|
+
template <typename SyncReadStream, typename Allocator>
|
|
776
|
+
std::size_t read_until(SyncReadStream& s,
|
|
777
|
+
boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
|
|
778
|
+
|
|
779
|
+
/// Read data into a streambuf until some part of the data it contains matches
|
|
780
|
+
/// a regular expression.
|
|
781
|
+
/**
|
|
782
|
+
* This function is used to read data into the specified streambuf until the
|
|
783
|
+
* streambuf's get area contains some data that matches a regular expression.
|
|
784
|
+
* The call will block until one of the following conditions is true:
|
|
785
|
+
*
|
|
786
|
+
* @li A substring of the streambuf's get area matches the regular expression.
|
|
787
|
+
*
|
|
788
|
+
* @li An error occurred.
|
|
789
|
+
*
|
|
790
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
791
|
+
* read_some function. If the streambuf's get area already contains data that
|
|
792
|
+
* matches the regular expression, the function returns immediately.
|
|
793
|
+
*
|
|
794
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
795
|
+
* the SyncReadStream concept.
|
|
796
|
+
*
|
|
797
|
+
* @param b A streambuf object into which the data will be read.
|
|
798
|
+
*
|
|
799
|
+
* @param expr The regular expression.
|
|
800
|
+
*
|
|
801
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
802
|
+
*
|
|
803
|
+
* @returns The number of bytes in the streambuf's get area up to and including
|
|
804
|
+
* the substring that matches the regular expression. Returns 0 if an error
|
|
805
|
+
* occurred.
|
|
806
|
+
*
|
|
807
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
808
|
+
* additional data beyond that which matched the regular expression. An
|
|
809
|
+
* application will typically leave that data in the streambuf for a subsequent
|
|
810
|
+
* read_until operation to examine.
|
|
811
|
+
*/
|
|
812
|
+
template <typename SyncReadStream, typename Allocator>
|
|
813
|
+
std::size_t read_until(SyncReadStream& s,
|
|
814
|
+
boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
|
|
815
|
+
boost::system::error_code& ec);
|
|
816
|
+
|
|
817
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
818
|
+
// || defined(GENERATING_DOCUMENTATION)
|
|
819
|
+
|
|
820
|
+
/// Read data into a streambuf until a function object indicates a match.
|
|
821
|
+
/**
|
|
822
|
+
* This function is used to read data into the specified streambuf until a
|
|
823
|
+
* user-defined match condition function object, when applied to the data
|
|
824
|
+
* contained in the streambuf, indicates a successful match. The call will
|
|
825
|
+
* block until one of the following conditions is true:
|
|
826
|
+
*
|
|
827
|
+
* @li The match condition function object returns a std::pair where the second
|
|
828
|
+
* element evaluates to true.
|
|
829
|
+
*
|
|
830
|
+
* @li An error occurred.
|
|
831
|
+
*
|
|
832
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
833
|
+
* read_some function. If the match condition function object already indicates
|
|
834
|
+
* a match, the function returns immediately.
|
|
835
|
+
*
|
|
836
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
837
|
+
* the SyncReadStream concept.
|
|
838
|
+
*
|
|
839
|
+
* @param b A streambuf object into which the data will be read.
|
|
840
|
+
*
|
|
841
|
+
* @param match_condition The function object to be called to determine whether
|
|
842
|
+
* a match exists. The signature of the function object must be:
|
|
843
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
844
|
+
* @endcode
|
|
845
|
+
* where @c iterator represents the type:
|
|
846
|
+
* @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
|
|
847
|
+
* @endcode
|
|
848
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
849
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
850
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
851
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
852
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
853
|
+
* @c second member of the return value is true if a match has been found, false
|
|
854
|
+
* otherwise.
|
|
855
|
+
*
|
|
856
|
+
* @returns The number of bytes in the streambuf's get area that have been fully
|
|
857
|
+
* consumed by the match function.
|
|
858
|
+
*
|
|
859
|
+
* @throws boost::system::system_error Thrown on failure.
|
|
860
|
+
*
|
|
861
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
862
|
+
* additional data beyond that which matched the function object. An application
|
|
863
|
+
* will typically leave that data in the streambuf for a subsequent read_until
|
|
864
|
+
* operation to examine.
|
|
865
|
+
*
|
|
866
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
867
|
+
* evaluates to true for function pointers and function objects with a
|
|
868
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
869
|
+
* function objects.
|
|
870
|
+
*
|
|
871
|
+
* @par Examples
|
|
872
|
+
* To read data into a streambuf until whitespace is encountered:
|
|
873
|
+
* @code typedef boost::asio::buffers_iterator<
|
|
874
|
+
* boost::asio::streambuf::const_buffers_type> iterator;
|
|
875
|
+
*
|
|
876
|
+
* std::pair<iterator, bool>
|
|
877
|
+
* match_whitespace(iterator begin, iterator end)
|
|
878
|
+
* {
|
|
879
|
+
* iterator i = begin;
|
|
880
|
+
* while (i != end)
|
|
881
|
+
* if (std::isspace(*i++))
|
|
882
|
+
* return std::make_pair(i, true);
|
|
883
|
+
* return std::make_pair(i, false);
|
|
884
|
+
* }
|
|
885
|
+
* ...
|
|
886
|
+
* boost::asio::streambuf b;
|
|
887
|
+
* boost::asio::read_until(s, b, match_whitespace);
|
|
888
|
+
* @endcode
|
|
889
|
+
*
|
|
890
|
+
* To read data into a streambuf until a matching character is found:
|
|
891
|
+
* @code class match_char
|
|
892
|
+
* {
|
|
893
|
+
* public:
|
|
894
|
+
* explicit match_char(char c) : c_(c) {}
|
|
895
|
+
*
|
|
896
|
+
* template <typename Iterator>
|
|
897
|
+
* std::pair<Iterator, bool> operator()(
|
|
898
|
+
* Iterator begin, Iterator end) const
|
|
899
|
+
* {
|
|
900
|
+
* Iterator i = begin;
|
|
901
|
+
* while (i != end)
|
|
902
|
+
* if (c_ == *i++)
|
|
903
|
+
* return std::make_pair(i, true);
|
|
904
|
+
* return std::make_pair(i, false);
|
|
905
|
+
* }
|
|
906
|
+
*
|
|
907
|
+
* private:
|
|
908
|
+
* char c_;
|
|
909
|
+
* };
|
|
910
|
+
*
|
|
911
|
+
* namespace asio {
|
|
912
|
+
* template <> struct is_match_condition<match_char>
|
|
913
|
+
* : public boost::true_type {};
|
|
914
|
+
* } // namespace asio
|
|
915
|
+
* ...
|
|
916
|
+
* boost::asio::streambuf b;
|
|
917
|
+
* boost::asio::read_until(s, b, match_char('a'));
|
|
918
|
+
* @endcode
|
|
919
|
+
*/
|
|
920
|
+
template <typename SyncReadStream, typename Allocator, typename MatchCondition>
|
|
921
|
+
std::size_t read_until(SyncReadStream& s,
|
|
922
|
+
boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
|
|
923
|
+
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
924
|
+
|
|
925
|
+
/// Read data into a streambuf until a function object indicates a match.
|
|
926
|
+
/**
|
|
927
|
+
* This function is used to read data into the specified streambuf until a
|
|
928
|
+
* user-defined match condition function object, when applied to the data
|
|
929
|
+
* contained in the streambuf, indicates a successful match. The call will
|
|
930
|
+
* block until one of the following conditions is true:
|
|
931
|
+
*
|
|
932
|
+
* @li The match condition function object returns a std::pair where the second
|
|
933
|
+
* element evaluates to true.
|
|
934
|
+
*
|
|
935
|
+
* @li An error occurred.
|
|
936
|
+
*
|
|
937
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
938
|
+
* read_some function. If the match condition function object already indicates
|
|
939
|
+
* a match, the function returns immediately.
|
|
940
|
+
*
|
|
941
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
942
|
+
* the SyncReadStream concept.
|
|
943
|
+
*
|
|
944
|
+
* @param b A streambuf object into which the data will be read.
|
|
945
|
+
*
|
|
946
|
+
* @param match_condition The function object to be called to determine whether
|
|
947
|
+
* a match exists. The signature of the function object must be:
|
|
948
|
+
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
949
|
+
* @endcode
|
|
950
|
+
* where @c iterator represents the type:
|
|
951
|
+
* @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
|
|
952
|
+
* @endcode
|
|
953
|
+
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
954
|
+
* scanned to determine whether there is a match. The @c first member of the
|
|
955
|
+
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
956
|
+
* been consumed by the match function. This iterator is used to calculate the
|
|
957
|
+
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
958
|
+
* @c second member of the return value is true if a match has been found, false
|
|
959
|
+
* otherwise.
|
|
960
|
+
*
|
|
961
|
+
* @param ec Set to indicate what error occurred, if any.
|
|
962
|
+
*
|
|
963
|
+
* @returns The number of bytes in the streambuf's get area that have been fully
|
|
964
|
+
* consumed by the match function. Returns 0 if an error occurred.
|
|
965
|
+
*
|
|
966
|
+
* @note After a successful read_until operation, the streambuf may contain
|
|
967
|
+
* additional data beyond that which matched the function object. An application
|
|
968
|
+
* will typically leave that data in the streambuf for a subsequent read_until
|
|
969
|
+
* operation to examine.
|
|
970
|
+
*
|
|
971
|
+
* @note The default implementation of the @c is_match_condition type trait
|
|
972
|
+
* evaluates to true for function pointers and function objects with a
|
|
973
|
+
* @c result_type typedef. It must be specialised for other user-defined
|
|
974
|
+
* function objects.
|
|
975
|
+
*/
|
|
976
|
+
template <typename SyncReadStream, typename Allocator, typename MatchCondition>
|
|
977
|
+
std::size_t read_until(SyncReadStream& s,
|
|
978
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
979
|
+
MatchCondition match_condition, boost::system::error_code& ec,
|
|
980
|
+
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
981
|
+
|
|
982
|
+
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
983
|
+
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
984
|
+
|
|
985
|
+
/*@}*/
|
|
986
|
+
/**
|
|
987
|
+
* @defgroup async_read_until boost::asio::async_read_until
|
|
988
|
+
*
|
|
989
|
+
* @brief Start an asynchronous operation to read data into a dynamic buffer
|
|
990
|
+
* sequence, or into a streambuf, until it contains a delimiter, matches a
|
|
991
|
+
* regular expression, or a function object indicates a match.
|
|
992
|
+
*/
|
|
993
|
+
/*@{*/
|
|
994
|
+
|
|
995
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
996
|
+
/// until it contains a specified delimiter.
|
|
997
|
+
/**
|
|
998
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
999
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
1000
|
+
* specified delimiter. The function call always returns immediately. The
|
|
1001
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1002
|
+
* is true:
|
|
1003
|
+
*
|
|
1004
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1005
|
+
* delimiter.
|
|
1006
|
+
*
|
|
1007
|
+
* @li An error occurred.
|
|
1008
|
+
*
|
|
1009
|
+
* This operation is implemented in terms of zero or more calls to the stream's
|
|
1010
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1011
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
1012
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1013
|
+
* the stream performs no other read operations (such as async_read,
|
|
1014
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1015
|
+
* composed operations that perform reads) until this operation completes.
|
|
1016
|
+
*
|
|
1017
|
+
* @param s The stream from which the data is to be read. The type must support
|
|
1018
|
+
* the AsyncReadStream concept.
|
|
1019
|
+
*
|
|
1020
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1021
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1022
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1023
|
+
* that they remain valid until the handler is called.
|
|
1024
|
+
*
|
|
1025
|
+
* @param delim The delimiter character.
|
|
1026
|
+
*
|
|
1027
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1028
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1029
|
+
* handler must be:
|
|
1030
|
+
* @code void handler(
|
|
1031
|
+
* // Result of operation.
|
|
1032
|
+
* const boost::system::error_code& error,
|
|
1033
|
+
*
|
|
1034
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1035
|
+
* // get area up to and including the delimiter.
|
|
1036
|
+
* // 0 if an error occurred.
|
|
1037
|
+
* std::size_t bytes_transferred
|
|
1038
|
+
* ); @endcode
|
|
1039
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1040
|
+
* not, the handler will not be invoked from within this function. Invocation of
|
|
1041
|
+
* the handler will be performed in a manner equivalent to using
|
|
1042
|
+
* boost::asio::io_context::post().
|
|
1043
|
+
*
|
|
1044
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1045
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
1046
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
1047
|
+
* subsequent async_read_until operation to examine.
|
|
1048
|
+
*
|
|
1049
|
+
* @par Example
|
|
1050
|
+
* To asynchronously read data into a @c std::string until a newline is
|
|
1051
|
+
* encountered:
|
|
1052
|
+
* @code std::string data;
|
|
1053
|
+
* ...
|
|
1054
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1055
|
+
* {
|
|
1056
|
+
* if (!e)
|
|
1057
|
+
* {
|
|
1058
|
+
* std::string line = data.substr(0, n);
|
|
1059
|
+
* data.erase(0, n);
|
|
1060
|
+
* ...
|
|
1061
|
+
* }
|
|
1062
|
+
* }
|
|
1063
|
+
* ...
|
|
1064
|
+
* boost::asio::async_read_until(s, data, '\n', handler); @endcode
|
|
1065
|
+
* After the @c async_read_until operation completes successfully, the buffer
|
|
1066
|
+
* @c data contains the delimiter:
|
|
1067
|
+
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
1068
|
+
* The call to @c substr then extracts the data up to and including the
|
|
1069
|
+
* delimiter, so that the string @c line contains:
|
|
1070
|
+
* @code { 'a', 'b', ..., 'c', '\n' } @endcode
|
|
1071
|
+
* After the call to @c erase, the remaining data is left in the buffer @c data
|
|
1072
|
+
* as follows:
|
|
1073
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1074
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1075
|
+
* @c async_read_until operation.
|
|
1076
|
+
*/
|
|
1077
|
+
template <typename AsyncReadStream,
|
|
1078
|
+
typename DynamicBuffer, typename ReadHandler>
|
|
1079
|
+
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
1080
|
+
void (boost::system::error_code, std::size_t))
|
|
1081
|
+
async_read_until(AsyncReadStream& s,
|
|
1082
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1083
|
+
char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
|
|
1084
|
+
|
|
1085
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1086
|
+
/// until it contains a specified delimiter.
|
|
254
1087
|
/**
|
|
255
|
-
* This function is used to read data into the specified
|
|
256
|
-
*
|
|
257
|
-
*
|
|
1088
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1089
|
+
* buffer sequence until the dynamic buffer sequence's get area contains the
|
|
1090
|
+
* specified delimiter. The function call always returns immediately. The
|
|
1091
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1092
|
+
* is true:
|
|
258
1093
|
*
|
|
259
|
-
* @li
|
|
1094
|
+
* @li The get area of the dynamic buffer sequence contains the specified
|
|
1095
|
+
* delimiter.
|
|
260
1096
|
*
|
|
261
1097
|
* @li An error occurred.
|
|
262
1098
|
*
|
|
263
1099
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
264
|
-
*
|
|
265
|
-
*
|
|
1100
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1101
|
+
* the dynamic buffer sequence's get area already contains the delimiter, this
|
|
1102
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1103
|
+
* the stream performs no other read operations (such as async_read,
|
|
1104
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1105
|
+
* composed operations that perform reads) until this operation completes.
|
|
266
1106
|
*
|
|
267
1107
|
* @param s The stream from which the data is to be read. The type must support
|
|
268
|
-
* the
|
|
1108
|
+
* the AsyncReadStream concept.
|
|
269
1109
|
*
|
|
270
|
-
* @param
|
|
1110
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1111
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1112
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1113
|
+
* that they remain valid until the handler is called.
|
|
271
1114
|
*
|
|
272
|
-
* @param
|
|
1115
|
+
* @param delim The delimiter string.
|
|
273
1116
|
*
|
|
274
|
-
* @
|
|
275
|
-
*
|
|
1117
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1118
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1119
|
+
* handler must be:
|
|
1120
|
+
* @code void handler(
|
|
1121
|
+
* // Result of operation.
|
|
1122
|
+
* const boost::system::error_code& error,
|
|
276
1123
|
*
|
|
277
|
-
*
|
|
1124
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1125
|
+
* // get area up to and including the delimiter.
|
|
1126
|
+
* // 0 if an error occurred.
|
|
1127
|
+
* std::size_t bytes_transferred
|
|
1128
|
+
* ); @endcode
|
|
1129
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1130
|
+
* not, the handler will not be invoked from within this function. Invocation of
|
|
1131
|
+
* the handler will be performed in a manner equivalent to using
|
|
1132
|
+
* boost::asio::io_context::post().
|
|
278
1133
|
*
|
|
279
|
-
* @note After a successful
|
|
280
|
-
* additional data beyond
|
|
281
|
-
*
|
|
282
|
-
*
|
|
1134
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1135
|
+
* sequence may contain additional data beyond the delimiter. An application
|
|
1136
|
+
* will typically leave that data in the dynamic buffer sequence for a
|
|
1137
|
+
* subsequent async_read_until operation to examine.
|
|
283
1138
|
*
|
|
284
1139
|
* @par Example
|
|
285
|
-
* To read data into a
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
* std::
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
1140
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
1141
|
+
* encountered:
|
|
1142
|
+
* @code std::string data;
|
|
1143
|
+
* ...
|
|
1144
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1145
|
+
* {
|
|
1146
|
+
* if (!e)
|
|
1147
|
+
* {
|
|
1148
|
+
* std::string line = data.substr(0, n);
|
|
1149
|
+
* data.erase(0, n);
|
|
1150
|
+
* ...
|
|
1151
|
+
* }
|
|
1152
|
+
* }
|
|
1153
|
+
* ...
|
|
1154
|
+
* boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
|
|
1155
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
1156
|
+
* @c data contains the delimiter:
|
|
293
1157
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
294
|
-
* The call to @c
|
|
295
|
-
*
|
|
1158
|
+
* The call to @c substr then extracts the data up to and including the
|
|
1159
|
+
* delimiter, so that the string @c line contains:
|
|
296
1160
|
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
297
|
-
*
|
|
1161
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
1162
|
+
* as follows:
|
|
298
1163
|
* @code { 'd', 'e', ... } @endcode
|
|
299
1164
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
300
|
-
* @c
|
|
1165
|
+
* @c async_read_until operation.
|
|
301
1166
|
*/
|
|
302
|
-
template <typename
|
|
303
|
-
|
|
304
|
-
|
|
1167
|
+
template <typename AsyncReadStream,
|
|
1168
|
+
typename DynamicBuffer, typename ReadHandler>
|
|
1169
|
+
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
1170
|
+
void (boost::system::error_code, std::size_t))
|
|
1171
|
+
async_read_until(AsyncReadStream& s,
|
|
1172
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1173
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
1174
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
|
|
305
1175
|
|
|
306
|
-
|
|
307
|
-
|
|
1176
|
+
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1177
|
+
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
1178
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
1179
|
+
|
|
1180
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1181
|
+
/// until some part of its data matches a regular expression.
|
|
308
1182
|
/**
|
|
309
|
-
* This function is used to read data into the specified
|
|
310
|
-
*
|
|
311
|
-
*
|
|
1183
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1184
|
+
* buffer sequence until the dynamic buffer sequence's get area contains some
|
|
1185
|
+
* data that matches a regular expression. The function call always returns
|
|
1186
|
+
* immediately. The asynchronous operation will continue until one of the
|
|
1187
|
+
* following conditions is true:
|
|
312
1188
|
*
|
|
313
|
-
* @li A substring of the
|
|
1189
|
+
* @li A substring of the dynamic buffer sequence's get area matches the regular
|
|
1190
|
+
* expression.
|
|
314
1191
|
*
|
|
315
1192
|
* @li An error occurred.
|
|
316
1193
|
*
|
|
317
1194
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
318
|
-
*
|
|
319
|
-
*
|
|
1195
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1196
|
+
* the dynamic buffer sequence's get area already contains data that matches
|
|
1197
|
+
* the regular expression, this asynchronous operation completes immediately.
|
|
1198
|
+
* The program must ensure that the stream performs no other read operations
|
|
1199
|
+
* (such as async_read, async_read_until, the stream's async_read_some
|
|
1200
|
+
* function, or any other composed operations that perform reads) until this
|
|
1201
|
+
* operation completes.
|
|
320
1202
|
*
|
|
321
1203
|
* @param s The stream from which the data is to be read. The type must support
|
|
322
|
-
* the
|
|
1204
|
+
* the AsyncReadStream concept.
|
|
323
1205
|
*
|
|
324
|
-
* @param
|
|
1206
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1207
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1208
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1209
|
+
* that they remain valid until the handler is called.
|
|
325
1210
|
*
|
|
326
1211
|
* @param expr The regular expression.
|
|
327
1212
|
*
|
|
328
|
-
* @param
|
|
1213
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1214
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1215
|
+
* handler must be:
|
|
1216
|
+
* @code void handler(
|
|
1217
|
+
* // Result of operation.
|
|
1218
|
+
* const boost::system::error_code& error,
|
|
329
1219
|
*
|
|
330
|
-
*
|
|
331
|
-
*
|
|
332
|
-
*
|
|
1220
|
+
* // The number of bytes in the dynamic buffer
|
|
1221
|
+
* // sequence's get area up to and including the
|
|
1222
|
+
* // substring that matches the regular expression.
|
|
1223
|
+
* // 0 if an error occurred.
|
|
1224
|
+
* std::size_t bytes_transferred
|
|
1225
|
+
* ); @endcode
|
|
1226
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1227
|
+
* not, the handler will not be invoked from within this function. Invocation of
|
|
1228
|
+
* the handler will be performed in a manner equivalent to using
|
|
1229
|
+
* boost::asio::io_context::post().
|
|
333
1230
|
*
|
|
334
|
-
* @note After a successful
|
|
335
|
-
* additional data beyond that which matched the regular
|
|
336
|
-
* application will typically leave that data in the
|
|
337
|
-
*
|
|
1231
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1232
|
+
* sequence may contain additional data beyond that which matched the regular
|
|
1233
|
+
* expression. An application will typically leave that data in the dynamic
|
|
1234
|
+
* buffer sequence for a subsequent async_read_until operation to examine.
|
|
1235
|
+
*
|
|
1236
|
+
* @par Example
|
|
1237
|
+
* To asynchronously read data into a @c std::string until a CR-LF sequence is
|
|
1238
|
+
* encountered:
|
|
1239
|
+
* @code std::string data;
|
|
1240
|
+
* ...
|
|
1241
|
+
* void handler(const boost::system::error_code& e, std::size_t size)
|
|
1242
|
+
* {
|
|
1243
|
+
* if (!e)
|
|
1244
|
+
* {
|
|
1245
|
+
* std::string line = data.substr(0, n);
|
|
1246
|
+
* data.erase(0, n);
|
|
1247
|
+
* ...
|
|
1248
|
+
* }
|
|
1249
|
+
* }
|
|
1250
|
+
* ...
|
|
1251
|
+
* boost::asio::async_read_until(s, data,
|
|
1252
|
+
* boost::regex("\r\n"), handler); @endcode
|
|
1253
|
+
* After the @c async_read_until operation completes successfully, the string
|
|
1254
|
+
* @c data contains the data which matched the regular expression:
|
|
1255
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
1256
|
+
* The call to @c substr then extracts the data up to and including the match,
|
|
1257
|
+
* so that the string @c line contains:
|
|
1258
|
+
* @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
|
|
1259
|
+
* After the call to @c erase, the remaining data is left in the string @c data
|
|
1260
|
+
* as follows:
|
|
1261
|
+
* @code { 'd', 'e', ... } @endcode
|
|
1262
|
+
* This data may be the start of a new line, to be extracted by a subsequent
|
|
1263
|
+
* @c async_read_until operation.
|
|
338
1264
|
*/
|
|
339
|
-
template <typename
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
boost::system::error_code
|
|
1265
|
+
template <typename AsyncReadStream,
|
|
1266
|
+
typename DynamicBuffer, typename ReadHandler>
|
|
1267
|
+
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
1268
|
+
void (boost::system::error_code, std::size_t))
|
|
1269
|
+
async_read_until(AsyncReadStream& s,
|
|
1270
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1271
|
+
const boost::regex& expr,
|
|
1272
|
+
BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
|
|
343
1273
|
|
|
344
1274
|
#endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
|
345
1275
|
// || defined(GENERATING_DOCUMENTATION)
|
|
346
1276
|
|
|
347
|
-
///
|
|
1277
|
+
/// Start an asynchronous operation to read data into a dynamic buffer sequence
|
|
1278
|
+
/// until a function object indicates a match.
|
|
348
1279
|
/**
|
|
349
|
-
* This function is used to read data into the specified
|
|
350
|
-
* user-defined match condition function object, when
|
|
351
|
-
* contained in the
|
|
352
|
-
*
|
|
1280
|
+
* This function is used to asynchronously read data into the specified dynamic
|
|
1281
|
+
* buffer sequence until a user-defined match condition function object, when
|
|
1282
|
+
* applied to the data contained in the dynamic buffer sequence, indicates a
|
|
1283
|
+
* successful match. The function call always returns immediately. The
|
|
1284
|
+
* asynchronous operation will continue until one of the following conditions
|
|
1285
|
+
* is true:
|
|
353
1286
|
*
|
|
354
1287
|
* @li The match condition function object returns a std::pair where the second
|
|
355
1288
|
* element evaluates to true.
|
|
@@ -357,20 +1290,27 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
357
1290
|
* @li An error occurred.
|
|
358
1291
|
*
|
|
359
1292
|
* This operation is implemented in terms of zero or more calls to the stream's
|
|
360
|
-
*
|
|
361
|
-
*
|
|
1293
|
+
* async_read_some function, and is known as a <em>composed operation</em>. If
|
|
1294
|
+
* the match condition function object already indicates a match, this
|
|
1295
|
+
* asynchronous operation completes immediately. The program must ensure that
|
|
1296
|
+
* the stream performs no other read operations (such as async_read,
|
|
1297
|
+
* async_read_until, the stream's async_read_some function, or any other
|
|
1298
|
+
* composed operations that perform reads) until this operation completes.
|
|
362
1299
|
*
|
|
363
1300
|
* @param s The stream from which the data is to be read. The type must support
|
|
364
|
-
* the
|
|
1301
|
+
* the AsyncReadStream concept.
|
|
365
1302
|
*
|
|
366
|
-
* @param
|
|
1303
|
+
* @param buffers The dynamic buffer sequence into which the data will be read.
|
|
1304
|
+
* Although the buffers object may be copied as necessary, ownership of the
|
|
1305
|
+
* underlying memory blocks is retained by the caller, which must guarantee
|
|
1306
|
+
* that they remain valid until the handler is called.
|
|
367
1307
|
*
|
|
368
1308
|
* @param match_condition The function object to be called to determine whether
|
|
369
1309
|
* a match exists. The signature of the function object must be:
|
|
370
1310
|
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
371
1311
|
* @endcode
|
|
372
1312
|
* where @c iterator represents the type:
|
|
373
|
-
* @code buffers_iterator<
|
|
1313
|
+
* @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
|
|
374
1314
|
* @endcode
|
|
375
1315
|
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
376
1316
|
* scanned to determine whether there is a match. The @c first member of the
|
|
@@ -380,14 +1320,27 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
380
1320
|
* @c second member of the return value is true if a match has been found, false
|
|
381
1321
|
* otherwise.
|
|
382
1322
|
*
|
|
383
|
-
* @
|
|
384
|
-
*
|
|
1323
|
+
* @param handler The handler to be called when the read operation completes.
|
|
1324
|
+
* Copies will be made of the handler as required. The function signature of the
|
|
1325
|
+
* handler must be:
|
|
1326
|
+
* @code void handler(
|
|
1327
|
+
* // Result of operation.
|
|
1328
|
+
* const boost::system::error_code& error,
|
|
385
1329
|
*
|
|
386
|
-
*
|
|
1330
|
+
* // The number of bytes in the dynamic buffer sequence's
|
|
1331
|
+
* // get area that have been fully consumed by the match
|
|
1332
|
+
* // function. O if an error occurred.
|
|
1333
|
+
* std::size_t bytes_transferred
|
|
1334
|
+
* ); @endcode
|
|
1335
|
+
* Regardless of whether the asynchronous operation completes immediately or
|
|
1336
|
+
* not, the handler will not be invoked from within this function. Invocation of
|
|
1337
|
+
* the handler will be performed in a manner equivalent to using
|
|
1338
|
+
* boost::asio::io_context::post().
|
|
387
1339
|
*
|
|
388
|
-
* @note After a successful
|
|
389
|
-
* additional data beyond that which matched the function
|
|
390
|
-
* will typically leave that data in the
|
|
1340
|
+
* @note After a successful async_read_until operation, the dynamic buffer
|
|
1341
|
+
* sequence may contain additional data beyond that which matched the function
|
|
1342
|
+
* object. An application will typically leave that data in the dynamic buffer
|
|
1343
|
+
* sequence for a subsequent async_read_until operation to examine.
|
|
391
1344
|
*
|
|
392
1345
|
* @note The default implementation of the @c is_match_condition type trait
|
|
393
1346
|
* evaluates to true for function pointers and function objects with a
|
|
@@ -395,9 +1348,10 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
395
1348
|
* function objects.
|
|
396
1349
|
*
|
|
397
1350
|
* @par Examples
|
|
398
|
-
* To read data into a
|
|
1351
|
+
* To asynchronously read data into a @c std::string until whitespace is
|
|
1352
|
+
* encountered:
|
|
399
1353
|
* @code typedef boost::asio::buffers_iterator<
|
|
400
|
-
* boost::asio::
|
|
1354
|
+
* boost::asio::const_buffers_1> iterator;
|
|
401
1355
|
*
|
|
402
1356
|
* std::pair<iterator, bool>
|
|
403
1357
|
* match_whitespace(iterator begin, iterator end)
|
|
@@ -409,11 +1363,14 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
409
1363
|
* return std::make_pair(i, false);
|
|
410
1364
|
* }
|
|
411
1365
|
* ...
|
|
412
|
-
* boost::
|
|
413
|
-
*
|
|
1366
|
+
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1367
|
+
* ...
|
|
1368
|
+
* std::string data;
|
|
1369
|
+
* boost::asio::async_read_until(s, data, match_whitespace, handler);
|
|
414
1370
|
* @endcode
|
|
415
1371
|
*
|
|
416
|
-
* To read data into a
|
|
1372
|
+
* To asynchronously read data into a @c std::string until a matching character
|
|
1373
|
+
* is found:
|
|
417
1374
|
* @code class match_char
|
|
418
1375
|
* {
|
|
419
1376
|
* public:
|
|
@@ -439,80 +1396,22 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
439
1396
|
* : public boost::true_type {};
|
|
440
1397
|
* } // namespace asio
|
|
441
1398
|
* ...
|
|
442
|
-
* boost::
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
|
|
446
|
-
template <typename SyncReadStream, typename Allocator, typename MatchCondition>
|
|
447
|
-
std::size_t read_until(SyncReadStream& s,
|
|
448
|
-
boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
|
|
449
|
-
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
450
|
-
|
|
451
|
-
/// Read data into a streambuf until a function object indicates a match.
|
|
452
|
-
/**
|
|
453
|
-
* This function is used to read data into the specified streambuf until a
|
|
454
|
-
* user-defined match condition function object, when applied to the data
|
|
455
|
-
* contained in the streambuf, indicates a successful match. The call will
|
|
456
|
-
* block until one of the following conditions is true:
|
|
457
|
-
*
|
|
458
|
-
* @li The match condition function object returns a std::pair where the second
|
|
459
|
-
* element evaluates to true.
|
|
460
|
-
*
|
|
461
|
-
* @li An error occurred.
|
|
462
|
-
*
|
|
463
|
-
* This operation is implemented in terms of zero or more calls to the stream's
|
|
464
|
-
* read_some function. If the match condition function object already indicates
|
|
465
|
-
* a match, the function returns immediately.
|
|
466
|
-
*
|
|
467
|
-
* @param s The stream from which the data is to be read. The type must support
|
|
468
|
-
* the SyncReadStream concept.
|
|
469
|
-
*
|
|
470
|
-
* @param b A streambuf object into which the data will be read.
|
|
471
|
-
*
|
|
472
|
-
* @param match_condition The function object to be called to determine whether
|
|
473
|
-
* a match exists. The signature of the function object must be:
|
|
474
|
-
* @code pair<iterator, bool> match_condition(iterator begin, iterator end);
|
|
475
|
-
* @endcode
|
|
476
|
-
* where @c iterator represents the type:
|
|
477
|
-
* @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
|
|
1399
|
+
* void handler(const boost::system::error_code& e, std::size_t size);
|
|
1400
|
+
* ...
|
|
1401
|
+
* std::string data;
|
|
1402
|
+
* boost::asio::async_read_until(s, data, match_char('a'), handler);
|
|
478
1403
|
* @endcode
|
|
479
|
-
* The iterator parameters @c begin and @c end define the range of bytes to be
|
|
480
|
-
* scanned to determine whether there is a match. The @c first member of the
|
|
481
|
-
* return value is an iterator marking one-past-the-end of the bytes that have
|
|
482
|
-
* been consumed by the match function. This iterator is used to calculate the
|
|
483
|
-
* @c begin parameter for any subsequent invocation of the match condition. The
|
|
484
|
-
* @c second member of the return value is true if a match has been found, false
|
|
485
|
-
* otherwise.
|
|
486
|
-
*
|
|
487
|
-
* @param ec Set to indicate what error occurred, if any.
|
|
488
|
-
*
|
|
489
|
-
* @returns The number of bytes in the streambuf's get area that have been fully
|
|
490
|
-
* consumed by the match function. Returns 0 if an error occurred.
|
|
491
|
-
*
|
|
492
|
-
* @note After a successful read_until operation, the streambuf may contain
|
|
493
|
-
* additional data beyond that which matched the function object. An application
|
|
494
|
-
* will typically leave that data in the streambuf for a subsequent
|
|
495
|
-
*
|
|
496
|
-
* @note The default implementation of the @c is_match_condition type trait
|
|
497
|
-
* evaluates to true for function pointers and function objects with a
|
|
498
|
-
* @c result_type typedef. It must be specialised for other user-defined
|
|
499
|
-
* function objects.
|
|
500
1404
|
*/
|
|
501
|
-
template <typename
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
1405
|
+
template <typename AsyncReadStream, typename DynamicBuffer,
|
|
1406
|
+
typename MatchCondition, typename ReadHandler>
|
|
1407
|
+
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
1408
|
+
void (boost::system::error_code, std::size_t))
|
|
1409
|
+
async_read_until(AsyncReadStream& s,
|
|
1410
|
+
BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
|
|
1411
|
+
MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
|
|
505
1412
|
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
506
1413
|
|
|
507
|
-
|
|
508
|
-
/**
|
|
509
|
-
* @defgroup async_read_until boost::asio::async_read_until
|
|
510
|
-
*
|
|
511
|
-
* @brief Start an asynchronous operation to read data into a streambuf until it
|
|
512
|
-
* contains a delimiter, matches a regular expression, or a function object
|
|
513
|
-
* indicates a match.
|
|
514
|
-
*/
|
|
515
|
-
/*@{*/
|
|
1414
|
+
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
516
1415
|
|
|
517
1416
|
/// Start an asynchronous operation to read data into a streambuf until it
|
|
518
1417
|
/// contains a specified delimiter.
|
|
@@ -558,7 +1457,7 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
558
1457
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
559
1458
|
* not, the handler will not be invoked from within this function. Invocation of
|
|
560
1459
|
* the handler will be performed in a manner equivalent to using
|
|
561
|
-
* boost::asio::
|
|
1460
|
+
* boost::asio::io_context::post().
|
|
562
1461
|
*
|
|
563
1462
|
* @note After a successful async_read_until operation, the streambuf may
|
|
564
1463
|
* contain additional data beyond the delimiter. An application will typically
|
|
@@ -585,8 +1484,8 @@ std::size_t read_until(SyncReadStream& s,
|
|
|
585
1484
|
* @c b contains the delimiter:
|
|
586
1485
|
* @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
|
|
587
1486
|
* The call to @c std::getline then extracts the data up to and including the
|
|
588
|
-
*
|
|
589
|
-
* @code { 'a', 'b', ..., 'c'
|
|
1487
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
1488
|
+
* @code { 'a', 'b', ..., 'c' } @endcode
|
|
590
1489
|
* The remaining data is left in the buffer @c b as follows:
|
|
591
1490
|
* @code { 'd', 'e', ... } @endcode
|
|
592
1491
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
@@ -643,7 +1542,7 @@ async_read_until(AsyncReadStream& s,
|
|
|
643
1542
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
644
1543
|
* not, the handler will not be invoked from within this function. Invocation of
|
|
645
1544
|
* the handler will be performed in a manner equivalent to using
|
|
646
|
-
* boost::asio::
|
|
1545
|
+
* boost::asio::io_context::post().
|
|
647
1546
|
*
|
|
648
1547
|
* @note After a successful async_read_until operation, the streambuf may
|
|
649
1548
|
* contain additional data beyond the delimiter. An application will typically
|
|
@@ -670,8 +1569,8 @@ async_read_until(AsyncReadStream& s,
|
|
|
670
1569
|
* @c b contains the delimiter:
|
|
671
1570
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
672
1571
|
* The call to @c std::getline then extracts the data up to and including the
|
|
673
|
-
*
|
|
674
|
-
* @code { 'a', 'b', ..., 'c', '\r'
|
|
1572
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
1573
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
675
1574
|
* The remaining data is left in the buffer @c b as follows:
|
|
676
1575
|
* @code { 'd', 'e', ... } @endcode
|
|
677
1576
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
@@ -681,7 +1580,8 @@ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
|
|
|
681
1580
|
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
|
682
1581
|
void (boost::system::error_code, std::size_t))
|
|
683
1582
|
async_read_until(AsyncReadStream& s,
|
|
684
|
-
boost::asio::basic_streambuf<Allocator>& b,
|
|
1583
|
+
boost::asio::basic_streambuf<Allocator>& b,
|
|
1584
|
+
BOOST_ASIO_STRING_VIEW_PARAM delim,
|
|
685
1585
|
BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
|
|
686
1586
|
|
|
687
1587
|
#if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
|
|
@@ -734,7 +1634,7 @@ async_read_until(AsyncReadStream& s,
|
|
|
734
1634
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
735
1635
|
* not, the handler will not be invoked from within this function. Invocation of
|
|
736
1636
|
* the handler will be performed in a manner equivalent to using
|
|
737
|
-
* boost::asio::
|
|
1637
|
+
* boost::asio::io_context::post().
|
|
738
1638
|
*
|
|
739
1639
|
* @note After a successful async_read_until operation, the streambuf may
|
|
740
1640
|
* contain additional data beyond that which matched the regular expression. An
|
|
@@ -762,8 +1662,8 @@ async_read_until(AsyncReadStream& s,
|
|
|
762
1662
|
* @c b contains the data which matched the regular expression:
|
|
763
1663
|
* @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
|
|
764
1664
|
* The call to @c std::getline then extracts the data up to and including the
|
|
765
|
-
*
|
|
766
|
-
* @code { 'a', 'b', ..., 'c', '\r'
|
|
1665
|
+
* newline (which is discarded), so that the string @c line contains:
|
|
1666
|
+
* @code { 'a', 'b', ..., 'c', '\r' } @endcode
|
|
767
1667
|
* The remaining data is left in the buffer @c b as follows:
|
|
768
1668
|
* @code { 'd', 'e', ... } @endcode
|
|
769
1669
|
* This data may be the start of a new line, to be extracted by a subsequent
|
|
@@ -836,7 +1736,7 @@ async_read_until(AsyncReadStream& s,
|
|
|
836
1736
|
* Regardless of whether the asynchronous operation completes immediately or
|
|
837
1737
|
* not, the handler will not be invoked from within this function. Invocation of
|
|
838
1738
|
* the handler will be performed in a manner equivalent to using
|
|
839
|
-
* boost::asio::
|
|
1739
|
+
* boost::asio::io_context::post().
|
|
840
1740
|
*
|
|
841
1741
|
* @note After a successful async_read_until operation, the streambuf may
|
|
842
1742
|
* contain additional data beyond that which matched the function object. An
|
|
@@ -911,6 +1811,9 @@ async_read_until(AsyncReadStream& s,
|
|
|
911
1811
|
MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
|
|
912
1812
|
typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
|
|
913
1813
|
|
|
1814
|
+
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
1815
|
+
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
|
1816
|
+
|
|
914
1817
|
/*@}*/
|
|
915
1818
|
|
|
916
1819
|
} // namespace asio
|
|
@@ -920,6 +1823,4 @@ async_read_until(AsyncReadStream& s,
|
|
|
920
1823
|
|
|
921
1824
|
#include <boost/asio/impl/read_until.hpp>
|
|
922
1825
|
|
|
923
|
-
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
924
|
-
|
|
925
1826
|
#endif // BOOST_ASIO_READ_UNTIL_HPP
|