passenger 6.0.23 → 6.0.24
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.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -1
- data/Rakefile +7 -3
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +17 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +4 -12
- data/package.json +1 -1
- data/passenger.gemspec +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +7 -3
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- 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/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +21 -8
@@ -185,6 +185,9 @@ std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
|
|
185
185
|
CompletionCondition completion_condition,
|
186
186
|
constraint_t<
|
187
187
|
is_const_buffer_sequence<ConstBufferSequence>::value
|
188
|
+
> = 0,
|
189
|
+
constraint_t<
|
190
|
+
is_completion_condition<CompletionCondition>::value
|
188
191
|
> = 0);
|
189
192
|
|
190
193
|
/// Write a certain amount of data to a stream before returning.
|
@@ -232,6 +235,9 @@ std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
|
|
232
235
|
CompletionCondition completion_condition, boost::system::error_code& ec,
|
233
236
|
constraint_t<
|
234
237
|
is_const_buffer_sequence<ConstBufferSequence>::value
|
238
|
+
> = 0,
|
239
|
+
constraint_t<
|
240
|
+
is_completion_condition<CompletionCondition>::value
|
235
241
|
> = 0);
|
236
242
|
|
237
243
|
#if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
@@ -357,6 +363,9 @@ std::size_t write(SyncWriteStream& s,
|
|
357
363
|
> = 0,
|
358
364
|
constraint_t<
|
359
365
|
!is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
|
366
|
+
> = 0,
|
367
|
+
constraint_t<
|
368
|
+
is_completion_condition<CompletionCondition>::value
|
360
369
|
> = 0);
|
361
370
|
|
362
371
|
/// Write a certain amount of data to a stream before returning.
|
@@ -406,6 +415,9 @@ std::size_t write(SyncWriteStream& s,
|
|
406
415
|
> = 0,
|
407
416
|
constraint_t<
|
408
417
|
!is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
|
418
|
+
> = 0,
|
419
|
+
constraint_t<
|
420
|
+
is_completion_condition<CompletionCondition>::value
|
409
421
|
> = 0);
|
410
422
|
|
411
423
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -508,7 +520,10 @@ std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
|
|
508
520
|
template <typename SyncWriteStream, typename Allocator,
|
509
521
|
typename CompletionCondition>
|
510
522
|
std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
|
511
|
-
CompletionCondition completion_condition
|
523
|
+
CompletionCondition completion_condition,
|
524
|
+
constraint_t<
|
525
|
+
is_completion_condition<CompletionCondition>::value
|
526
|
+
> = 0);
|
512
527
|
|
513
528
|
/// Write a certain amount of data to a stream before returning.
|
514
529
|
/**
|
@@ -549,7 +564,10 @@ std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
|
|
549
564
|
template <typename SyncWriteStream, typename Allocator,
|
550
565
|
typename CompletionCondition>
|
551
566
|
std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
|
552
|
-
CompletionCondition completion_condition, boost::system::error_code& ec
|
567
|
+
CompletionCondition completion_condition, boost::system::error_code& ec,
|
568
|
+
constraint_t<
|
569
|
+
is_completion_condition<CompletionCondition>::value
|
570
|
+
> = 0);
|
553
571
|
|
554
572
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
555
573
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -664,6 +682,9 @@ std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers,
|
|
664
682
|
CompletionCondition completion_condition,
|
665
683
|
constraint_t<
|
666
684
|
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
685
|
+
> = 0,
|
686
|
+
constraint_t<
|
687
|
+
is_completion_condition<CompletionCondition>::value
|
667
688
|
> = 0);
|
668
689
|
|
669
690
|
/// Write a certain amount of data to a stream before returning.
|
@@ -709,6 +730,9 @@ std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers,
|
|
709
730
|
CompletionCondition completion_condition, boost::system::error_code& ec,
|
710
731
|
constraint_t<
|
711
732
|
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
733
|
+
> = 0,
|
734
|
+
constraint_t<
|
735
|
+
is_completion_condition<CompletionCondition>::value
|
712
736
|
> = 0);
|
713
737
|
|
714
738
|
/*@}*/
|
@@ -763,7 +787,7 @@ std::size_t write(SyncWriteStream& s, DynamicBuffer_v2 buffers,
|
|
763
787
|
* Regardless of whether the asynchronous operation completes immediately or
|
764
788
|
* not, the completion handler will not be invoked from within this function.
|
765
789
|
* On immediate completion, invocation of the handler will be performed in a
|
766
|
-
* manner equivalent to using boost::asio::
|
790
|
+
* manner equivalent to using boost::asio::async_immediate().
|
767
791
|
*
|
768
792
|
* @par Completion Signature
|
769
793
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -792,17 +816,26 @@ template <typename AsyncWriteStream, typename ConstBufferSequence,
|
|
792
816
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
793
817
|
std::size_t)) WriteToken
|
794
818
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
795
|
-
auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
819
|
+
inline auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
796
820
|
WriteToken&& token
|
797
821
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
798
822
|
constraint_t<
|
799
823
|
is_const_buffer_sequence<ConstBufferSequence>::value
|
824
|
+
> = 0,
|
825
|
+
constraint_t<
|
826
|
+
!is_completion_condition<decay_t<WriteToken>>::value
|
800
827
|
> = 0)
|
801
828
|
-> decltype(
|
802
829
|
async_initiate<WriteToken,
|
803
830
|
void (boost::system::error_code, std::size_t)>(
|
804
831
|
declval<detail::initiate_async_write<AsyncWriteStream>>(),
|
805
|
-
token, buffers, transfer_all()))
|
832
|
+
token, buffers, transfer_all()))
|
833
|
+
{
|
834
|
+
return async_initiate<WriteToken,
|
835
|
+
void (boost::system::error_code, std::size_t)>(
|
836
|
+
detail::initiate_async_write<AsyncWriteStream>(s),
|
837
|
+
token, buffers, transfer_all());
|
838
|
+
}
|
806
839
|
|
807
840
|
/// Start an asynchronous operation to write a certain amount of data to a
|
808
841
|
/// stream.
|
@@ -861,7 +894,7 @@ auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
|
861
894
|
* Regardless of whether the asynchronous operation completes immediately or
|
862
895
|
* not, the completion handler will not be invoked from within this function.
|
863
896
|
* On immediate completion, invocation of the handler will be performed in a
|
864
|
-
* manner equivalent to using boost::asio::
|
897
|
+
* manner equivalent to using boost::asio::async_immediate().
|
865
898
|
*
|
866
899
|
* @par Completion Signature
|
867
900
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -890,19 +923,31 @@ auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
|
890
923
|
template <typename AsyncWriteStream,
|
891
924
|
typename ConstBufferSequence, typename CompletionCondition,
|
892
925
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
893
|
-
std::size_t)) WriteToken
|
894
|
-
|
926
|
+
std::size_t)) WriteToken
|
927
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
928
|
+
inline auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
895
929
|
CompletionCondition completion_condition,
|
896
|
-
WriteToken&& token
|
930
|
+
WriteToken&& token
|
931
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
897
932
|
constraint_t<
|
898
933
|
is_const_buffer_sequence<ConstBufferSequence>::value
|
934
|
+
> = 0,
|
935
|
+
constraint_t<
|
936
|
+
is_completion_condition<CompletionCondition>::value
|
899
937
|
> = 0)
|
900
938
|
-> decltype(
|
901
939
|
async_initiate<WriteToken,
|
902
940
|
void (boost::system::error_code, std::size_t)>(
|
903
941
|
declval<detail::initiate_async_write<AsyncWriteStream>>(),
|
904
942
|
token, buffers,
|
905
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
943
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
944
|
+
{
|
945
|
+
return async_initiate<WriteToken,
|
946
|
+
void (boost::system::error_code, std::size_t)>(
|
947
|
+
detail::initiate_async_write<AsyncWriteStream>(s),
|
948
|
+
token, buffers,
|
949
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
950
|
+
}
|
906
951
|
|
907
952
|
#if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
|
908
953
|
|
@@ -949,7 +994,7 @@ auto async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
|
|
949
994
|
* Regardless of whether the asynchronous operation completes immediately or
|
950
995
|
* not, the completion handler will not be invoked from within this function.
|
951
996
|
* On immediate completion, invocation of the handler will be performed in a
|
952
|
-
* manner equivalent to using boost::asio::
|
997
|
+
* manner equivalent to using boost::asio::async_immediate().
|
953
998
|
*
|
954
999
|
* @par Completion Signature
|
955
1000
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -969,7 +1014,7 @@ template <typename AsyncWriteStream, typename DynamicBuffer_v1,
|
|
969
1014
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
970
1015
|
std::size_t)) WriteToken
|
971
1016
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
972
|
-
auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
1017
|
+
inline auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
973
1018
|
WriteToken&& token
|
974
1019
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
975
1020
|
constraint_t<
|
@@ -977,13 +1022,23 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
|
977
1022
|
> = 0,
|
978
1023
|
constraint_t<
|
979
1024
|
!is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
|
1025
|
+
> = 0,
|
1026
|
+
constraint_t<
|
1027
|
+
!is_completion_condition<decay_t<WriteToken>>::value
|
980
1028
|
> = 0)
|
981
1029
|
-> decltype(
|
982
1030
|
async_initiate<WriteToken,
|
983
1031
|
void (boost::system::error_code, std::size_t)>(
|
984
1032
|
declval<detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>>(),
|
985
1033
|
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
986
|
-
transfer_all()))
|
1034
|
+
transfer_all()))
|
1035
|
+
{
|
1036
|
+
return async_initiate<WriteToken,
|
1037
|
+
void (boost::system::error_code, std::size_t)>(
|
1038
|
+
detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>(s),
|
1039
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
1040
|
+
transfer_all());
|
1041
|
+
}
|
987
1042
|
|
988
1043
|
/// Start an asynchronous operation to write a certain amount of data to a
|
989
1044
|
/// stream.
|
@@ -1042,7 +1097,7 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
|
1042
1097
|
* Regardless of whether the asynchronous operation completes immediately or
|
1043
1098
|
* not, the completion handler will not be invoked from within this function.
|
1044
1099
|
* On immediate completion, invocation of the handler will be performed in a
|
1045
|
-
* manner equivalent to using boost::asio::
|
1100
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1046
1101
|
*
|
1047
1102
|
* @par Completion Signature
|
1048
1103
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1061,21 +1116,34 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
|
1061
1116
|
template <typename AsyncWriteStream,
|
1062
1117
|
typename DynamicBuffer_v1, typename CompletionCondition,
|
1063
1118
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1064
|
-
std::size_t)) WriteToken
|
1065
|
-
|
1066
|
-
|
1119
|
+
std::size_t)) WriteToken
|
1120
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
1121
|
+
inline auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
1122
|
+
CompletionCondition completion_condition,
|
1123
|
+
WriteToken&& token
|
1124
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
1067
1125
|
constraint_t<
|
1068
1126
|
is_dynamic_buffer_v1<decay_t<DynamicBuffer_v1>>::value
|
1069
1127
|
> = 0,
|
1070
1128
|
constraint_t<
|
1071
1129
|
!is_dynamic_buffer_v2<decay_t<DynamicBuffer_v1>>::value
|
1130
|
+
> = 0,
|
1131
|
+
constraint_t<
|
1132
|
+
is_completion_condition<CompletionCondition>::value
|
1072
1133
|
> = 0)
|
1073
1134
|
-> decltype(
|
1074
1135
|
async_initiate<WriteToken,
|
1075
1136
|
void (boost::system::error_code, std::size_t)>(
|
1076
1137
|
declval<detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>>(),
|
1077
1138
|
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
1078
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
1139
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
1140
|
+
{
|
1141
|
+
return async_initiate<WriteToken,
|
1142
|
+
void (boost::system::error_code, std::size_t)>(
|
1143
|
+
detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>(s),
|
1144
|
+
token, static_cast<DynamicBuffer_v1&&>(buffers),
|
1145
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
1146
|
+
}
|
1079
1147
|
|
1080
1148
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
1081
1149
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
@@ -1121,7 +1189,7 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v1&& buffers,
|
|
1121
1189
|
* Regardless of whether the asynchronous operation completes immediately or
|
1122
1190
|
* not, the completion handler will not be invoked from within this function.
|
1123
1191
|
* On immediate completion, invocation of the handler will be performed in a
|
1124
|
-
* manner equivalent to using boost::asio::
|
1192
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1125
1193
|
*
|
1126
1194
|
* @par Completion Signature
|
1127
1195
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1141,14 +1209,23 @@ template <typename AsyncWriteStream, typename Allocator,
|
|
1141
1209
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1142
1210
|
std::size_t)) WriteToken
|
1143
1211
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
1144
|
-
auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
1212
|
+
inline auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
1145
1213
|
WriteToken&& token
|
1146
|
-
= default_completion_token_t<typename AsyncWriteStream::executor_type>()
|
1214
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
1215
|
+
constraint_t<
|
1216
|
+
!is_completion_condition<decay_t<WriteToken>>::value
|
1217
|
+
> = 0)
|
1147
1218
|
-> decltype(
|
1148
1219
|
async_initiate<WriteToken,
|
1149
1220
|
void (boost::system::error_code, std::size_t)>(
|
1150
1221
|
declval<detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>>(),
|
1151
|
-
token, basic_streambuf_ref<Allocator>(b), transfer_all()))
|
1222
|
+
token, basic_streambuf_ref<Allocator>(b), transfer_all()))
|
1223
|
+
{
|
1224
|
+
return async_initiate<WriteToken,
|
1225
|
+
void (boost::system::error_code, std::size_t)>(
|
1226
|
+
detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>(s),
|
1227
|
+
token, basic_streambuf_ref<Allocator>(b), transfer_all());
|
1228
|
+
}
|
1152
1229
|
|
1153
1230
|
/// Start an asynchronous operation to write a certain amount of data to a
|
1154
1231
|
/// stream.
|
@@ -1205,7 +1282,7 @@ auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
|
1205
1282
|
* Regardless of whether the asynchronous operation completes immediately or
|
1206
1283
|
* not, the completion handler will not be invoked from within this function.
|
1207
1284
|
* On immediate completion, invocation of the handler will be performed in a
|
1208
|
-
* manner equivalent to using boost::asio::
|
1285
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1209
1286
|
*
|
1210
1287
|
* @par Completion Signature
|
1211
1288
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1224,15 +1301,28 @@ auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
|
1224
1301
|
template <typename AsyncWriteStream,
|
1225
1302
|
typename Allocator, typename CompletionCondition,
|
1226
1303
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1227
|
-
std::size_t)) WriteToken
|
1228
|
-
|
1229
|
-
|
1304
|
+
std::size_t)) WriteToken
|
1305
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
1306
|
+
inline auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
1307
|
+
CompletionCondition completion_condition,
|
1308
|
+
WriteToken&& token
|
1309
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
1310
|
+
constraint_t<
|
1311
|
+
is_completion_condition<CompletionCondition>::value
|
1312
|
+
> = 0)
|
1230
1313
|
-> decltype(
|
1231
1314
|
async_initiate<WriteToken,
|
1232
1315
|
void (boost::system::error_code, std::size_t)>(
|
1233
1316
|
declval<detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>>(),
|
1234
1317
|
token, basic_streambuf_ref<Allocator>(b),
|
1235
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
1318
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
1319
|
+
{
|
1320
|
+
return async_initiate<WriteToken,
|
1321
|
+
void (boost::system::error_code, std::size_t)>(
|
1322
|
+
detail::initiate_async_write_dynbuf_v1<AsyncWriteStream>(s),
|
1323
|
+
token, basic_streambuf_ref<Allocator>(b),
|
1324
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
1325
|
+
}
|
1236
1326
|
|
1237
1327
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
1238
1328
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -1281,7 +1371,7 @@ auto async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
|
|
1281
1371
|
* Regardless of whether the asynchronous operation completes immediately or
|
1282
1372
|
* not, the completion handler will not be invoked from within this function.
|
1283
1373
|
* On immediate completion, invocation of the handler will be performed in a
|
1284
|
-
* manner equivalent to using boost::asio::
|
1374
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1285
1375
|
*
|
1286
1376
|
* @par Completion Signature
|
1287
1377
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1301,18 +1391,28 @@ template <typename AsyncWriteStream, typename DynamicBuffer_v2,
|
|
1301
1391
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1302
1392
|
std::size_t)) WriteToken
|
1303
1393
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
1304
|
-
auto async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers,
|
1394
|
+
inline auto async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers,
|
1305
1395
|
WriteToken&& token
|
1306
1396
|
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
1307
1397
|
constraint_t<
|
1308
1398
|
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
1399
|
+
> = 0,
|
1400
|
+
constraint_t<
|
1401
|
+
!is_completion_condition<decay_t<WriteToken>>::value
|
1309
1402
|
> = 0)
|
1310
1403
|
-> decltype(
|
1311
1404
|
async_initiate<WriteToken,
|
1312
1405
|
void (boost::system::error_code, std::size_t)>(
|
1313
1406
|
declval<detail::initiate_async_write_dynbuf_v2<AsyncWriteStream>>(),
|
1314
1407
|
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
1315
|
-
transfer_all()))
|
1408
|
+
transfer_all()))
|
1409
|
+
{
|
1410
|
+
return async_initiate<WriteToken,
|
1411
|
+
void (boost::system::error_code, std::size_t)>(
|
1412
|
+
detail::initiate_async_write_dynbuf_v2<AsyncWriteStream>(s),
|
1413
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
1414
|
+
transfer_all());
|
1415
|
+
}
|
1316
1416
|
|
1317
1417
|
/// Start an asynchronous operation to write a certain amount of data to a
|
1318
1418
|
/// stream.
|
@@ -1371,7 +1471,7 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers,
|
|
1371
1471
|
* Regardless of whether the asynchronous operation completes immediately or
|
1372
1472
|
* not, the completion handler will not be invoked from within this function.
|
1373
1473
|
* On immediate completion, invocation of the handler will be performed in a
|
1374
|
-
* manner equivalent to using boost::asio::
|
1474
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1375
1475
|
*
|
1376
1476
|
* @par Completion Signature
|
1377
1477
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -1390,19 +1490,31 @@ auto async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers,
|
|
1390
1490
|
template <typename AsyncWriteStream,
|
1391
1491
|
typename DynamicBuffer_v2, typename CompletionCondition,
|
1392
1492
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1393
|
-
std::size_t)) WriteToken
|
1394
|
-
|
1493
|
+
std::size_t)) WriteToken
|
1494
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>>
|
1495
|
+
inline auto async_write(AsyncWriteStream& s, DynamicBuffer_v2 buffers,
|
1395
1496
|
CompletionCondition completion_condition,
|
1396
|
-
WriteToken&& token
|
1497
|
+
WriteToken&& token
|
1498
|
+
= default_completion_token_t<typename AsyncWriteStream::executor_type>(),
|
1397
1499
|
constraint_t<
|
1398
1500
|
is_dynamic_buffer_v2<DynamicBuffer_v2>::value
|
1501
|
+
> = 0,
|
1502
|
+
constraint_t<
|
1503
|
+
is_completion_condition<CompletionCondition>::value
|
1399
1504
|
> = 0)
|
1400
1505
|
-> decltype(
|
1401
1506
|
async_initiate<WriteToken,
|
1402
1507
|
void (boost::system::error_code, std::size_t)>(
|
1403
1508
|
declval<detail::initiate_async_write_dynbuf_v2<AsyncWriteStream>>(),
|
1404
1509
|
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
1405
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
1510
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
1511
|
+
{
|
1512
|
+
return async_initiate<WriteToken,
|
1513
|
+
void (boost::system::error_code, std::size_t)>(
|
1514
|
+
detail::initiate_async_write_dynbuf_v2<AsyncWriteStream>(s),
|
1515
|
+
token, static_cast<DynamicBuffer_v2&&>(buffers),
|
1516
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
1517
|
+
}
|
1406
1518
|
|
1407
1519
|
/*@}*/
|
1408
1520
|
|
@@ -188,7 +188,10 @@ template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
|
|
188
188
|
typename CompletionCondition>
|
189
189
|
std::size_t write_at(SyncRandomAccessWriteDevice& d,
|
190
190
|
uint64_t offset, const ConstBufferSequence& buffers,
|
191
|
-
CompletionCondition completion_condition
|
191
|
+
CompletionCondition completion_condition,
|
192
|
+
constraint_t<
|
193
|
+
is_completion_condition<CompletionCondition>::value
|
194
|
+
> = 0);
|
192
195
|
|
193
196
|
/// Write a certain amount of data at a specified offset before returning.
|
194
197
|
/**
|
@@ -236,7 +239,10 @@ template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
|
|
236
239
|
typename CompletionCondition>
|
237
240
|
std::size_t write_at(SyncRandomAccessWriteDevice& d,
|
238
241
|
uint64_t offset, const ConstBufferSequence& buffers,
|
239
|
-
CompletionCondition completion_condition, boost::system::error_code& ec
|
242
|
+
CompletionCondition completion_condition, boost::system::error_code& ec,
|
243
|
+
constraint_t<
|
244
|
+
is_completion_condition<CompletionCondition>::value
|
245
|
+
> = 0);
|
240
246
|
|
241
247
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
242
248
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
@@ -349,7 +355,10 @@ std::size_t write_at(SyncRandomAccessWriteDevice& d,
|
|
349
355
|
template <typename SyncRandomAccessWriteDevice, typename Allocator,
|
350
356
|
typename CompletionCondition>
|
351
357
|
std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset,
|
352
|
-
basic_streambuf<Allocator>& b, CompletionCondition completion_condition
|
358
|
+
basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
|
359
|
+
constraint_t<
|
360
|
+
is_completion_condition<CompletionCondition>::value
|
361
|
+
> = 0);
|
353
362
|
|
354
363
|
/// Write a certain amount of data at a specified offset before returning.
|
355
364
|
/**
|
@@ -392,9 +401,12 @@ std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset,
|
|
392
401
|
*/
|
393
402
|
template <typename SyncRandomAccessWriteDevice, typename Allocator,
|
394
403
|
typename CompletionCondition>
|
395
|
-
std::size_t write_at(SyncRandomAccessWriteDevice& d,
|
396
|
-
basic_streambuf<Allocator>& b,
|
397
|
-
boost::system::error_code& ec
|
404
|
+
std::size_t write_at(SyncRandomAccessWriteDevice& d,
|
405
|
+
uint64_t offset, basic_streambuf<Allocator>& b,
|
406
|
+
CompletionCondition completion_condition, boost::system::error_code& ec,
|
407
|
+
constraint_t<
|
408
|
+
is_completion_condition<CompletionCondition>::value
|
409
|
+
> = 0);
|
398
410
|
|
399
411
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
400
412
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -457,7 +469,7 @@ std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset,
|
|
457
469
|
* Regardless of whether the asynchronous operation completes immediately or
|
458
470
|
* not, the completion handler will not be invoked from within this function.
|
459
471
|
* On immediate completion, invocation of the handler will be performed in a
|
460
|
-
* manner equivalent to using boost::asio::
|
472
|
+
* manner equivalent to using boost::asio::async_immediate().
|
461
473
|
*
|
462
474
|
* @par Completion Signature
|
463
475
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -486,16 +498,25 @@ template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
|
|
486
498
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
487
499
|
std::size_t)) WriteToken = default_completion_token_t<
|
488
500
|
typename AsyncRandomAccessWriteDevice::executor_type>>
|
489
|
-
auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
501
|
+
inline auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
490
502
|
uint64_t offset, const ConstBufferSequence& buffers,
|
491
503
|
WriteToken&& token = default_completion_token_t<
|
492
|
-
typename AsyncRandomAccessWriteDevice::executor_type>()
|
504
|
+
typename AsyncRandomAccessWriteDevice::executor_type>(),
|
505
|
+
constraint_t<
|
506
|
+
!is_completion_condition<WriteToken>::value
|
507
|
+
> = 0)
|
493
508
|
-> decltype(
|
494
509
|
async_initiate<WriteToken,
|
495
510
|
void (boost::system::error_code, std::size_t)>(
|
496
511
|
declval<detail::initiate_async_write_at<
|
497
512
|
AsyncRandomAccessWriteDevice>>(),
|
498
|
-
token, offset, buffers, transfer_all()))
|
513
|
+
token, offset, buffers, transfer_all()))
|
514
|
+
{
|
515
|
+
return async_initiate<WriteToken,
|
516
|
+
void (boost::system::error_code, std::size_t)>(
|
517
|
+
detail::initiate_async_write_at<AsyncRandomAccessWriteDevice>(d),
|
518
|
+
token, offset, buffers, transfer_all());
|
519
|
+
}
|
499
520
|
|
500
521
|
/// Start an asynchronous operation to write a certain amount of data at the
|
501
522
|
/// specified offset.
|
@@ -559,7 +580,7 @@ auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
|
559
580
|
* Regardless of whether the asynchronous operation completes immediately or
|
560
581
|
* not, the completion handler will not be invoked from within this function.
|
561
582
|
* On immediate completion, invocation of the handler will be performed in a
|
562
|
-
* manner equivalent to using boost::asio::
|
583
|
+
* manner equivalent to using boost::asio::async_immediate().
|
563
584
|
*
|
564
585
|
* @par Completion Signature
|
565
586
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -590,18 +611,28 @@ template <typename AsyncRandomAccessWriteDevice,
|
|
590
611
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
591
612
|
std::size_t)) WriteToken = default_completion_token_t<
|
592
613
|
typename AsyncRandomAccessWriteDevice::executor_type>>
|
593
|
-
auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
614
|
+
inline auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
594
615
|
uint64_t offset, const ConstBufferSequence& buffers,
|
595
616
|
CompletionCondition completion_condition,
|
596
617
|
WriteToken&& token = default_completion_token_t<
|
597
|
-
typename AsyncRandomAccessWriteDevice::executor_type>()
|
618
|
+
typename AsyncRandomAccessWriteDevice::executor_type>(),
|
619
|
+
constraint_t<
|
620
|
+
is_completion_condition<CompletionCondition>::value
|
621
|
+
> = 0)
|
598
622
|
-> decltype(
|
599
623
|
async_initiate<WriteToken,
|
600
624
|
void (boost::system::error_code, std::size_t)>(
|
601
625
|
declval<detail::initiate_async_write_at<
|
602
626
|
AsyncRandomAccessWriteDevice>>(),
|
603
627
|
token, offset, buffers,
|
604
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
628
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
629
|
+
{
|
630
|
+
return async_initiate<WriteToken,
|
631
|
+
void (boost::system::error_code, std::size_t)>(
|
632
|
+
detail::initiate_async_write_at<AsyncRandomAccessWriteDevice>(d),
|
633
|
+
token, offset, buffers,
|
634
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
635
|
+
}
|
605
636
|
|
606
637
|
#if !defined(BOOST_ASIO_NO_EXTENSIONS)
|
607
638
|
#if !defined(BOOST_ASIO_NO_IOSTREAM)
|
@@ -652,7 +683,7 @@ auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
|
652
683
|
* Regardless of whether the asynchronous operation completes immediately or
|
653
684
|
* not, the completion handler will not be invoked from within this function.
|
654
685
|
* On immediate completion, invocation of the handler will be performed in a
|
655
|
-
* manner equivalent to using boost::asio::
|
686
|
+
* manner equivalent to using boost::asio::async_immediate().
|
656
687
|
*
|
657
688
|
* @par Completion Signature
|
658
689
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -672,16 +703,26 @@ template <typename AsyncRandomAccessWriteDevice, typename Allocator,
|
|
672
703
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
673
704
|
std::size_t)) WriteToken = default_completion_token_t<
|
674
705
|
typename AsyncRandomAccessWriteDevice::executor_type>>
|
675
|
-
auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
706
|
+
inline auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
676
707
|
uint64_t offset, basic_streambuf<Allocator>& b,
|
677
708
|
WriteToken&& token = default_completion_token_t<
|
678
|
-
typename AsyncRandomAccessWriteDevice::executor_type>()
|
709
|
+
typename AsyncRandomAccessWriteDevice::executor_type>(),
|
710
|
+
constraint_t<
|
711
|
+
!is_completion_condition<WriteToken>::value
|
712
|
+
> = 0)
|
679
713
|
-> decltype(
|
680
714
|
async_initiate<WriteToken,
|
681
715
|
void (boost::system::error_code, std::size_t)>(
|
682
716
|
declval<detail::initiate_async_write_at_streambuf<
|
683
717
|
AsyncRandomAccessWriteDevice>>(),
|
684
|
-
token, offset, &b, transfer_all()))
|
718
|
+
token, offset, &b, transfer_all()))
|
719
|
+
{
|
720
|
+
return async_initiate<WriteToken,
|
721
|
+
void (boost::system::error_code, std::size_t)>(
|
722
|
+
detail::initiate_async_write_at_streambuf<
|
723
|
+
AsyncRandomAccessWriteDevice>(d),
|
724
|
+
token, offset, &b, transfer_all());
|
725
|
+
}
|
685
726
|
|
686
727
|
/// Start an asynchronous operation to write a certain amount of data at the
|
687
728
|
/// specified offset.
|
@@ -743,7 +784,7 @@ auto async_write_at(AsyncRandomAccessWriteDevice& d,
|
|
743
784
|
* Regardless of whether the asynchronous operation completes immediately or
|
744
785
|
* not, the completion handler will not be invoked from within this function.
|
745
786
|
* On immediate completion, invocation of the handler will be performed in a
|
746
|
-
* manner equivalent to using boost::asio::
|
787
|
+
* manner equivalent to using boost::asio::async_immediate().
|
747
788
|
*
|
748
789
|
* @par Completion Signature
|
749
790
|
* @code void(boost::system::error_code, std::size_t) @endcode
|
@@ -764,17 +805,28 @@ template <typename AsyncRandomAccessWriteDevice,
|
|
764
805
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
765
806
|
std::size_t)) WriteToken = default_completion_token_t<
|
766
807
|
typename AsyncRandomAccessWriteDevice::executor_type>>
|
767
|
-
auto async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset,
|
808
|
+
inline auto async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset,
|
768
809
|
basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
|
769
810
|
WriteToken&& token = default_completion_token_t<
|
770
|
-
typename AsyncRandomAccessWriteDevice::executor_type>()
|
811
|
+
typename AsyncRandomAccessWriteDevice::executor_type>(),
|
812
|
+
constraint_t<
|
813
|
+
is_completion_condition<CompletionCondition>::value
|
814
|
+
> = 0)
|
771
815
|
-> decltype(
|
772
816
|
async_initiate<WriteToken,
|
773
817
|
void (boost::system::error_code, std::size_t)>(
|
774
818
|
declval<detail::initiate_async_write_at_streambuf<
|
775
819
|
AsyncRandomAccessWriteDevice>>(),
|
776
820
|
token, offset, &b,
|
777
|
-
static_cast<CompletionCondition&&>(completion_condition)))
|
821
|
+
static_cast<CompletionCondition&&>(completion_condition)))
|
822
|
+
{
|
823
|
+
return async_initiate<WriteToken,
|
824
|
+
void (boost::system::error_code, std::size_t)>(
|
825
|
+
detail::initiate_async_write_at_streambuf<
|
826
|
+
AsyncRandomAccessWriteDevice>(d),
|
827
|
+
token, offset, &b,
|
828
|
+
static_cast<CompletionCondition&&>(completion_condition));
|
829
|
+
}
|
778
830
|
|
779
831
|
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
780
832
|
#endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
|
@@ -61,12 +61,16 @@
|
|
61
61
|
#include <boost/asio/buffered_write_stream_fwd.hpp>
|
62
62
|
#include <boost/asio/buffered_write_stream.hpp>
|
63
63
|
#include <boost/asio/buffers_iterator.hpp>
|
64
|
+
#include <boost/asio/cancel_after.hpp>
|
65
|
+
#include <boost/asio/cancel_at.hpp>
|
64
66
|
#include <boost/asio/cancellation_signal.hpp>
|
65
67
|
#include <boost/asio/cancellation_state.hpp>
|
66
68
|
#include <boost/asio/cancellation_type.hpp>
|
69
|
+
#include <boost/asio/co_composed.hpp>
|
67
70
|
#include <boost/asio/co_spawn.hpp>
|
68
71
|
#include <boost/asio/completion_condition.hpp>
|
69
72
|
#include <boost/asio/compose.hpp>
|
73
|
+
#include <boost/asio/composed.hpp>
|
70
74
|
#include <boost/asio/connect.hpp>
|
71
75
|
#include <boost/asio/connect_pipe.hpp>
|
72
76
|
#include <boost/asio/consign.hpp>
|
@@ -74,6 +78,7 @@
|
|
74
78
|
#include <boost/asio/deadline_timer.hpp>
|
75
79
|
#include <boost/asio/defer.hpp>
|
76
80
|
#include <boost/asio/deferred.hpp>
|
81
|
+
#include <boost/asio/default_completion_token.hpp>
|
77
82
|
#include <boost/asio/detached.hpp>
|
78
83
|
#include <boost/asio/dispatch.hpp>
|
79
84
|
#include <boost/asio/error.hpp>
|
@@ -101,6 +106,7 @@
|
|
101
106
|
#include <boost/asio/generic/stream_protocol.hpp>
|
102
107
|
#include <boost/asio/handler_continuation_hook.hpp>
|
103
108
|
#include <boost/asio/high_resolution_timer.hpp>
|
109
|
+
#include <boost/asio/immediate.hpp>
|
104
110
|
#include <boost/asio/io_context.hpp>
|
105
111
|
#include <boost/asio/io_context_strand.hpp>
|
106
112
|
#include <boost/asio/io_service.hpp>
|
@@ -174,9 +174,12 @@ template<class E, class T> std::basic_ostream<E, T> & operator<<( std::basic_ost
|
|
174
174
|
|
175
175
|
# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION(), __builtin_COLUMN())
|
176
176
|
|
177
|
-
#elif defined(BOOST_GCC) && BOOST_GCC >=
|
177
|
+
#elif defined(BOOST_GCC) && BOOST_GCC >= 80000
|
178
178
|
|
179
179
|
// The built-ins are available in 4.8+, but are not constant expressions until 7
|
180
|
+
// In addition, reproducible builds require -ffile-prefix-map, which is GCC 8
|
181
|
+
// https://github.com/boostorg/assert/issues/38
|
182
|
+
|
180
183
|
# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())
|
181
184
|
|
182
185
|
#elif defined(BOOST_GCC) && BOOST_GCC >= 50000
|