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
@@ -208,6 +208,36 @@ public:
|
|
208
208
|
/**
|
209
209
|
* For example:
|
210
210
|
* @code boost::asio::experimental::make_parallel_group(
|
211
|
+
* in.async_read_some(boost::asio::buffer(data)),
|
212
|
+
* timer.async_wait()
|
213
|
+
* ).async_wait(
|
214
|
+
* boost::asio::experimental::wait_for_all(),
|
215
|
+
* [](
|
216
|
+
* std::array<std::size_t, 2> completion_order,
|
217
|
+
* boost::system::error_code ec1, std::size_t n1,
|
218
|
+
* boost::system::error_code ec2
|
219
|
+
* )
|
220
|
+
* {
|
221
|
+
* switch (completion_order[0])
|
222
|
+
* {
|
223
|
+
* case 0:
|
224
|
+
* {
|
225
|
+
* std::cout << "descriptor finished: " << ec1 << ", " << n1 << "\n";
|
226
|
+
* }
|
227
|
+
* break;
|
228
|
+
* case 1:
|
229
|
+
* {
|
230
|
+
* std::cout << "timer finished: " << ec2 << "\n";
|
231
|
+
* }
|
232
|
+
* break;
|
233
|
+
* }
|
234
|
+
* }
|
235
|
+
* );
|
236
|
+
* @endcode
|
237
|
+
*
|
238
|
+
* If preferred, the asynchronous operations may be explicitly packaged as
|
239
|
+
* function objects:
|
240
|
+
* @code boost::asio::experimental::make_parallel_group(
|
211
241
|
* [&](auto token)
|
212
242
|
* {
|
213
243
|
* return in.async_read_some(boost::asio::buffer(data), token);
|
@@ -333,28 +363,12 @@ public:
|
|
333
363
|
*
|
334
364
|
* For example:
|
335
365
|
* @code
|
336
|
-
* using op_type =
|
337
|
-
*
|
338
|
-
* boost::asio::buffer(data1),
|
339
|
-
* boost::asio::deferred
|
340
|
-
* )
|
341
|
-
* );
|
366
|
+
* using op_type =
|
367
|
+
* decltype(socket1.async_read_some(boost::asio::buffer(data1)));
|
342
368
|
*
|
343
369
|
* std::vector<op_type> ops;
|
344
|
-
*
|
345
|
-
* ops.push_back(
|
346
|
-
* socket1.async_read_some(
|
347
|
-
* boost::asio::buffer(data1),
|
348
|
-
* boost::asio::deferred
|
349
|
-
* )
|
350
|
-
* );
|
351
|
-
*
|
352
|
-
* ops.push_back(
|
353
|
-
* socket2.async_read_some(
|
354
|
-
* boost::asio::buffer(data2),
|
355
|
-
* boost::asio::deferred
|
356
|
-
* )
|
357
|
-
* );
|
370
|
+
* ops.push_back(socket1.async_read_some(boost::asio::buffer(data1)));
|
371
|
+
* ops.push_back(socket2.async_read_some(boost::asio::buffer(data2)));
|
358
372
|
*
|
359
373
|
* boost::asio::experimental::make_parallel_group(ops).async_wait(
|
360
374
|
* boost::asio::experimental::wait_for_all(),
|
@@ -392,28 +406,12 @@ make_parallel_group(Range&& range,
|
|
392
406
|
*
|
393
407
|
* For example:
|
394
408
|
* @code
|
395
|
-
* using op_type =
|
396
|
-
*
|
397
|
-
* boost::asio::buffer(data1),
|
398
|
-
* boost::asio::deferred
|
399
|
-
* )
|
400
|
-
* );
|
409
|
+
* using op_type =
|
410
|
+
* decltype(socket1.async_read_some(boost::asio::buffer(data1)));
|
401
411
|
*
|
402
412
|
* std::vector<op_type> ops;
|
403
|
-
*
|
404
|
-
* ops.push_back(
|
405
|
-
* socket1.async_read_some(
|
406
|
-
* boost::asio::buffer(data1),
|
407
|
-
* boost::asio::deferred
|
408
|
-
* )
|
409
|
-
* );
|
410
|
-
*
|
411
|
-
* ops.push_back(
|
412
|
-
* socket2.async_read_some(
|
413
|
-
* boost::asio::buffer(data2),
|
414
|
-
* boost::asio::deferred
|
415
|
-
* )
|
416
|
-
* );
|
413
|
+
* ops.push_back(socket1.async_read_some(boost::asio::buffer(data1)));
|
414
|
+
* ops.push_back(socket2.async_read_some(boost::asio::buffer(data2)));
|
417
415
|
*
|
418
416
|
* boost::asio::experimental::make_parallel_group(
|
419
417
|
* std::allocator_arg_t,
|
@@ -85,8 +85,9 @@ struct promise_value_type<>
|
|
85
85
|
* awaitable<void> read_write_some(boost::asio::ip::tcp::socket & sock,
|
86
86
|
* boost::asio::mutable_buffer read_buf, boost::asio::const_buffer to_write)
|
87
87
|
* {
|
88
|
-
* auto p = boost::asio::async_read(read_buf,
|
89
|
-
*
|
88
|
+
* auto p = boost::asio::async_read(read_buf,
|
89
|
+
* boost::asio::experimental::use_promise);
|
90
|
+
* co_await boost::asio::async_write_some(to_write);
|
90
91
|
* co_await p;
|
91
92
|
* }
|
92
93
|
* @endcode
|
@@ -140,7 +141,6 @@ struct promise<void(Ts...), Executor, Allocator>
|
|
140
141
|
*/
|
141
142
|
~promise() { cancel(); }
|
142
143
|
|
143
|
-
|
144
144
|
private:
|
145
145
|
#if !defined(GENERATING_DOCUMENTATION)
|
146
146
|
template <typename, typename, typename> friend struct promise;
|
@@ -48,8 +48,9 @@ namespace experimental {
|
|
48
48
|
* the asynchronous operation completes, and the result of the operation is
|
49
49
|
* returned.
|
50
50
|
*
|
51
|
-
* Note that this token is not the most efficient (use
|
52
|
-
* for that) but does provide type erasure, as it
|
51
|
+
* Note that this token is not the most efficient (use the default completion
|
52
|
+
* token @c boost::asio::deferred for that) but does provide type erasure, as it
|
53
|
+
* will always return a @c coro.
|
53
54
|
*/
|
54
55
|
template <typename Allocator = std::allocator<void>>
|
55
56
|
struct use_coro_t
|
@@ -84,7 +85,6 @@ struct use_coro_t
|
|
84
85
|
{
|
85
86
|
}
|
86
87
|
|
87
|
-
|
88
88
|
/// Specify an alternate allocator.
|
89
89
|
template <typename OtherAllocator>
|
90
90
|
use_coro_t<OtherAllocator> rebind(const OtherAllocator& allocator) const
|
@@ -174,9 +174,9 @@ private:
|
|
174
174
|
* See the documentation for boost::asio::use_coro_t for a usage example.
|
175
175
|
*/
|
176
176
|
#if defined(GENERATING_DOCUMENTATION)
|
177
|
-
constexpr use_coro_t<> use_coro;
|
177
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr use_coro_t<> use_coro;
|
178
178
|
#else
|
179
|
-
constexpr use_coro_t<> use_coro(0, 0, 0);
|
179
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr use_coro_t<> use_coro(0, 0, 0);
|
180
180
|
#endif
|
181
181
|
|
182
182
|
} // namespace experimental
|
@@ -0,0 +1,144 @@
|
|
1
|
+
//
|
2
|
+
// immediate.hpp
|
3
|
+
// ~~~~~~~~~~~~~
|
4
|
+
//
|
5
|
+
// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
6
|
+
//
|
7
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
8
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
9
|
+
//
|
10
|
+
|
11
|
+
#ifndef BOOST_ASIO_IMMEDIATE_HPP
|
12
|
+
#define BOOST_ASIO_IMMEDIATE_HPP
|
13
|
+
|
14
|
+
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
|
17
|
+
|
18
|
+
#include <boost/asio/detail/config.hpp>
|
19
|
+
#include <boost/asio/associated_immediate_executor.hpp>
|
20
|
+
#include <boost/asio/async_result.hpp>
|
21
|
+
#include <boost/asio/dispatch.hpp>
|
22
|
+
|
23
|
+
#include <boost/asio/detail/push_options.hpp>
|
24
|
+
|
25
|
+
namespace boost {
|
26
|
+
namespace asio {
|
27
|
+
namespace detail {
|
28
|
+
|
29
|
+
template <typename Executor>
|
30
|
+
class initiate_immediate
|
31
|
+
{
|
32
|
+
public:
|
33
|
+
typedef Executor executor_type;
|
34
|
+
|
35
|
+
explicit initiate_immediate(const Executor& ex)
|
36
|
+
: ex_(ex)
|
37
|
+
{
|
38
|
+
}
|
39
|
+
|
40
|
+
executor_type get_executor() const noexcept
|
41
|
+
{
|
42
|
+
return ex_;
|
43
|
+
}
|
44
|
+
|
45
|
+
template <typename CompletionHandler>
|
46
|
+
void operator()(CompletionHandler&& handler) const
|
47
|
+
{
|
48
|
+
typename associated_immediate_executor<
|
49
|
+
CompletionHandler, executor_type>::type ex =
|
50
|
+
(get_associated_immediate_executor)(handler, ex_);
|
51
|
+
(dispatch)(ex, static_cast<CompletionHandler&&>(handler));
|
52
|
+
}
|
53
|
+
|
54
|
+
private:
|
55
|
+
Executor ex_;
|
56
|
+
};
|
57
|
+
|
58
|
+
} // namespace detail
|
59
|
+
|
60
|
+
/// Launch a trivial asynchronous operation that completes immediately.
|
61
|
+
/**
|
62
|
+
* The async_immediate function is intended for use by composed operations,
|
63
|
+
* which can delegate to this operation in order to implement the correct
|
64
|
+
* semantics for immediate completion.
|
65
|
+
*
|
66
|
+
* @param ex The asynchronous operation's I/O executor.
|
67
|
+
*
|
68
|
+
* @param token The completion token.
|
69
|
+
*
|
70
|
+
* The completion handler is immediately submitted for execution by calling
|
71
|
+
* boost::asio::dispatch() on the handler's associated immediate executor.
|
72
|
+
*
|
73
|
+
* If the completion handler does not have a customised associated immediate
|
74
|
+
* executor, then the handler is submitted as if by calling boost::asio::post()
|
75
|
+
* on the supplied I/O executor.
|
76
|
+
*
|
77
|
+
* @par Completion Signature
|
78
|
+
* @code void() @endcode
|
79
|
+
*/
|
80
|
+
template <typename Executor,
|
81
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void()) NullaryToken
|
82
|
+
= default_completion_token_t<Executor>>
|
83
|
+
inline auto async_immediate(const Executor& ex,
|
84
|
+
NullaryToken&& token = default_completion_token_t<Executor>(),
|
85
|
+
constraint_t<
|
86
|
+
(execution::is_executor<Executor>::value
|
87
|
+
&& can_require<Executor, execution::blocking_t::never_t>::value)
|
88
|
+
|| is_executor<Executor>::value
|
89
|
+
> = 0)
|
90
|
+
-> decltype(
|
91
|
+
async_initiate<NullaryToken, void()>(
|
92
|
+
declval<detail::initiate_immediate<Executor>>(), token))
|
93
|
+
{
|
94
|
+
return async_initiate<NullaryToken, void()>(
|
95
|
+
detail::initiate_immediate<Executor>(ex), token);
|
96
|
+
}
|
97
|
+
|
98
|
+
/// Launch a trivial asynchronous operation that completes immediately.
|
99
|
+
/**
|
100
|
+
* The async_immediate function is intended for use by composed operations,
|
101
|
+
* which can delegate to this operation in order to implement the correct
|
102
|
+
* semantics for immediate completion.
|
103
|
+
*
|
104
|
+
* @param ex The execution context used to obtain the asynchronous operation's
|
105
|
+
* I/O executor.
|
106
|
+
*
|
107
|
+
* @param token The completion token.
|
108
|
+
*
|
109
|
+
* The completion handler is immediately submitted for execution by calling
|
110
|
+
* boost::asio::dispatch() on the handler's associated immediate executor.
|
111
|
+
*
|
112
|
+
* If the completion handler does not have a customised associated immediate
|
113
|
+
* executor, then the handler is submitted as if by calling boost::asio::post()
|
114
|
+
* on the I/O executor obtained from the supplied execution context.
|
115
|
+
*
|
116
|
+
* @par Completion Signature
|
117
|
+
* @code void() @endcode
|
118
|
+
*/
|
119
|
+
template <typename ExecutionContext,
|
120
|
+
BOOST_ASIO_COMPLETION_TOKEN_FOR(void()) NullaryToken
|
121
|
+
= default_completion_token_t<typename ExecutionContext::executor_type>>
|
122
|
+
inline auto async_immediate(ExecutionContext& ctx,
|
123
|
+
NullaryToken&& token = default_completion_token_t<
|
124
|
+
typename ExecutionContext::executor_type>(),
|
125
|
+
constraint_t<
|
126
|
+
is_convertible<ExecutionContext&, execution_context&>::value
|
127
|
+
> = 0)
|
128
|
+
-> decltype(
|
129
|
+
async_initiate<NullaryToken, void()>(
|
130
|
+
declval<detail::initiate_immediate<
|
131
|
+
typename ExecutionContext::executor_type>>(), token))
|
132
|
+
{
|
133
|
+
return async_initiate<NullaryToken, void()>(
|
134
|
+
detail::initiate_immediate<
|
135
|
+
typename ExecutionContext::executor_type>(
|
136
|
+
ctx.get_executor()), token);
|
137
|
+
}
|
138
|
+
|
139
|
+
} // namespace asio
|
140
|
+
} // namespace boost
|
141
|
+
|
142
|
+
#include <boost/asio/detail/pop_options.hpp>
|
143
|
+
|
144
|
+
#endif // BOOST_ASIO_IMMEDIATE_HPP
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#include <boost/asio/associator.hpp>
|
20
20
|
#include <boost/asio/async_result.hpp>
|
21
21
|
#include <boost/asio/detail/handler_cont_helpers.hpp>
|
22
|
+
#include <boost/asio/detail/initiation_base.hpp>
|
22
23
|
#include <boost/asio/detail/type_traits.hpp>
|
23
24
|
#include <boost/asio/detail/utility.hpp>
|
24
25
|
|
@@ -94,25 +95,31 @@ struct async_result<append_t<CompletionToken, Values...>, Signature>
|
|
94
95
|
Signature, Values...>::type signature;
|
95
96
|
|
96
97
|
template <typename Initiation>
|
97
|
-
struct init_wrapper
|
98
|
+
struct init_wrapper : detail::initiation_base<Initiation>
|
98
99
|
{
|
99
|
-
|
100
|
-
|
100
|
+
using detail::initiation_base<Initiation>::initiation_base;
|
101
|
+
|
102
|
+
template <typename Handler, typename... Args>
|
103
|
+
void operator()(Handler&& handler,
|
104
|
+
std::tuple<Values...> values, Args&&... args) &&
|
101
105
|
{
|
106
|
+
static_cast<Initiation&&>(*this)(
|
107
|
+
detail::append_handler<decay_t<Handler>, Values...>(
|
108
|
+
static_cast<Handler&&>(handler),
|
109
|
+
static_cast<std::tuple<Values...>&&>(values)),
|
110
|
+
static_cast<Args&&>(args)...);
|
102
111
|
}
|
103
112
|
|
104
113
|
template <typename Handler, typename... Args>
|
105
114
|
void operator()(Handler&& handler,
|
106
|
-
std::tuple<Values...> values, Args&&... args)
|
115
|
+
std::tuple<Values...> values, Args&&... args) const &
|
107
116
|
{
|
108
|
-
static_cast<Initiation
|
117
|
+
static_cast<const Initiation&>(*this)(
|
109
118
|
detail::append_handler<decay_t<Handler>, Values...>(
|
110
119
|
static_cast<Handler&&>(handler),
|
111
120
|
static_cast<std::tuple<Values...>&&>(values)),
|
112
121
|
static_cast<Args&&>(args)...);
|
113
122
|
}
|
114
|
-
|
115
|
-
Initiation initiation_;
|
116
123
|
};
|
117
124
|
|
118
125
|
template <typename Initiation, typename RawCompletionToken, typename... Args>
|
@@ -17,9 +17,11 @@
|
|
17
17
|
|
18
18
|
#include <boost/asio/detail/config.hpp>
|
19
19
|
#include <tuple>
|
20
|
+
#include <boost/asio/associated_executor.hpp>
|
20
21
|
#include <boost/asio/associator.hpp>
|
21
22
|
#include <boost/asio/async_result.hpp>
|
22
23
|
#include <boost/asio/detail/handler_cont_helpers.hpp>
|
24
|
+
#include <boost/asio/detail/initiation_base.hpp>
|
23
25
|
#include <boost/asio/detail/type_traits.hpp>
|
24
26
|
|
25
27
|
#include <boost/asio/detail/push_options.hpp>
|
@@ -119,23 +121,27 @@ struct async_result<as_tuple_t<CompletionToken>, Signatures...>
|
|
119
121
|
typename detail::as_tuple_signature<Signatures>::type...>
|
120
122
|
{
|
121
123
|
template <typename Initiation>
|
122
|
-
struct init_wrapper
|
124
|
+
struct init_wrapper : detail::initiation_base<Initiation>
|
123
125
|
{
|
124
|
-
|
125
|
-
|
126
|
+
using detail::initiation_base<Initiation>::initiation_base;
|
127
|
+
|
128
|
+
template <typename Handler, typename... Args>
|
129
|
+
void operator()(Handler&& handler, Args&&... args) &&
|
126
130
|
{
|
131
|
+
static_cast<Initiation&&>(*this)(
|
132
|
+
detail::as_tuple_handler<decay_t<Handler>>(
|
133
|
+
static_cast<Handler&&>(handler)),
|
134
|
+
static_cast<Args&&>(args)...);
|
127
135
|
}
|
128
136
|
|
129
137
|
template <typename Handler, typename... Args>
|
130
|
-
void operator()(Handler&& handler, Args&&... args)
|
138
|
+
void operator()(Handler&& handler, Args&&... args) const &
|
131
139
|
{
|
132
|
-
static_cast<Initiation
|
140
|
+
static_cast<const Initiation&>(*this)(
|
133
141
|
detail::as_tuple_handler<decay_t<Handler>>(
|
134
142
|
static_cast<Handler&&>(handler)),
|
135
143
|
static_cast<Args&&>(args)...);
|
136
144
|
}
|
137
|
-
|
138
|
-
Initiation initiation_;
|
139
145
|
};
|
140
146
|
|
141
147
|
template <typename Initiation, typename RawCompletionToken, typename... Args>
|
@@ -172,23 +178,27 @@ struct async_result<as_tuple_t<CompletionToken>, Signature>
|
|
172
178
|
typename detail::as_tuple_signature<Signature>::type>
|
173
179
|
{
|
174
180
|
template <typename Initiation>
|
175
|
-
struct init_wrapper
|
181
|
+
struct init_wrapper : detail::initiation_base<Initiation>
|
176
182
|
{
|
177
|
-
|
178
|
-
|
183
|
+
using detail::initiation_base<Initiation>::initiation_base;
|
184
|
+
|
185
|
+
template <typename Handler, typename... Args>
|
186
|
+
void operator()(Handler&& handler, Args&&... args) &&
|
179
187
|
{
|
188
|
+
static_cast<Initiation&&>(*this)(
|
189
|
+
detail::as_tuple_handler<decay_t<Handler>>(
|
190
|
+
static_cast<Handler&&>(handler)),
|
191
|
+
static_cast<Args&&>(args)...);
|
180
192
|
}
|
181
193
|
|
182
194
|
template <typename Handler, typename... Args>
|
183
|
-
void operator()(Handler&& handler, Args&&... args)
|
195
|
+
void operator()(Handler&& handler, Args&&... args) const &
|
184
196
|
{
|
185
|
-
static_cast<Initiation
|
197
|
+
static_cast<const Initiation&>(*this)(
|
186
198
|
detail::as_tuple_handler<decay_t<Handler>>(
|
187
199
|
static_cast<Handler&&>(handler)),
|
188
200
|
static_cast<Args&&>(args)...);
|
189
201
|
}
|
190
|
-
|
191
|
-
Initiation initiation_;
|
192
202
|
};
|
193
203
|
|
194
204
|
template <typename Initiation, typename RawCompletionToken, typename... Args>
|
@@ -237,6 +247,27 @@ struct associator<Associator,
|
|
237
247
|
}
|
238
248
|
};
|
239
249
|
|
250
|
+
template <typename... Signatures>
|
251
|
+
struct async_result<partial_as_tuple, Signatures...>
|
252
|
+
{
|
253
|
+
template <typename Initiation, typename RawCompletionToken, typename... Args>
|
254
|
+
static auto initiate(Initiation&& initiation,
|
255
|
+
RawCompletionToken&&, Args&&... args)
|
256
|
+
-> decltype(
|
257
|
+
async_initiate<Signatures...>(
|
258
|
+
static_cast<Initiation&&>(initiation),
|
259
|
+
as_tuple_t<
|
260
|
+
default_completion_token_t<associated_executor_t<Initiation>>>{},
|
261
|
+
static_cast<Args&&>(args)...))
|
262
|
+
{
|
263
|
+
return async_initiate<Signatures...>(
|
264
|
+
static_cast<Initiation&&>(initiation),
|
265
|
+
as_tuple_t<
|
266
|
+
default_completion_token_t<associated_executor_t<Initiation>>>{},
|
267
|
+
static_cast<Args&&>(args)...);
|
268
|
+
}
|
269
|
+
};
|
270
|
+
|
240
271
|
#endif // !defined(GENERATING_DOCUMENTATION)
|
241
272
|
|
242
273
|
} // namespace asio
|
@@ -546,7 +546,7 @@ public:
|
|
546
546
|
{
|
547
547
|
this->coro_ = coroutine_handle<awaitable_frame>::from_promise(*this);
|
548
548
|
return awaitable<T, Executor>(this);
|
549
|
-
}
|
549
|
+
}
|
550
550
|
|
551
551
|
template <typename U>
|
552
552
|
void return_value(U&& u)
|
@@ -583,7 +583,7 @@ public:
|
|
583
583
|
{
|
584
584
|
this->coro_ = coroutine_handle<awaitable_frame>::from_promise(*this);
|
585
585
|
return awaitable<void, Executor>(this);
|
586
|
-
}
|
586
|
+
}
|
587
587
|
|
588
588
|
void return_void()
|
589
589
|
{
|
@@ -621,7 +621,7 @@ public:
|
|
621
621
|
{
|
622
622
|
this->coro_ = coroutine_handle<awaitable_frame>::from_promise(*this);
|
623
623
|
return awaitable<awaitable_thread_entry_point, Executor>(this);
|
624
|
-
}
|
624
|
+
}
|
625
625
|
|
626
626
|
void return_void()
|
627
627
|
{
|