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
|
// basic_socket_iostream.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)
|
|
@@ -22,7 +22,10 @@
|
|
|
22
22
|
#include <istream>
|
|
23
23
|
#include <ostream>
|
|
24
24
|
#include <boost/asio/basic_socket_streambuf.hpp>
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
27
|
+
# include <boost/asio/stream_socket_service.hpp>
|
|
28
|
+
#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
26
29
|
|
|
27
30
|
#if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
|
28
31
|
|
|
@@ -33,8 +36,8 @@
|
|
|
33
36
|
// explicit basic_socket_iostream(T1 x1, ..., Tn xn)
|
|
34
37
|
// : std::basic_iostream<char>(
|
|
35
38
|
// &this->detail::socket_iostream_base<
|
|
36
|
-
// Protocol
|
|
37
|
-
//
|
|
39
|
+
// Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
40
|
+
// WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_)
|
|
38
41
|
// {
|
|
39
42
|
// if (rdbuf()->connect(x1, ..., xn) == 0)
|
|
40
43
|
// this->setstate(std::ios_base::failbit);
|
|
@@ -43,14 +46,14 @@
|
|
|
43
46
|
|
|
44
47
|
# define BOOST_ASIO_PRIVATE_CTR_DEF(n) \
|
|
45
48
|
template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
|
|
46
|
-
explicit basic_socket_iostream(
|
|
49
|
+
explicit basic_socket_iostream(BOOST_ASIO_VARIADIC_BYVAL_PARAMS(n)) \
|
|
47
50
|
: std::basic_iostream<char>( \
|
|
48
51
|
&this->detail::socket_iostream_base< \
|
|
49
|
-
Protocol
|
|
50
|
-
|
|
52
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock, \
|
|
53
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_) \
|
|
51
54
|
{ \
|
|
52
55
|
this->setf(std::ios_base::unitbuf); \
|
|
53
|
-
if (rdbuf()->connect(
|
|
56
|
+
if (rdbuf()->connect(BOOST_ASIO_VARIADIC_BYVAL_ARGS(n)) == 0) \
|
|
54
57
|
this->setstate(std::ios_base::failbit); \
|
|
55
58
|
} \
|
|
56
59
|
/**/
|
|
@@ -66,9 +69,9 @@
|
|
|
66
69
|
|
|
67
70
|
# define BOOST_ASIO_PRIVATE_CONNECT_DEF(n) \
|
|
68
71
|
template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
|
|
69
|
-
void connect(
|
|
72
|
+
void connect(BOOST_ASIO_VARIADIC_BYVAL_PARAMS(n)) \
|
|
70
73
|
{ \
|
|
71
|
-
if (rdbuf()->connect(
|
|
74
|
+
if (rdbuf()->connect(BOOST_ASIO_VARIADIC_BYVAL_ARGS(n)) == 0) \
|
|
72
75
|
this->setstate(std::ios_base::failbit); \
|
|
73
76
|
} \
|
|
74
77
|
/**/
|
|
@@ -83,69 +86,169 @@ namespace detail {
|
|
|
83
86
|
|
|
84
87
|
// A separate base class is used to ensure that the streambuf is initialised
|
|
85
88
|
// prior to the basic_socket_iostream's basic_iostream base class.
|
|
86
|
-
template <typename Protocol
|
|
87
|
-
typename
|
|
89
|
+
template <typename Protocol BOOST_ASIO_SVC_TPARAM,
|
|
90
|
+
typename Clock, typename WaitTraits BOOST_ASIO_SVC_TPARAM1>
|
|
88
91
|
class socket_iostream_base
|
|
89
92
|
{
|
|
90
93
|
protected:
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
socket_iostream_base()
|
|
95
|
+
{
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
#if defined(BOOST_ASIO_HAS_MOVE)
|
|
99
|
+
socket_iostream_base(socket_iostream_base&& other)
|
|
100
|
+
: streambuf_(std::move(other.streambuf_))
|
|
101
|
+
{
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
socket_iostream_base(basic_stream_socket<Protocol> s)
|
|
105
|
+
: streambuf_(std::move(s))
|
|
106
|
+
{
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
socket_iostream_base& operator=(socket_iostream_base&& other)
|
|
110
|
+
{
|
|
111
|
+
streambuf_ = std::move(other.streambuf_);
|
|
112
|
+
return *this;
|
|
113
|
+
}
|
|
114
|
+
#endif // defined(BOOST_ASIO_HAS_MOVE)
|
|
115
|
+
|
|
116
|
+
basic_socket_streambuf<Protocol BOOST_ASIO_SVC_TARG,
|
|
117
|
+
Clock, WaitTraits BOOST_ASIO_SVC_TARG1> streambuf_;
|
|
93
118
|
};
|
|
94
119
|
|
|
95
|
-
}
|
|
120
|
+
} // namespace detail
|
|
121
|
+
|
|
122
|
+
#if !defined(BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL)
|
|
123
|
+
#define BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL
|
|
124
|
+
|
|
125
|
+
// Forward declaration with defaulted arguments.
|
|
126
|
+
template <typename Protocol
|
|
127
|
+
BOOST_ASIO_SVC_TPARAM_DEF1(= stream_socket_service<Protocol>),
|
|
128
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
129
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
130
|
+
typename Clock = boost::posix_time::ptime,
|
|
131
|
+
typename WaitTraits = time_traits<Clock>
|
|
132
|
+
BOOST_ASIO_SVC_TPARAM1_DEF2(= deadline_timer_service<Clock, WaitTraits>)>
|
|
133
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
134
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
135
|
+
typename Clock = chrono::steady_clock,
|
|
136
|
+
typename WaitTraits = wait_traits<Clock>
|
|
137
|
+
BOOST_ASIO_SVC_TPARAM1_DEF1(= steady_timer::service_type)>
|
|
138
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
139
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
140
|
+
class basic_socket_iostream;
|
|
141
|
+
|
|
142
|
+
#endif // !defined(BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL)
|
|
96
143
|
|
|
97
144
|
/// Iostream interface for a socket.
|
|
145
|
+
#if defined(GENERATING_DOCUMENTATION)
|
|
98
146
|
template <typename Protocol,
|
|
99
|
-
typename
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
typename
|
|
104
|
-
|
|
105
|
-
#else
|
|
106
|
-
typename Time = steady_timer::clock_type,
|
|
107
|
-
typename TimeTraits = steady_timer::traits_type,
|
|
108
|
-
typename TimerService = steady_timer::service_type>
|
|
109
|
-
#endif
|
|
147
|
+
typename Clock = chrono::steady_clock,
|
|
148
|
+
typename WaitTraits = wait_traits<Clock> >
|
|
149
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
|
150
|
+
template <typename Protocol BOOST_ASIO_SVC_TPARAM,
|
|
151
|
+
typename Clock, typename WaitTraits BOOST_ASIO_SVC_TPARAM1>
|
|
152
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
|
110
153
|
class basic_socket_iostream
|
|
111
|
-
: private detail::socket_iostream_base<Protocol
|
|
112
|
-
|
|
154
|
+
: private detail::socket_iostream_base<Protocol
|
|
155
|
+
BOOST_ASIO_SVC_TARG, Clock, WaitTraits BOOST_ASIO_SVC_TARG1>,
|
|
113
156
|
public std::basic_iostream<char>
|
|
114
157
|
{
|
|
115
158
|
private:
|
|
116
159
|
// These typedefs are intended keep this class's implementation independent
|
|
117
|
-
// of whether it's using Boost.
|
|
118
|
-
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
160
|
+
// of whether it's using Boost.DateClock, Boost.Chrono or std::chrono.
|
|
161
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
162
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
163
|
+
typedef WaitTraits traits_helper;
|
|
164
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
165
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
166
|
+
typedef detail::chrono_time_traits<Clock, WaitTraits> traits_helper;
|
|
167
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
168
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
123
169
|
|
|
124
170
|
public:
|
|
171
|
+
/// The protocol type.
|
|
172
|
+
typedef Protocol protocol_type;
|
|
173
|
+
|
|
125
174
|
/// The endpoint type.
|
|
126
175
|
typedef typename Protocol::endpoint endpoint_type;
|
|
127
176
|
|
|
177
|
+
/// The clock type.
|
|
178
|
+
typedef Clock clock_type;
|
|
179
|
+
|
|
128
180
|
#if defined(GENERATING_DOCUMENTATION)
|
|
181
|
+
/// (Deprecated: Use time_point.) The time type.
|
|
182
|
+
typedef typename WaitTraits::time_type time_type;
|
|
183
|
+
|
|
129
184
|
/// The time type.
|
|
130
|
-
typedef typename
|
|
185
|
+
typedef typename WaitTraits::time_point time_point;
|
|
186
|
+
|
|
187
|
+
/// (Deprecated: Use duration.) The duration type.
|
|
188
|
+
typedef typename WaitTraits::duration_type duration_type;
|
|
131
189
|
|
|
132
190
|
/// The duration type.
|
|
133
|
-
typedef typename
|
|
191
|
+
typedef typename WaitTraits::duration duration;
|
|
134
192
|
#else
|
|
193
|
+
# if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
135
194
|
typedef typename traits_helper::time_type time_type;
|
|
136
195
|
typedef typename traits_helper::duration_type duration_type;
|
|
196
|
+
# endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
197
|
+
typedef typename traits_helper::time_type time_point;
|
|
198
|
+
typedef typename traits_helper::duration_type duration;
|
|
137
199
|
#endif
|
|
138
200
|
|
|
139
201
|
/// Construct a basic_socket_iostream without establishing a connection.
|
|
140
202
|
basic_socket_iostream()
|
|
141
203
|
: std::basic_iostream<char>(
|
|
142
204
|
&this->detail::socket_iostream_base<
|
|
143
|
-
Protocol
|
|
144
|
-
|
|
205
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
206
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_)
|
|
207
|
+
{
|
|
208
|
+
this->setf(std::ios_base::unitbuf);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
|
212
|
+
/// Construct a basic_socket_iostream from the supplied socket.
|
|
213
|
+
explicit basic_socket_iostream(basic_stream_socket<protocol_type> s)
|
|
214
|
+
: detail::socket_iostream_base<
|
|
215
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
216
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>(std::move(s)),
|
|
217
|
+
std::basic_iostream<char>(
|
|
218
|
+
&this->detail::socket_iostream_base<
|
|
219
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
220
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_)
|
|
145
221
|
{
|
|
146
222
|
this->setf(std::ios_base::unitbuf);
|
|
147
223
|
}
|
|
148
224
|
|
|
225
|
+
#if defined(BOOST_ASIO_HAS_STD_IOSTREAM_MOVE) \
|
|
226
|
+
|| defined(GENERATING_DOCUMENTATION)
|
|
227
|
+
/// Move-construct a basic_socket_iostream from another.
|
|
228
|
+
basic_socket_iostream(basic_socket_iostream&& other)
|
|
229
|
+
: detail::socket_iostream_base<
|
|
230
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
231
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>(std::move(other)),
|
|
232
|
+
std::basic_iostream<char>(std::move(other))
|
|
233
|
+
{
|
|
234
|
+
this->set_rdbuf(&this->detail::socket_iostream_base<
|
|
235
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
236
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/// Move-assign a basic_socket_iostream from another.
|
|
240
|
+
basic_socket_iostream& operator=(basic_socket_iostream&& other)
|
|
241
|
+
{
|
|
242
|
+
std::basic_iostream<char>::operator=(std::move(other));
|
|
243
|
+
detail::socket_iostream_base<
|
|
244
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
245
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::operator=(std::move(other));
|
|
246
|
+
return *this;
|
|
247
|
+
}
|
|
248
|
+
#endif // defined(BOOST_ASIO_HAS_STD_IOSTREAM_MOVE)
|
|
249
|
+
// || defined(GENERATING_DOCUMENTATION)
|
|
250
|
+
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
|
251
|
+
|
|
149
252
|
#if defined(GENERATING_DOCUMENTATION)
|
|
150
253
|
/// Establish a connection to an endpoint corresponding to a resolver query.
|
|
151
254
|
/**
|
|
@@ -160,8 +263,8 @@ public:
|
|
|
160
263
|
explicit basic_socket_iostream(T... x)
|
|
161
264
|
: std::basic_iostream<char>(
|
|
162
265
|
&this->detail::socket_iostream_base<
|
|
163
|
-
Protocol
|
|
164
|
-
|
|
266
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
267
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_)
|
|
165
268
|
{
|
|
166
269
|
this->setf(std::ios_base::unitbuf);
|
|
167
270
|
if (rdbuf()->connect(x...) == 0)
|
|
@@ -199,14 +302,20 @@ public:
|
|
|
199
302
|
}
|
|
200
303
|
|
|
201
304
|
/// Return a pointer to the underlying streambuf.
|
|
202
|
-
basic_socket_streambuf<Protocol
|
|
203
|
-
|
|
305
|
+
basic_socket_streambuf<Protocol BOOST_ASIO_SVC_TARG,
|
|
306
|
+
Clock, WaitTraits BOOST_ASIO_SVC_TARG1>* rdbuf() const
|
|
204
307
|
{
|
|
205
|
-
return const_cast<basic_socket_streambuf<Protocol
|
|
206
|
-
|
|
308
|
+
return const_cast<basic_socket_streambuf<Protocol BOOST_ASIO_SVC_TARG,
|
|
309
|
+
Clock, WaitTraits BOOST_ASIO_SVC_TARG1>*>(
|
|
207
310
|
&this->detail::socket_iostream_base<
|
|
208
|
-
Protocol
|
|
209
|
-
|
|
311
|
+
Protocol BOOST_ASIO_SVC_TARG, Clock,
|
|
312
|
+
WaitTraits BOOST_ASIO_SVC_TARG1>::streambuf_);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/// Get a reference to the underlying socket.
|
|
316
|
+
basic_socket<Protocol BOOST_ASIO_SVC_TARG>& socket()
|
|
317
|
+
{
|
|
318
|
+
return rdbuf()->socket();
|
|
210
319
|
}
|
|
211
320
|
|
|
212
321
|
/// Get the last error associated with the stream.
|
|
@@ -223,17 +332,29 @@ public:
|
|
|
223
332
|
*/
|
|
224
333
|
const boost::system::error_code& error() const
|
|
225
334
|
{
|
|
226
|
-
return rdbuf()->
|
|
335
|
+
return rdbuf()->error();
|
|
227
336
|
}
|
|
228
337
|
|
|
229
|
-
|
|
338
|
+
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
339
|
+
/// (Deprecated: Use expiry().) Get the stream's expiry time as an absolute
|
|
340
|
+
/// time.
|
|
230
341
|
/**
|
|
231
342
|
* @return An absolute time value representing the stream's expiry time.
|
|
232
343
|
*/
|
|
233
|
-
|
|
344
|
+
time_point expires_at() const
|
|
234
345
|
{
|
|
235
346
|
return rdbuf()->expires_at();
|
|
236
347
|
}
|
|
348
|
+
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
349
|
+
|
|
350
|
+
/// Get the stream's expiry time as an absolute time.
|
|
351
|
+
/**
|
|
352
|
+
* @return An absolute time value representing the stream's expiry time.
|
|
353
|
+
*/
|
|
354
|
+
time_point expiry() const
|
|
355
|
+
{
|
|
356
|
+
return rdbuf()->expiry();
|
|
357
|
+
}
|
|
237
358
|
|
|
238
359
|
/// Set the stream's expiry time as an absolute time.
|
|
239
360
|
/**
|
|
@@ -244,21 +365,37 @@ public:
|
|
|
244
365
|
*
|
|
245
366
|
* @param expiry_time The expiry time to be used for the stream.
|
|
246
367
|
*/
|
|
247
|
-
void expires_at(const
|
|
368
|
+
void expires_at(const time_point& expiry_time)
|
|
248
369
|
{
|
|
249
370
|
rdbuf()->expires_at(expiry_time);
|
|
250
371
|
}
|
|
251
372
|
|
|
252
|
-
///
|
|
373
|
+
/// Set the stream's expiry time relative to now.
|
|
374
|
+
/**
|
|
375
|
+
* This function sets the expiry time associated with the stream. Stream
|
|
376
|
+
* operations performed after this time (where the operations cannot be
|
|
377
|
+
* completed using the internal buffers) will fail with the error
|
|
378
|
+
* boost::asio::error::operation_aborted.
|
|
379
|
+
*
|
|
380
|
+
* @param expiry_time The expiry time to be used for the timer.
|
|
381
|
+
*/
|
|
382
|
+
void expires_after(const duration& expiry_time)
|
|
383
|
+
{
|
|
384
|
+
rdbuf()->expires_after(expiry_time);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
388
|
+
/// (Deprecated: Use expiry().) Get the stream's expiry time relative to now.
|
|
253
389
|
/**
|
|
254
390
|
* @return A relative time value representing the stream's expiry time.
|
|
255
391
|
*/
|
|
256
|
-
|
|
392
|
+
duration expires_from_now() const
|
|
257
393
|
{
|
|
258
394
|
return rdbuf()->expires_from_now();
|
|
259
395
|
}
|
|
260
396
|
|
|
261
|
-
/// Set the stream's expiry time relative
|
|
397
|
+
/// (Deprecated: Use expires_after().) Set the stream's expiry time relative
|
|
398
|
+
/// to now.
|
|
262
399
|
/**
|
|
263
400
|
* This function sets the expiry time associated with the stream. Stream
|
|
264
401
|
* operations performed after this time (where the operations cannot be
|
|
@@ -267,10 +404,17 @@ public:
|
|
|
267
404
|
*
|
|
268
405
|
* @param expiry_time The expiry time to be used for the timer.
|
|
269
406
|
*/
|
|
270
|
-
void expires_from_now(const
|
|
407
|
+
void expires_from_now(const duration& expiry_time)
|
|
271
408
|
{
|
|
272
409
|
rdbuf()->expires_from_now(expiry_time);
|
|
273
410
|
}
|
|
411
|
+
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
412
|
+
|
|
413
|
+
private:
|
|
414
|
+
// Disallow copying and assignment.
|
|
415
|
+
basic_socket_iostream(const basic_socket_iostream&) BOOST_ASIO_DELETED;
|
|
416
|
+
basic_socket_iostream& operator=(
|
|
417
|
+
const basic_socket_iostream&) BOOST_ASIO_DELETED;
|
|
274
418
|
};
|
|
275
419
|
|
|
276
420
|
} // namespace asio
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// basic_socket_streambuf.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)
|
|
@@ -20,18 +20,30 @@
|
|
|
20
20
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
|
21
21
|
|
|
22
22
|
#include <streambuf>
|
|
23
|
+
#include <vector>
|
|
23
24
|
#include <boost/asio/basic_socket.hpp>
|
|
24
|
-
#include <boost/asio/
|
|
25
|
-
#include <boost/asio/detail/
|
|
25
|
+
#include <boost/asio/basic_stream_socket.hpp>
|
|
26
|
+
#include <boost/asio/detail/buffer_sequence_adapter.hpp>
|
|
27
|
+
#include <boost/asio/detail/memory.hpp>
|
|
26
28
|
#include <boost/asio/detail/throw_error.hpp>
|
|
27
|
-
#include <boost/asio/
|
|
28
|
-
#include <boost/asio/stream_socket_service.hpp>
|
|
29
|
+
#include <boost/asio/io_context.hpp>
|
|
29
30
|
|
|
30
|
-
#if defined(
|
|
31
|
-
# include <boost/asio/
|
|
32
|
-
#
|
|
31
|
+
#if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
32
|
+
# include <boost/asio/stream_socket_service.hpp>
|
|
33
|
+
#endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
34
|
+
|
|
35
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
36
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
37
|
+
# if defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
38
|
+
# include <boost/asio/deadline_timer_service.hpp>
|
|
39
|
+
# else // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
40
|
+
# include <boost/asio/detail/deadline_timer_service.hpp>
|
|
41
|
+
# endif // defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
42
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
43
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
33
44
|
# include <boost/asio/steady_timer.hpp>
|
|
34
|
-
#endif
|
|
45
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
46
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
35
47
|
|
|
36
48
|
#if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
|
37
49
|
|
|
@@ -39,113 +51,220 @@
|
|
|
39
51
|
|
|
40
52
|
// A macro that should expand to:
|
|
41
53
|
// template <typename T1, ..., typename Tn>
|
|
42
|
-
// basic_socket_streambuf
|
|
43
|
-
// Time, TimeTraits, TimerService>* connect(
|
|
44
|
-
// T1 x1, ..., Tn xn)
|
|
54
|
+
// basic_socket_streambuf* connect(T1 x1, ..., Tn xn)
|
|
45
55
|
// {
|
|
46
56
|
// init_buffers();
|
|
47
|
-
// this->basic_socket<Protocol, StreamSocketService>::close(ec_);
|
|
48
57
|
// typedef typename Protocol::resolver resolver_type;
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
58
|
+
// resolver_type resolver(socket().get_executor().context());
|
|
59
|
+
// connect_to_endpoints(
|
|
60
|
+
// resolver.resolve(x1, ..., xn, ec_));
|
|
52
61
|
// return !ec_ ? this : 0;
|
|
53
62
|
// }
|
|
54
63
|
// This macro should only persist within this file.
|
|
55
64
|
|
|
56
65
|
# define BOOST_ASIO_PRIVATE_CONNECT_DEF(n) \
|
|
57
66
|
template <BOOST_ASIO_VARIADIC_TPARAMS(n)> \
|
|
58
|
-
basic_socket_streambuf
|
|
59
|
-
Time, TimeTraits, TimerService>* connect(BOOST_ASIO_VARIADIC_PARAMS(n)) \
|
|
67
|
+
basic_socket_streambuf* connect(BOOST_ASIO_VARIADIC_BYVAL_PARAMS(n)) \
|
|
60
68
|
{ \
|
|
61
69
|
init_buffers(); \
|
|
62
|
-
this->basic_socket<Protocol, StreamSocketService>::close(ec_); \
|
|
63
70
|
typedef typename Protocol::resolver resolver_type; \
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
resolver_type resolver(socket().get_executor().context()); \
|
|
72
|
+
connect_to_endpoints( \
|
|
73
|
+
resolver.resolve(BOOST_ASIO_VARIADIC_BYVAL_ARGS(n), ec_)); \
|
|
67
74
|
return !ec_ ? this : 0; \
|
|
68
75
|
} \
|
|
69
76
|
/**/
|
|
70
77
|
|
|
71
78
|
#endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
|
72
79
|
|
|
80
|
+
#if !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
81
|
+
# define BOOST_ASIO_SVC_T1 detail::deadline_timer_service<traits_helper>
|
|
82
|
+
#endif // !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
83
|
+
|
|
73
84
|
#include <boost/asio/detail/push_options.hpp>
|
|
74
85
|
|
|
75
86
|
namespace boost {
|
|
76
87
|
namespace asio {
|
|
77
88
|
namespace detail {
|
|
78
89
|
|
|
79
|
-
// A separate base class is used to ensure that the
|
|
80
|
-
// prior to the basic_socket_streambuf's basic_socket base class.
|
|
81
|
-
class
|
|
90
|
+
// A separate base class is used to ensure that the io_context member is
|
|
91
|
+
// initialised prior to the basic_socket_streambuf's basic_socket base class.
|
|
92
|
+
class socket_streambuf_io_context
|
|
93
|
+
{
|
|
94
|
+
protected:
|
|
95
|
+
socket_streambuf_io_context(io_context* ctx)
|
|
96
|
+
: default_io_context_(ctx)
|
|
97
|
+
{
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
shared_ptr<io_context> default_io_context_;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// A separate base class is used to ensure that the dynamically allocated
|
|
104
|
+
// buffers are constructed prior to the basic_socket_streambuf's basic_socket
|
|
105
|
+
// base class. This makes moving the socket is the last potentially throwing
|
|
106
|
+
// step in the streambuf's move constructor, giving the constructor a strong
|
|
107
|
+
// exception safety guarantee.
|
|
108
|
+
class socket_streambuf_buffers
|
|
82
109
|
{
|
|
83
110
|
protected:
|
|
84
|
-
|
|
111
|
+
socket_streambuf_buffers()
|
|
112
|
+
: get_buffer_(buffer_size),
|
|
113
|
+
put_buffer_(buffer_size)
|
|
114
|
+
{
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
enum { buffer_size = 512 };
|
|
118
|
+
std::vector<char> get_buffer_;
|
|
119
|
+
std::vector<char> put_buffer_;
|
|
85
120
|
};
|
|
86
121
|
|
|
87
122
|
} // namespace detail
|
|
88
123
|
|
|
124
|
+
#if !defined(BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL)
|
|
125
|
+
#define BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL
|
|
126
|
+
|
|
127
|
+
// Forward declaration with defaulted arguments.
|
|
128
|
+
template <typename Protocol
|
|
129
|
+
BOOST_ASIO_SVC_TPARAM_DEF1(= stream_socket_service<Protocol>),
|
|
130
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
131
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
132
|
+
typename Clock = boost::posix_time::ptime,
|
|
133
|
+
typename WaitTraits = time_traits<Clock>
|
|
134
|
+
BOOST_ASIO_SVC_TPARAM1_DEF2(= deadline_timer_service<Clock, WaitTraits>)>
|
|
135
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
136
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
137
|
+
typename Clock = chrono::steady_clock,
|
|
138
|
+
typename WaitTraits = wait_traits<Clock>
|
|
139
|
+
BOOST_ASIO_SVC_TPARAM1_DEF1(= steady_timer::service_type)>
|
|
140
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
141
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
142
|
+
class basic_socket_streambuf;
|
|
143
|
+
|
|
144
|
+
#endif // !defined(BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL)
|
|
145
|
+
|
|
89
146
|
/// Iostream streambuf for a socket.
|
|
147
|
+
#if defined(GENERATING_DOCUMENTATION)
|
|
90
148
|
template <typename Protocol,
|
|
91
|
-
typename
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
typename
|
|
96
|
-
|
|
97
|
-
#else
|
|
98
|
-
typename Time = steady_timer::clock_type,
|
|
99
|
-
typename TimeTraits = steady_timer::traits_type,
|
|
100
|
-
typename TimerService = steady_timer::service_type>
|
|
101
|
-
#endif
|
|
149
|
+
typename Clock = chrono::steady_clock,
|
|
150
|
+
typename WaitTraits = wait_traits<Clock> >
|
|
151
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
|
152
|
+
template <typename Protocol BOOST_ASIO_SVC_TPARAM,
|
|
153
|
+
typename Clock, typename WaitTraits BOOST_ASIO_SVC_TPARAM1>
|
|
154
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
|
102
155
|
class basic_socket_streambuf
|
|
103
156
|
: public std::streambuf,
|
|
104
|
-
private detail::
|
|
105
|
-
|
|
157
|
+
private detail::socket_streambuf_io_context,
|
|
158
|
+
private detail::socket_streambuf_buffers,
|
|
159
|
+
#if defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
|
|
160
|
+
private basic_socket<Protocol BOOST_ASIO_SVC_TARG>
|
|
161
|
+
#else // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
|
|
162
|
+
public basic_socket<Protocol BOOST_ASIO_SVC_TARG>
|
|
163
|
+
#endif // defined(BOOST_ASIO_NO_DEPRECATED) || defined(GENERATING_DOCUMENTATION)
|
|
106
164
|
{
|
|
107
165
|
private:
|
|
108
166
|
// These typedefs are intended keep this class's implementation independent
|
|
109
|
-
// of whether it's using Boost.
|
|
110
|
-
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
167
|
+
// of whether it's using Boost.DateClock, Boost.Chrono or std::chrono.
|
|
168
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
169
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
170
|
+
typedef WaitTraits traits_helper;
|
|
171
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
172
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
173
|
+
typedef detail::chrono_time_traits<Clock, WaitTraits> traits_helper;
|
|
174
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
175
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
115
176
|
|
|
116
177
|
public:
|
|
178
|
+
/// The protocol type.
|
|
179
|
+
typedef Protocol protocol_type;
|
|
180
|
+
|
|
117
181
|
/// The endpoint type.
|
|
118
182
|
typedef typename Protocol::endpoint endpoint_type;
|
|
119
183
|
|
|
184
|
+
/// The clock type.
|
|
185
|
+
typedef Clock clock_type;
|
|
186
|
+
|
|
120
187
|
#if defined(GENERATING_DOCUMENTATION)
|
|
188
|
+
/// (Deprecated: Use time_point.) The time type.
|
|
189
|
+
typedef typename WaitTraits::time_type time_type;
|
|
190
|
+
|
|
121
191
|
/// The time type.
|
|
122
|
-
typedef typename
|
|
192
|
+
typedef typename WaitTraits::time_point time_point;
|
|
193
|
+
|
|
194
|
+
/// (Deprecated: Use duration.) The duration type.
|
|
195
|
+
typedef typename WaitTraits::duration_type duration_type;
|
|
123
196
|
|
|
124
197
|
/// The duration type.
|
|
125
|
-
typedef typename
|
|
198
|
+
typedef typename WaitTraits::duration duration;
|
|
126
199
|
#else
|
|
200
|
+
# if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
127
201
|
typedef typename traits_helper::time_type time_type;
|
|
128
202
|
typedef typename traits_helper::duration_type duration_type;
|
|
203
|
+
# endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
204
|
+
typedef typename traits_helper::time_type time_point;
|
|
205
|
+
typedef typename traits_helper::duration_type duration;
|
|
129
206
|
#endif
|
|
130
207
|
|
|
131
208
|
/// Construct a basic_socket_streambuf without establishing a connection.
|
|
132
209
|
basic_socket_streambuf()
|
|
133
|
-
:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
timer_service_(0),
|
|
137
|
-
timer_state_(no_timer)
|
|
210
|
+
: detail::socket_streambuf_io_context(new io_context),
|
|
211
|
+
basic_socket<Protocol BOOST_ASIO_SVC_TARG>(*default_io_context_),
|
|
212
|
+
expiry_time_(max_expiry_time())
|
|
138
213
|
{
|
|
139
214
|
init_buffers();
|
|
140
215
|
}
|
|
141
216
|
|
|
217
|
+
#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
|
218
|
+
/// Construct a basic_socket_streambuf from the supplied socket.
|
|
219
|
+
explicit basic_socket_streambuf(basic_stream_socket<protocol_type> s)
|
|
220
|
+
: detail::socket_streambuf_io_context(0),
|
|
221
|
+
basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(s)),
|
|
222
|
+
expiry_time_(max_expiry_time())
|
|
223
|
+
{
|
|
224
|
+
init_buffers();
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/// Move-construct a basic_socket_streambuf from another.
|
|
228
|
+
basic_socket_streambuf(basic_socket_streambuf&& other)
|
|
229
|
+
: detail::socket_streambuf_io_context(other),
|
|
230
|
+
basic_socket<Protocol BOOST_ASIO_SVC_TARG>(std::move(other.socket())),
|
|
231
|
+
ec_(other.ec_),
|
|
232
|
+
expiry_time_(other.expiry_time_)
|
|
233
|
+
{
|
|
234
|
+
get_buffer_.swap(other.get_buffer_);
|
|
235
|
+
put_buffer_.swap(other.put_buffer_);
|
|
236
|
+
setg(other.eback(), other.gptr(), other.egptr());
|
|
237
|
+
setp(other.pptr(), other.epptr());
|
|
238
|
+
other.ec_ = boost::system::error_code();
|
|
239
|
+
other.expiry_time_ = max_expiry_time();
|
|
240
|
+
other.init_buffers();
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/// Move-assign a basic_socket_streambuf from another.
|
|
244
|
+
basic_socket_streambuf& operator=(basic_socket_streambuf&& other)
|
|
245
|
+
{
|
|
246
|
+
this->close();
|
|
247
|
+
socket() = std::move(other.socket());
|
|
248
|
+
detail::socket_streambuf_io_context::operator=(other);
|
|
249
|
+
ec_ = other.ec_;
|
|
250
|
+
expiry_time_ = other.expiry_time_;
|
|
251
|
+
get_buffer_.swap(other.get_buffer_);
|
|
252
|
+
put_buffer_.swap(other.put_buffer_);
|
|
253
|
+
setg(other.eback(), other.gptr(), other.egptr());
|
|
254
|
+
setp(other.pptr(), other.epptr());
|
|
255
|
+
other.ec_ = boost::system::error_code();
|
|
256
|
+
other.expiry_time_ = max_expiry_time();
|
|
257
|
+
other.put_buffer_.resize(buffer_size);
|
|
258
|
+
other.init_buffers();
|
|
259
|
+
return *this;
|
|
260
|
+
}
|
|
261
|
+
#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
|
|
262
|
+
|
|
142
263
|
/// Destructor flushes buffered data.
|
|
143
264
|
virtual ~basic_socket_streambuf()
|
|
144
265
|
{
|
|
145
266
|
if (pptr() != pbase())
|
|
146
267
|
overflow(traits_type::eof());
|
|
147
|
-
|
|
148
|
-
destroy_timer();
|
|
149
268
|
}
|
|
150
269
|
|
|
151
270
|
/// Establish a connection.
|
|
@@ -155,29 +274,11 @@ public:
|
|
|
155
274
|
* @return \c this if a connection was successfully established, a null
|
|
156
275
|
* pointer otherwise.
|
|
157
276
|
*/
|
|
158
|
-
basic_socket_streambuf
|
|
159
|
-
Time, TimeTraits, TimerService>* connect(
|
|
160
|
-
const endpoint_type& endpoint)
|
|
277
|
+
basic_socket_streambuf* connect(const endpoint_type& endpoint)
|
|
161
278
|
{
|
|
162
279
|
init_buffers();
|
|
163
|
-
|
|
164
|
-
this->
|
|
165
|
-
|
|
166
|
-
if (timer_state_ == timer_has_expired)
|
|
167
|
-
{
|
|
168
|
-
ec_ = boost::asio::error::operation_aborted;
|
|
169
|
-
return 0;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
io_handler handler = { this };
|
|
173
|
-
this->basic_socket<Protocol, StreamSocketService>::async_connect(
|
|
174
|
-
endpoint, handler);
|
|
175
|
-
|
|
176
|
-
ec_ = boost::asio::error::would_block;
|
|
177
|
-
this->get_service().get_io_service().reset();
|
|
178
|
-
do this->get_service().get_io_service().run_one();
|
|
179
|
-
while (ec_ == boost::asio::error::would_block);
|
|
180
|
-
|
|
280
|
+
ec_ = boost::system::error_code();
|
|
281
|
+
this->connect_to_endpoints(&endpoint, &endpoint + 1);
|
|
181
282
|
return !ec_ ? this : 0;
|
|
182
283
|
}
|
|
183
284
|
|
|
@@ -192,19 +293,15 @@ public:
|
|
|
192
293
|
* pointer otherwise.
|
|
193
294
|
*/
|
|
194
295
|
template <typename T1, ..., typename TN>
|
|
195
|
-
basic_socket_streambuf
|
|
196
|
-
T1 t1, ..., TN tn);
|
|
296
|
+
basic_socket_streambuf* connect(T1 t1, ..., TN tn);
|
|
197
297
|
#elif defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
|
198
298
|
template <typename... T>
|
|
199
|
-
basic_socket_streambuf
|
|
200
|
-
Time, TimeTraits, TimerService>* connect(T... x)
|
|
299
|
+
basic_socket_streambuf* connect(T... x)
|
|
201
300
|
{
|
|
202
301
|
init_buffers();
|
|
203
|
-
this->basic_socket<Protocol, StreamSocketService>::close(ec_);
|
|
204
302
|
typedef typename Protocol::resolver resolver_type;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
resolve_and_connect(query);
|
|
303
|
+
resolver_type resolver(socket().get_executor().context());
|
|
304
|
+
connect_to_endpoints(resolver.resolve(x..., ec_));
|
|
208
305
|
return !ec_ ? this : 0;
|
|
209
306
|
}
|
|
210
307
|
#else
|
|
@@ -216,17 +313,34 @@ public:
|
|
|
216
313
|
* @return \c this if a connection was successfully established, a null
|
|
217
314
|
* pointer otherwise.
|
|
218
315
|
*/
|
|
219
|
-
basic_socket_streambuf
|
|
220
|
-
Time, TimeTraits, TimerService>* close()
|
|
316
|
+
basic_socket_streambuf* close()
|
|
221
317
|
{
|
|
222
318
|
sync();
|
|
223
|
-
|
|
319
|
+
socket().close(ec_);
|
|
224
320
|
if (!ec_)
|
|
225
321
|
init_buffers();
|
|
226
322
|
return !ec_ ? this : 0;
|
|
227
323
|
}
|
|
228
324
|
|
|
325
|
+
/// Get a reference to the underlying socket.
|
|
326
|
+
basic_socket<Protocol BOOST_ASIO_SVC_TARG>& socket()
|
|
327
|
+
{
|
|
328
|
+
return *this;
|
|
329
|
+
}
|
|
330
|
+
|
|
229
331
|
/// Get the last error associated with the stream buffer.
|
|
332
|
+
/**
|
|
333
|
+
* @return An \c error_code corresponding to the last error from the stream
|
|
334
|
+
* buffer.
|
|
335
|
+
*/
|
|
336
|
+
const boost::system::error_code& error() const
|
|
337
|
+
{
|
|
338
|
+
return ec_;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
342
|
+
/// (Deprecated: Use error().) Get the last error associated with the stream
|
|
343
|
+
/// buffer.
|
|
230
344
|
/**
|
|
231
345
|
* @return An \c error_code corresponding to the last error from the stream
|
|
232
346
|
* buffer.
|
|
@@ -236,16 +350,26 @@ public:
|
|
|
236
350
|
return error();
|
|
237
351
|
}
|
|
238
352
|
|
|
353
|
+
/// (Deprecated: Use expiry().) Get the stream buffer's expiry time as an
|
|
354
|
+
/// absolute time.
|
|
355
|
+
/**
|
|
356
|
+
* @return An absolute time value representing the stream buffer's expiry
|
|
357
|
+
* time.
|
|
358
|
+
*/
|
|
359
|
+
time_point expires_at() const
|
|
360
|
+
{
|
|
361
|
+
return expiry_time_;
|
|
362
|
+
}
|
|
363
|
+
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
364
|
+
|
|
239
365
|
/// Get the stream buffer's expiry time as an absolute time.
|
|
240
366
|
/**
|
|
241
367
|
* @return An absolute time value representing the stream buffer's expiry
|
|
242
368
|
* time.
|
|
243
369
|
*/
|
|
244
|
-
|
|
370
|
+
time_point expiry() const
|
|
245
371
|
{
|
|
246
|
-
return
|
|
247
|
-
? timer_service_->expires_at(timer_implementation_)
|
|
248
|
-
: time_type();
|
|
372
|
+
return expiry_time_;
|
|
249
373
|
}
|
|
250
374
|
|
|
251
375
|
/// Set the stream buffer's expiry time as an absolute time.
|
|
@@ -257,27 +381,38 @@ public:
|
|
|
257
381
|
*
|
|
258
382
|
* @param expiry_time The expiry time to be used for the stream.
|
|
259
383
|
*/
|
|
260
|
-
void expires_at(const
|
|
384
|
+
void expires_at(const time_point& expiry_time)
|
|
261
385
|
{
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
boost::system::error_code ec;
|
|
265
|
-
timer_service_->expires_at(timer_implementation_, expiry_time, ec);
|
|
266
|
-
boost::asio::detail::throw_error(ec, "expires_at");
|
|
386
|
+
expiry_time_ = expiry_time;
|
|
387
|
+
}
|
|
267
388
|
|
|
268
|
-
|
|
389
|
+
/// Set the stream buffer's expiry time relative to now.
|
|
390
|
+
/**
|
|
391
|
+
* This function sets the expiry time associated with the stream. Stream
|
|
392
|
+
* operations performed after this time (where the operations cannot be
|
|
393
|
+
* completed using the internal buffers) will fail with the error
|
|
394
|
+
* boost::asio::error::operation_aborted.
|
|
395
|
+
*
|
|
396
|
+
* @param expiry_time The expiry time to be used for the timer.
|
|
397
|
+
*/
|
|
398
|
+
void expires_after(const duration& expiry_time)
|
|
399
|
+
{
|
|
400
|
+
expiry_time_ = traits_helper::add(traits_helper::now(), expiry_time);
|
|
269
401
|
}
|
|
270
402
|
|
|
271
|
-
|
|
403
|
+
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
404
|
+
/// (Deprecated: Use expiry().) Get the stream buffer's expiry time relative
|
|
405
|
+
/// to now.
|
|
272
406
|
/**
|
|
273
407
|
* @return A relative time value representing the stream buffer's expiry time.
|
|
274
408
|
*/
|
|
275
|
-
|
|
409
|
+
duration expires_from_now() const
|
|
276
410
|
{
|
|
277
411
|
return traits_helper::subtract(expires_at(), traits_helper::now());
|
|
278
412
|
}
|
|
279
413
|
|
|
280
|
-
/// Set the stream buffer's expiry time
|
|
414
|
+
/// (Deprecated: Use expires_after().) Set the stream buffer's expiry time
|
|
415
|
+
/// relative to now.
|
|
281
416
|
/**
|
|
282
417
|
* This function sets the expiry time associated with the stream. Stream
|
|
283
418
|
* operations performed after this time (where the operations cannot be
|
|
@@ -286,109 +421,126 @@ public:
|
|
|
286
421
|
*
|
|
287
422
|
* @param expiry_time The expiry time to be used for the timer.
|
|
288
423
|
*/
|
|
289
|
-
void expires_from_now(const
|
|
424
|
+
void expires_from_now(const duration& expiry_time)
|
|
290
425
|
{
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
boost::system::error_code ec;
|
|
294
|
-
timer_service_->expires_from_now(timer_implementation_, expiry_time, ec);
|
|
295
|
-
boost::asio::detail::throw_error(ec, "expires_from_now");
|
|
296
|
-
|
|
297
|
-
start_timer();
|
|
426
|
+
expiry_time_ = traits_helper::add(traits_helper::now(), expiry_time);
|
|
298
427
|
}
|
|
428
|
+
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
|
299
429
|
|
|
300
430
|
protected:
|
|
301
431
|
int_type underflow()
|
|
302
432
|
{
|
|
303
|
-
|
|
433
|
+
#if defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
434
|
+
ec_ = boost::asio::error::operation_not_supported;
|
|
435
|
+
return traits_type::eof();
|
|
436
|
+
#else // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
437
|
+
if (gptr() != egptr())
|
|
438
|
+
return traits_type::eof();
|
|
439
|
+
|
|
440
|
+
for (;;)
|
|
304
441
|
{
|
|
305
|
-
if
|
|
442
|
+
// Check if we are past the expiry time.
|
|
443
|
+
if (traits_helper::less_than(expiry_time_, traits_helper::now()))
|
|
306
444
|
{
|
|
307
|
-
ec_ = boost::asio::error::
|
|
445
|
+
ec_ = boost::asio::error::timed_out;
|
|
308
446
|
return traits_type::eof();
|
|
309
447
|
}
|
|
310
448
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
449
|
+
// Try to complete the operation without blocking.
|
|
450
|
+
if (!socket().native_non_blocking())
|
|
451
|
+
socket().native_non_blocking(true, ec_);
|
|
452
|
+
detail::buffer_sequence_adapter<mutable_buffer, mutable_buffer>
|
|
453
|
+
bufs(boost::asio::buffer(get_buffer_) + putback_max);
|
|
454
|
+
detail::signed_size_type bytes = detail::socket_ops::recv(
|
|
455
|
+
socket().native_handle(), bufs.buffers(), bufs.count(), 0, ec_);
|
|
315
456
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
457
|
+
// Check if operation succeeded.
|
|
458
|
+
if (bytes > 0)
|
|
459
|
+
{
|
|
460
|
+
setg(&get_buffer_[0], &get_buffer_[0] + putback_max,
|
|
461
|
+
&get_buffer_[0] + putback_max + bytes);
|
|
462
|
+
return traits_type::to_int_type(*gptr());
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Check for EOF.
|
|
466
|
+
if (bytes == 0)
|
|
467
|
+
{
|
|
468
|
+
ec_ = boost::asio::error::eof;
|
|
469
|
+
return traits_type::eof();
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
// Operation failed.
|
|
473
|
+
if (ec_ != boost::asio::error::would_block
|
|
474
|
+
&& ec_ != boost::asio::error::try_again)
|
|
321
475
|
return traits_type::eof();
|
|
322
476
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
else
|
|
328
|
-
{
|
|
329
|
-
return traits_type::eof();
|
|
477
|
+
// Wait for socket to become ready.
|
|
478
|
+
if (detail::socket_ops::poll_read(
|
|
479
|
+
socket().native_handle(), 0, timeout(), ec_) < 0)
|
|
480
|
+
return traits_type::eof();
|
|
330
481
|
}
|
|
482
|
+
#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
331
483
|
}
|
|
332
484
|
|
|
333
485
|
int_type overflow(int_type c)
|
|
334
486
|
{
|
|
335
|
-
|
|
487
|
+
#if defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
488
|
+
ec_ = boost::asio::error::operation_not_supported;
|
|
489
|
+
return traits_type::eof();
|
|
490
|
+
#else // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
491
|
+
char_type ch = traits_type::to_char_type(c);
|
|
492
|
+
|
|
493
|
+
// Determine what needs to be sent.
|
|
494
|
+
const_buffer output_buffer;
|
|
495
|
+
if (put_buffer_.empty())
|
|
336
496
|
{
|
|
337
497
|
if (traits_type::eq_int_type(c, traits_type::eof()))
|
|
498
|
+
return traits_type::not_eof(c); // Nothing to do.
|
|
499
|
+
output_buffer = boost::asio::buffer(&ch, sizeof(char_type));
|
|
500
|
+
}
|
|
501
|
+
else
|
|
502
|
+
{
|
|
503
|
+
output_buffer = boost::asio::buffer(pbase(),
|
|
504
|
+
(pptr() - pbase()) * sizeof(char_type));
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
while (output_buffer.size() > 0)
|
|
508
|
+
{
|
|
509
|
+
// Check if we are past the expiry time.
|
|
510
|
+
if (traits_helper::less_than(expiry_time_, traits_helper::now()))
|
|
338
511
|
{
|
|
339
|
-
|
|
340
|
-
return traits_type::
|
|
512
|
+
ec_ = boost::asio::error::timed_out;
|
|
513
|
+
return traits_type::eof();
|
|
341
514
|
}
|
|
342
|
-
|
|
515
|
+
|
|
516
|
+
// Try to complete the operation without blocking.
|
|
517
|
+
if (!socket().native_non_blocking())
|
|
518
|
+
socket().native_non_blocking(true, ec_);
|
|
519
|
+
detail::buffer_sequence_adapter<
|
|
520
|
+
const_buffer, const_buffer> bufs(output_buffer);
|
|
521
|
+
detail::signed_size_type bytes = detail::socket_ops::send(
|
|
522
|
+
socket().native_handle(), bufs.buffers(), bufs.count(), 0, ec_);
|
|
523
|
+
|
|
524
|
+
// Check if operation succeeded.
|
|
525
|
+
if (bytes > 0)
|
|
343
526
|
{
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
ec_ = boost::asio::error::operation_aborted;
|
|
347
|
-
return traits_type::eof();
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
// Send the single character immediately.
|
|
351
|
-
char_type ch = traits_type::to_char_type(c);
|
|
352
|
-
io_handler handler = { this };
|
|
353
|
-
this->get_service().async_send(this->get_implementation(),
|
|
354
|
-
boost::asio::buffer(&ch, sizeof(char_type)), 0, handler);
|
|
355
|
-
|
|
356
|
-
ec_ = boost::asio::error::would_block;
|
|
357
|
-
this->get_service().get_io_service().reset();
|
|
358
|
-
do this->get_service().get_io_service().run_one();
|
|
359
|
-
while (ec_ == boost::asio::error::would_block);
|
|
360
|
-
if (ec_)
|
|
361
|
-
return traits_type::eof();
|
|
362
|
-
|
|
363
|
-
return c;
|
|
527
|
+
output_buffer += static_cast<std::size_t>(bytes);
|
|
528
|
+
continue;
|
|
364
529
|
}
|
|
530
|
+
|
|
531
|
+
// Operation failed.
|
|
532
|
+
if (ec_ != boost::asio::error::would_block
|
|
533
|
+
&& ec_ != boost::asio::error::try_again)
|
|
534
|
+
return traits_type::eof();
|
|
535
|
+
|
|
536
|
+
// Wait for socket to become ready.
|
|
537
|
+
if (detail::socket_ops::poll_write(
|
|
538
|
+
socket().native_handle(), 0, timeout(), ec_) < 0)
|
|
539
|
+
return traits_type::eof();
|
|
365
540
|
}
|
|
366
|
-
|
|
541
|
+
|
|
542
|
+
if (!put_buffer_.empty())
|
|
367
543
|
{
|
|
368
|
-
// Send all data in the output buffer.
|
|
369
|
-
boost::asio::const_buffer buffer =
|
|
370
|
-
boost::asio::buffer(pbase(), pptr() - pbase());
|
|
371
|
-
while (boost::asio::buffer_size(buffer) > 0)
|
|
372
|
-
{
|
|
373
|
-
if (timer_state_ == timer_has_expired)
|
|
374
|
-
{
|
|
375
|
-
ec_ = boost::asio::error::operation_aborted;
|
|
376
|
-
return traits_type::eof();
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
io_handler handler = { this };
|
|
380
|
-
this->get_service().async_send(this->get_implementation(),
|
|
381
|
-
boost::asio::buffer(buffer), 0, handler);
|
|
382
|
-
|
|
383
|
-
ec_ = boost::asio::error::would_block;
|
|
384
|
-
this->get_service().get_io_service().reset();
|
|
385
|
-
do this->get_service().get_io_service().run_one();
|
|
386
|
-
while (ec_ == boost::asio::error::would_block);
|
|
387
|
-
if (ec_)
|
|
388
|
-
return traits_type::eof();
|
|
389
|
-
|
|
390
|
-
buffer = buffer + bytes_transferred_;
|
|
391
|
-
}
|
|
392
544
|
setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
|
|
393
545
|
|
|
394
546
|
// If the new character is eof then our work here is done.
|
|
@@ -396,10 +548,12 @@ protected:
|
|
|
396
548
|
return traits_type::not_eof(c);
|
|
397
549
|
|
|
398
550
|
// Add the new character to the output buffer.
|
|
399
|
-
*pptr() =
|
|
551
|
+
*pptr() = ch;
|
|
400
552
|
pbump(1);
|
|
401
|
-
return c;
|
|
402
553
|
}
|
|
554
|
+
|
|
555
|
+
return c;
|
|
556
|
+
#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
403
557
|
}
|
|
404
558
|
|
|
405
559
|
int sync()
|
|
@@ -411,148 +565,130 @@ protected:
|
|
|
411
565
|
{
|
|
412
566
|
if (pptr() == pbase() && s == 0 && n == 0)
|
|
413
567
|
{
|
|
414
|
-
|
|
568
|
+
put_buffer_.clear();
|
|
415
569
|
setp(0, 0);
|
|
570
|
+
sync();
|
|
416
571
|
return this;
|
|
417
572
|
}
|
|
418
573
|
|
|
419
574
|
return 0;
|
|
420
575
|
}
|
|
421
576
|
|
|
422
|
-
/// Get the last error associated with the stream buffer.
|
|
423
|
-
/**
|
|
424
|
-
* @return An \c error_code corresponding to the last error from the stream
|
|
425
|
-
* buffer.
|
|
426
|
-
*/
|
|
427
|
-
virtual const boost::system::error_code& error() const
|
|
428
|
-
{
|
|
429
|
-
return ec_;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
577
|
private:
|
|
578
|
+
// Disallow copying and assignment.
|
|
579
|
+
basic_socket_streambuf(const basic_socket_streambuf&) BOOST_ASIO_DELETED;
|
|
580
|
+
basic_socket_streambuf& operator=(
|
|
581
|
+
const basic_socket_streambuf&) BOOST_ASIO_DELETED;
|
|
582
|
+
|
|
433
583
|
void init_buffers()
|
|
434
584
|
{
|
|
435
585
|
setg(&get_buffer_[0],
|
|
436
586
|
&get_buffer_[0] + putback_max,
|
|
437
587
|
&get_buffer_[0] + putback_max);
|
|
438
|
-
|
|
588
|
+
|
|
589
|
+
if (put_buffer_.empty())
|
|
439
590
|
setp(0, 0);
|
|
440
591
|
else
|
|
441
592
|
setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
|
|
442
593
|
}
|
|
443
594
|
|
|
444
|
-
|
|
445
|
-
void resolve_and_connect(const ResolverQuery& query)
|
|
595
|
+
int timeout() const
|
|
446
596
|
{
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
while (ec_ && i != end)
|
|
456
|
-
{
|
|
457
|
-
this->basic_socket<Protocol, StreamSocketService>::close(ec_);
|
|
458
|
-
|
|
459
|
-
if (timer_state_ == timer_has_expired)
|
|
460
|
-
{
|
|
461
|
-
ec_ = boost::asio::error::operation_aborted;
|
|
462
|
-
return;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
io_handler handler = { this };
|
|
466
|
-
this->basic_socket<Protocol, StreamSocketService>::async_connect(
|
|
467
|
-
*i, handler);
|
|
468
|
-
|
|
469
|
-
ec_ = boost::asio::error::would_block;
|
|
470
|
-
this->get_service().get_io_service().reset();
|
|
471
|
-
do this->get_service().get_io_service().run_one();
|
|
472
|
-
while (ec_ == boost::asio::error::would_block);
|
|
473
|
-
|
|
474
|
-
++i;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
597
|
+
int64_t msec = traits_helper::to_posix_duration(
|
|
598
|
+
traits_helper::subtract(expiry_time_,
|
|
599
|
+
traits_helper::now())).total_milliseconds();
|
|
600
|
+
if (msec > (std::numeric_limits<int>::max)())
|
|
601
|
+
msec = (std::numeric_limits<int>::max)();
|
|
602
|
+
else if (msec < 0)
|
|
603
|
+
msec = 0;
|
|
604
|
+
return static_cast<int>(msec);
|
|
477
605
|
}
|
|
478
606
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
struct io_handler
|
|
607
|
+
template <typename EndpointSequence>
|
|
608
|
+
void connect_to_endpoints(const EndpointSequence& endpoints)
|
|
482
609
|
{
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
void operator()(const boost::system::error_code& ec,
|
|
486
|
-
std::size_t bytes_transferred = 0)
|
|
487
|
-
{
|
|
488
|
-
this_->ec_ = ec;
|
|
489
|
-
this_->bytes_transferred_ = bytes_transferred;
|
|
490
|
-
}
|
|
491
|
-
};
|
|
610
|
+
this->connect_to_endpoints(endpoints.begin(), endpoints.end());
|
|
611
|
+
}
|
|
492
612
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
struct timer_handler
|
|
613
|
+
template <typename EndpointIterator>
|
|
614
|
+
void connect_to_endpoints(EndpointIterator begin, EndpointIterator end)
|
|
496
615
|
{
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
616
|
+
#if defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
617
|
+
ec_ = boost::asio::error::operation_not_supported;
|
|
618
|
+
#else // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
619
|
+
if (ec_)
|
|
620
|
+
return;
|
|
621
|
+
|
|
622
|
+
ec_ = boost::asio::error::not_found;
|
|
623
|
+
for (EndpointIterator i = begin; i != end; ++i)
|
|
500
624
|
{
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
time_type expiry_time = this_->timer_service_->expires_at(
|
|
504
|
-
this_->timer_implementation_);
|
|
505
|
-
|
|
506
|
-
if (traits_helper::less_than(now, expiry_time))
|
|
625
|
+
// Check if we are past the expiry time.
|
|
626
|
+
if (traits_helper::less_than(expiry_time_, traits_helper::now()))
|
|
507
627
|
{
|
|
508
|
-
|
|
509
|
-
|
|
628
|
+
ec_ = boost::asio::error::timed_out;
|
|
629
|
+
return;
|
|
510
630
|
}
|
|
511
|
-
else
|
|
512
|
-
{
|
|
513
|
-
this_->timer_state_ = timer_has_expired;
|
|
514
|
-
boost::system::error_code ec;
|
|
515
|
-
this_->basic_socket<Protocol, StreamSocketService>::close(ec);
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
};
|
|
519
631
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
632
|
+
// Close and reopen the socket.
|
|
633
|
+
typename Protocol::endpoint ep(*i);
|
|
634
|
+
socket().close(ec_);
|
|
635
|
+
socket().open(ep.protocol(), ec_);
|
|
636
|
+
if (ec_)
|
|
637
|
+
continue;
|
|
638
|
+
|
|
639
|
+
// Try to complete the operation without blocking.
|
|
640
|
+
if (!socket().native_non_blocking())
|
|
641
|
+
socket().native_non_blocking(true, ec_);
|
|
642
|
+
detail::socket_ops::connect(socket().native_handle(),
|
|
643
|
+
ep.data(), ep.size(), ec_);
|
|
644
|
+
|
|
645
|
+
// Check if operation succeeded.
|
|
646
|
+
if (!ec_)
|
|
647
|
+
return;
|
|
648
|
+
|
|
649
|
+
// Operation failed.
|
|
650
|
+
if (ec_ != boost::asio::error::in_progress
|
|
651
|
+
&& ec_ != boost::asio::error::would_block)
|
|
652
|
+
continue;
|
|
653
|
+
|
|
654
|
+
// Wait for socket to become ready.
|
|
655
|
+
if (detail::socket_ops::poll_connect(
|
|
656
|
+
socket().native_handle(), timeout(), ec_) < 0)
|
|
657
|
+
continue;
|
|
658
|
+
|
|
659
|
+
// Get the error code from the connect operation.
|
|
660
|
+
int connect_error = 0;
|
|
661
|
+
size_t connect_error_len = sizeof(connect_error);
|
|
662
|
+
if (detail::socket_ops::getsockopt(socket().native_handle(), 0,
|
|
663
|
+
SOL_SOCKET, SO_ERROR, &connect_error, &connect_error_len, ec_)
|
|
664
|
+
== detail::socket_error_retval)
|
|
665
|
+
return;
|
|
666
|
+
|
|
667
|
+
// Check the result of the connect operation.
|
|
668
|
+
ec_ = boost::system::error_code(connect_error,
|
|
669
|
+
boost::asio::error::get_system_category());
|
|
670
|
+
if (!ec_)
|
|
671
|
+
return;
|
|
528
672
|
}
|
|
673
|
+
#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
|
529
674
|
}
|
|
530
675
|
|
|
531
|
-
|
|
676
|
+
// Helper function to get the maximum expiry time.
|
|
677
|
+
static time_point max_expiry_time()
|
|
532
678
|
{
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
timer_handler handler = { this };
|
|
542
|
-
handler(boost::system::error_code());
|
|
543
|
-
}
|
|
679
|
+
#if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \
|
|
680
|
+
&& defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
681
|
+
return boost::posix_time::pos_infin;
|
|
682
|
+
#else // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
683
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
684
|
+
return (time_point::max)();
|
|
685
|
+
#endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
|
686
|
+
// && defined(BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM)
|
|
544
687
|
}
|
|
545
688
|
|
|
546
689
|
enum { putback_max = 8 };
|
|
547
|
-
enum { buffer_size = 512 };
|
|
548
|
-
boost::asio::detail::array<char, buffer_size> get_buffer_;
|
|
549
|
-
boost::asio::detail::array<char, buffer_size> put_buffer_;
|
|
550
|
-
bool unbuffered_;
|
|
551
690
|
boost::system::error_code ec_;
|
|
552
|
-
|
|
553
|
-
TimerService* timer_service_;
|
|
554
|
-
typename TimerService::implementation_type timer_implementation_;
|
|
555
|
-
enum state { no_timer, timer_is_pending, timer_has_expired } timer_state_;
|
|
691
|
+
time_point expiry_time_;
|
|
556
692
|
};
|
|
557
693
|
|
|
558
694
|
} // namespace asio
|
|
@@ -560,6 +696,10 @@ private:
|
|
|
560
696
|
|
|
561
697
|
#include <boost/asio/detail/pop_options.hpp>
|
|
562
698
|
|
|
699
|
+
#if !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
700
|
+
# undef BOOST_ASIO_SVC_T1
|
|
701
|
+
#endif // !defined(BOOST_ASIO_ENABLE_OLD_SERVICES)
|
|
702
|
+
|
|
563
703
|
#if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
|
564
704
|
# undef BOOST_ASIO_PRIVATE_CONNECT_DEF
|
|
565
705
|
#endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|