passenger 6.0.23 → 6.0.24
Sign up to get free protection for your applications and to get access to all the features.
- 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
|