passenger 6.0.22 → 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 +59 -1
- data/Rakefile +13 -2
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +18 -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 +24 -13
- data/package.json +1 -1
- data/passenger.gemspec +4 -2
- data/resources/templates/standalone/server.erb +1 -0
- 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 +9 -1
- 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 -4
- 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 +8 -3
- data/src/agent/Core/Controller/CheckoutSession.cpp +24 -1
- data/src/agent/Core/Controller/Config.h +5 -1
- data/src/agent/Core/Controller.h +1 -0
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/OptionParser.h +3 -0
- data/src/agent/Core/SpawningKit/ErrorRenderer.h +5 -0
- 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 +2 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +15 -0
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +5 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +13 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +16 -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/LString.h +4 -0
- 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/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
- data/src/nginx_module/Configuration.c +7 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +6 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +14 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/ruby_native_extension/passenger_native_support.c +1 -0
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +5 -0
- 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/nginx/config_options.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +30 -56
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +39 -10
@@ -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
|
{
|