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
@@ -32,34 +32,97 @@ namespace detail
|
|
32
32
|
template <typename, typename> class initiate_async_range_connect;
|
33
33
|
template <typename, typename> class initiate_async_iterator_connect;
|
34
34
|
|
35
|
-
|
35
|
+
template <typename T, typename = void, typename = void>
|
36
|
+
struct is_endpoint_sequence_helper : false_type
|
37
|
+
{
|
38
|
+
};
|
36
39
|
|
37
40
|
template <typename T>
|
38
|
-
|
41
|
+
struct is_endpoint_sequence_helper<T,
|
42
|
+
void_t<
|
43
|
+
decltype(declval<T>().begin())
|
44
|
+
>,
|
45
|
+
void_t<
|
46
|
+
decltype(declval<T>().end())
|
47
|
+
>
|
48
|
+
> : true_type
|
49
|
+
{
|
50
|
+
};
|
39
51
|
|
40
|
-
template <typename T>
|
41
|
-
struct
|
52
|
+
template <typename T, typename Iterator, typename = void>
|
53
|
+
struct is_connect_condition_helper : false_type
|
54
|
+
{
|
55
|
+
};
|
56
|
+
|
57
|
+
template <typename T, typename Iterator>
|
58
|
+
struct is_connect_condition_helper<T, Iterator,
|
59
|
+
enable_if_t<
|
60
|
+
is_same<
|
61
|
+
result_of_t<T(boost::system::error_code, Iterator)>,
|
62
|
+
Iterator
|
63
|
+
>::value
|
64
|
+
>
|
65
|
+
> : true_type
|
66
|
+
{
|
67
|
+
};
|
68
|
+
|
69
|
+
template <typename T, typename Iterator>
|
70
|
+
struct is_connect_condition_helper<T, Iterator,
|
71
|
+
enable_if_t<
|
72
|
+
is_same<
|
73
|
+
result_of_t<T(boost::system::error_code,
|
74
|
+
decltype(*declval<Iterator>()))>,
|
75
|
+
bool
|
76
|
+
>::value
|
77
|
+
>
|
78
|
+
> : true_type
|
42
79
|
{
|
43
|
-
|
80
|
+
};
|
81
|
+
|
82
|
+
struct default_connect_condition
|
83
|
+
{
|
84
|
+
template <typename Endpoint>
|
85
|
+
bool operator()(const boost::system::error_code&, const Endpoint&)
|
86
|
+
{
|
87
|
+
return true;
|
88
|
+
}
|
44
89
|
};
|
45
90
|
} // namespace detail
|
46
91
|
|
92
|
+
#if defined(GENERATING_DOCUMENTATION)
|
93
|
+
|
47
94
|
/// Type trait used to determine whether a type is an endpoint sequence that can
|
48
95
|
/// be used with with @c connect and @c async_connect.
|
49
96
|
template <typename T>
|
50
97
|
struct is_endpoint_sequence
|
51
98
|
{
|
52
|
-
#if defined(GENERATING_DOCUMENTATION)
|
53
99
|
/// The value member is true if the type may be used as an endpoint sequence.
|
54
|
-
static const bool value;
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
100
|
+
static const bool value = automatically_determined;
|
101
|
+
};
|
102
|
+
|
103
|
+
/// Trait for determining whether a function object is a connect condition that
|
104
|
+
/// can be used with @c connect and @c async_connect.
|
105
|
+
template <typename T, typename Iterator>
|
106
|
+
struct is_connect_condition
|
107
|
+
{
|
108
|
+
/// The value member is true if the type may be used as a connect condition.
|
109
|
+
static constexpr bool value = automatically_determined;
|
110
|
+
};
|
111
|
+
|
112
|
+
#else // defined(GENERATING_DOCUMENTATION)
|
113
|
+
|
114
|
+
template <typename T>
|
115
|
+
struct is_endpoint_sequence : detail::is_endpoint_sequence_helper<T>
|
116
|
+
{
|
117
|
+
};
|
118
|
+
|
119
|
+
template <typename T, typename Iterator>
|
120
|
+
struct is_connect_condition : detail::is_connect_condition_helper<T, Iterator>
|
121
|
+
{
|
61
122
|
};
|
62
123
|
|
124
|
+
#endif // defined(GENERATING_DOCUMENTATION)
|
125
|
+
|
63
126
|
/**
|
64
127
|
* @defgroup connect boost::asio::connect
|
65
128
|
*
|
@@ -95,7 +158,9 @@ struct is_endpoint_sequence
|
|
95
158
|
template <typename Protocol, typename Executor, typename EndpointSequence>
|
96
159
|
typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
97
160
|
const EndpointSequence& endpoints,
|
98
|
-
constraint_t<
|
161
|
+
constraint_t<
|
162
|
+
is_endpoint_sequence<EndpointSequence>::value
|
163
|
+
> = 0);
|
99
164
|
|
100
165
|
/// Establishes a socket connection by trying each endpoint in a sequence.
|
101
166
|
/**
|
@@ -130,7 +195,9 @@ typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
|
130
195
|
template <typename Protocol, typename Executor, typename EndpointSequence>
|
131
196
|
typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
132
197
|
const EndpointSequence& endpoints, boost::system::error_code& ec,
|
133
|
-
constraint_t<
|
198
|
+
constraint_t<
|
199
|
+
is_endpoint_sequence<EndpointSequence>::value
|
200
|
+
> = 0);
|
134
201
|
|
135
202
|
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
136
203
|
/// (Deprecated: Use range overload.) Establishes a socket connection by trying
|
@@ -159,7 +226,9 @@ typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
|
159
226
|
*/
|
160
227
|
template <typename Protocol, typename Executor, typename Iterator>
|
161
228
|
Iterator connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
162
|
-
constraint_t
|
229
|
+
constraint_t<
|
230
|
+
!is_endpoint_sequence<Iterator>::value
|
231
|
+
> = 0);
|
163
232
|
|
164
233
|
/// (Deprecated: Use range overload.) Establishes a socket connection by trying
|
165
234
|
/// each endpoint in a sequence.
|
@@ -188,7 +257,9 @@ Iterator connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
|
188
257
|
template <typename Protocol, typename Executor, typename Iterator>
|
189
258
|
Iterator connect(basic_socket<Protocol, Executor>& s,
|
190
259
|
Iterator begin, boost::system::error_code& ec,
|
191
|
-
constraint_t
|
260
|
+
constraint_t<
|
261
|
+
!is_endpoint_sequence<Iterator>::value
|
262
|
+
> = 0);
|
192
263
|
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
193
264
|
|
194
265
|
/// Establishes a socket connection by trying each endpoint in a sequence.
|
@@ -314,7 +385,13 @@ template <typename Protocol, typename Executor,
|
|
314
385
|
typename EndpointSequence, typename ConnectCondition>
|
315
386
|
typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
316
387
|
const EndpointSequence& endpoints, ConnectCondition connect_condition,
|
317
|
-
constraint_t<
|
388
|
+
constraint_t<
|
389
|
+
is_endpoint_sequence<EndpointSequence>::value
|
390
|
+
> = 0,
|
391
|
+
constraint_t<
|
392
|
+
is_connect_condition<ConnectCondition,
|
393
|
+
decltype(declval<const EndpointSequence&>().begin())>::value
|
394
|
+
> = 0);
|
318
395
|
|
319
396
|
/// Establishes a socket connection by trying each endpoint in a sequence.
|
320
397
|
/**
|
@@ -381,7 +458,13 @@ template <typename Protocol, typename Executor,
|
|
381
458
|
typename Protocol::endpoint connect(basic_socket<Protocol, Executor>& s,
|
382
459
|
const EndpointSequence& endpoints, ConnectCondition connect_condition,
|
383
460
|
boost::system::error_code& ec,
|
384
|
-
constraint_t<
|
461
|
+
constraint_t<
|
462
|
+
is_endpoint_sequence<EndpointSequence>::value
|
463
|
+
> = 0,
|
464
|
+
constraint_t<
|
465
|
+
is_connect_condition<ConnectCondition,
|
466
|
+
decltype(declval<const EndpointSequence&>().begin())>::value
|
467
|
+
> = 0);
|
385
468
|
|
386
469
|
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
387
470
|
/// (Deprecated: Use range overload.) Establishes a socket connection by trying
|
@@ -423,7 +506,12 @@ template <typename Protocol, typename Executor,
|
|
423
506
|
typename Iterator, typename ConnectCondition>
|
424
507
|
Iterator connect(basic_socket<Protocol, Executor>& s,
|
425
508
|
Iterator begin, ConnectCondition connect_condition,
|
426
|
-
constraint_t
|
509
|
+
constraint_t<
|
510
|
+
!is_endpoint_sequence<Iterator>::value
|
511
|
+
> = 0,
|
512
|
+
constraint_t<
|
513
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
514
|
+
> = 0);
|
427
515
|
|
428
516
|
/// (Deprecated: Use range overload.) Establishes a socket connection by trying
|
429
517
|
/// each endpoint in a sequence.
|
@@ -464,7 +552,12 @@ template <typename Protocol, typename Executor,
|
|
464
552
|
typename Iterator, typename ConnectCondition>
|
465
553
|
Iterator connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
466
554
|
ConnectCondition connect_condition, boost::system::error_code& ec,
|
467
|
-
constraint_t
|
555
|
+
constraint_t<
|
556
|
+
!is_endpoint_sequence<Iterator>::value
|
557
|
+
> = 0,
|
558
|
+
constraint_t<
|
559
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
560
|
+
> = 0);
|
468
561
|
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
469
562
|
|
470
563
|
/// Establishes a socket connection by trying each endpoint in a sequence.
|
@@ -524,7 +617,10 @@ Iterator connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
|
524
617
|
template <typename Protocol, typename Executor,
|
525
618
|
typename Iterator, typename ConnectCondition>
|
526
619
|
Iterator connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
527
|
-
Iterator end, ConnectCondition connect_condition
|
620
|
+
Iterator end, ConnectCondition connect_condition,
|
621
|
+
constraint_t<
|
622
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
623
|
+
> = 0);
|
528
624
|
|
529
625
|
/// Establishes a socket connection by trying each endpoint in a sequence.
|
530
626
|
/**
|
@@ -593,7 +689,10 @@ template <typename Protocol, typename Executor,
|
|
593
689
|
typename Iterator, typename ConnectCondition>
|
594
690
|
Iterator connect(basic_socket<Protocol, Executor>& s,
|
595
691
|
Iterator begin, Iterator end, ConnectCondition connect_condition,
|
596
|
-
boost::system::error_code& ec
|
692
|
+
boost::system::error_code& ec,
|
693
|
+
constraint_t<
|
694
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
695
|
+
> = 0);
|
597
696
|
|
598
697
|
/*@}*/
|
599
698
|
|
@@ -637,7 +736,7 @@ Iterator connect(basic_socket<Protocol, Executor>& s,
|
|
637
736
|
* Regardless of whether the asynchronous operation completes immediately or
|
638
737
|
* not, the completion handler will not be invoked from within this function.
|
639
738
|
* On immediate completion, invocation of the handler will be performed in a
|
640
|
-
* manner equivalent to using boost::asio::
|
739
|
+
* manner equivalent to using boost::asio::async_immediate().
|
641
740
|
*
|
642
741
|
* @par Completion Signature
|
643
742
|
* @code void(boost::system::error_code, typename Protocol::endpoint) @endcode
|
@@ -686,15 +785,27 @@ template <typename Protocol, typename Executor, typename EndpointSequence,
|
|
686
785
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
687
786
|
typename Protocol::endpoint)) RangeConnectToken
|
688
787
|
= default_completion_token_t<Executor>>
|
689
|
-
auto async_connect(basic_socket<Protocol, Executor>& s,
|
788
|
+
inline auto async_connect(basic_socket<Protocol, Executor>& s,
|
690
789
|
const EndpointSequence& endpoints,
|
691
790
|
RangeConnectToken&& token = default_completion_token_t<Executor>(),
|
692
|
-
constraint_t<
|
791
|
+
constraint_t<
|
792
|
+
is_endpoint_sequence<EndpointSequence>::value
|
793
|
+
> = 0,
|
794
|
+
constraint_t<
|
795
|
+
!is_connect_condition<RangeConnectToken,
|
796
|
+
decltype(declval<const EndpointSequence&>().begin())>::value
|
797
|
+
> = 0)
|
693
798
|
-> decltype(
|
694
799
|
async_initiate<RangeConnectToken,
|
695
800
|
void (boost::system::error_code, typename Protocol::endpoint)>(
|
696
801
|
declval<detail::initiate_async_range_connect<Protocol, Executor>>(),
|
697
|
-
token, endpoints, declval<detail::default_connect_condition>()))
|
802
|
+
token, endpoints, declval<detail::default_connect_condition>()))
|
803
|
+
{
|
804
|
+
return async_initiate<RangeConnectToken,
|
805
|
+
void (boost::system::error_code, typename Protocol::endpoint)>(
|
806
|
+
detail::initiate_async_range_connect<Protocol, Executor>(s),
|
807
|
+
token, endpoints, detail::default_connect_condition());
|
808
|
+
}
|
698
809
|
|
699
810
|
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
700
811
|
/// (Deprecated: Use range overload.) Asynchronously establishes a socket
|
@@ -729,7 +840,7 @@ auto async_connect(basic_socket<Protocol, Executor>& s,
|
|
729
840
|
* Regardless of whether the asynchronous operation completes immediately or
|
730
841
|
* not, the completion handler will not be invoked from within this function.
|
731
842
|
* On immediate completion, invocation of the handler will be performed in a
|
732
|
-
* manner equivalent to using boost::asio::
|
843
|
+
* manner equivalent to using boost::asio::async_immediate().
|
733
844
|
*
|
734
845
|
* @par Completion Signature
|
735
846
|
* @code void(boost::system::error_code, Iterator) @endcode
|
@@ -751,15 +862,29 @@ auto async_connect(basic_socket<Protocol, Executor>& s,
|
|
751
862
|
template <typename Protocol, typename Executor, typename Iterator,
|
752
863
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
753
864
|
Iterator)) IteratorConnectToken = default_completion_token_t<Executor>>
|
754
|
-
auto async_connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
865
|
+
inline auto async_connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
755
866
|
IteratorConnectToken&& token = default_completion_token_t<Executor>(),
|
756
|
-
constraint_t
|
867
|
+
constraint_t<
|
868
|
+
!is_endpoint_sequence<Iterator>::value
|
869
|
+
> = 0,
|
870
|
+
constraint_t<
|
871
|
+
!is_same<Iterator, decay_t<IteratorConnectToken>>::value
|
872
|
+
> = 0,
|
873
|
+
constraint_t<
|
874
|
+
!is_connect_condition<IteratorConnectToken, Iterator>::value
|
875
|
+
> = 0)
|
757
876
|
-> decltype(
|
758
877
|
async_initiate<IteratorConnectToken,
|
759
878
|
void (boost::system::error_code, Iterator)>(
|
760
879
|
declval<detail::initiate_async_iterator_connect<Protocol, Executor>>(),
|
761
880
|
token, begin, Iterator(),
|
762
|
-
declval<detail::default_connect_condition>()))
|
881
|
+
declval<detail::default_connect_condition>()))
|
882
|
+
{
|
883
|
+
return async_initiate<IteratorConnectToken,
|
884
|
+
void (boost::system::error_code, Iterator)>(
|
885
|
+
detail::initiate_async_iterator_connect<Protocol, Executor>(s),
|
886
|
+
token, begin, Iterator(), detail::default_connect_condition());
|
887
|
+
}
|
763
888
|
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
764
889
|
|
765
890
|
/// Asynchronously establishes a socket connection by trying each endpoint in a
|
@@ -796,7 +921,7 @@ auto async_connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
|
796
921
|
* Regardless of whether the asynchronous operation completes immediately or
|
797
922
|
* not, the completion handler will not be invoked from within this function.
|
798
923
|
* On immediate completion, invocation of the handler will be performed in a
|
799
|
-
* manner equivalent to using boost::asio::
|
924
|
+
* manner equivalent to using boost::asio::async_immediate().
|
800
925
|
*
|
801
926
|
* @par Completion Signature
|
802
927
|
* @code void(boost::system::error_code, Iterator) @endcode
|
@@ -830,14 +955,23 @@ auto async_connect(basic_socket<Protocol, Executor>& s, Iterator begin,
|
|
830
955
|
template <typename Protocol, typename Executor, typename Iterator,
|
831
956
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
832
957
|
Iterator)) IteratorConnectToken = default_completion_token_t<Executor>>
|
833
|
-
auto async_connect(
|
958
|
+
inline auto async_connect(
|
834
959
|
basic_socket<Protocol, Executor>& s, Iterator begin, Iterator end,
|
835
|
-
IteratorConnectToken&& token = default_completion_token_t<Executor>()
|
960
|
+
IteratorConnectToken&& token = default_completion_token_t<Executor>(),
|
961
|
+
constraint_t<
|
962
|
+
!is_connect_condition<IteratorConnectToken, Iterator>::value
|
963
|
+
> = 0)
|
836
964
|
-> decltype(
|
837
965
|
async_initiate<IteratorConnectToken,
|
838
966
|
void (boost::system::error_code, Iterator)>(
|
839
967
|
declval<detail::initiate_async_iterator_connect<Protocol, Executor>>(),
|
840
|
-
token, begin, end, declval<detail::default_connect_condition>()))
|
968
|
+
token, begin, end, declval<detail::default_connect_condition>()))
|
969
|
+
{
|
970
|
+
return async_initiate<IteratorConnectToken,
|
971
|
+
void (boost::system::error_code, Iterator)>(
|
972
|
+
detail::initiate_async_iterator_connect<Protocol, Executor>(s),
|
973
|
+
token, begin, end, detail::default_connect_condition());
|
974
|
+
}
|
841
975
|
|
842
976
|
/// Asynchronously establishes a socket connection by trying each endpoint in a
|
843
977
|
/// sequence.
|
@@ -882,7 +1016,7 @@ auto async_connect(
|
|
882
1016
|
* Regardless of whether the asynchronous operation completes immediately or
|
883
1017
|
* not, the completion handler will not be invoked from within this function.
|
884
1018
|
* On immediate completion, invocation of the handler will be performed in a
|
885
|
-
* manner equivalent to using boost::asio::
|
1019
|
+
* manner equivalent to using boost::asio::async_immediate().
|
886
1020
|
*
|
887
1021
|
* @par Completion Signature
|
888
1022
|
* @code void(boost::system::error_code, typename Protocol::endpoint) @endcode
|
@@ -955,15 +1089,27 @@ template <typename Protocol, typename Executor,
|
|
955
1089
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
956
1090
|
typename Protocol::endpoint)) RangeConnectToken
|
957
1091
|
= default_completion_token_t<Executor>>
|
958
|
-
auto async_connect(basic_socket<Protocol, Executor>& s,
|
1092
|
+
inline auto async_connect(basic_socket<Protocol, Executor>& s,
|
959
1093
|
const EndpointSequence& endpoints, ConnectCondition connect_condition,
|
960
1094
|
RangeConnectToken&& token = default_completion_token_t<Executor>(),
|
961
|
-
constraint_t<
|
1095
|
+
constraint_t<
|
1096
|
+
is_endpoint_sequence<EndpointSequence>::value
|
1097
|
+
> = 0,
|
1098
|
+
constraint_t<
|
1099
|
+
is_connect_condition<ConnectCondition,
|
1100
|
+
decltype(declval<const EndpointSequence&>().begin())>::value
|
1101
|
+
> = 0)
|
962
1102
|
-> decltype(
|
963
1103
|
async_initiate<RangeConnectToken,
|
964
1104
|
void (boost::system::error_code, typename Protocol::endpoint)>(
|
965
1105
|
declval<detail::initiate_async_range_connect<Protocol, Executor>>(),
|
966
|
-
token, endpoints, connect_condition))
|
1106
|
+
token, endpoints, connect_condition))
|
1107
|
+
{
|
1108
|
+
return async_initiate<RangeConnectToken,
|
1109
|
+
void (boost::system::error_code, typename Protocol::endpoint)>(
|
1110
|
+
detail::initiate_async_range_connect<Protocol, Executor>(s),
|
1111
|
+
token, endpoints, connect_condition);
|
1112
|
+
}
|
967
1113
|
|
968
1114
|
#if !defined(BOOST_ASIO_NO_DEPRECATED)
|
969
1115
|
/// (Deprecated: Use range overload.) Asynchronously establishes a socket
|
@@ -1009,7 +1155,7 @@ auto async_connect(basic_socket<Protocol, Executor>& s,
|
|
1009
1155
|
* Regardless of whether the asynchronous operation completes immediately or
|
1010
1156
|
* not, the completion handler will not be invoked from within this function.
|
1011
1157
|
* On immediate completion, invocation of the handler will be performed in a
|
1012
|
-
* manner equivalent to using boost::asio::
|
1158
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1013
1159
|
*
|
1014
1160
|
* @par Completion Signature
|
1015
1161
|
* @code void(boost::system::error_code, Iterator) @endcode
|
@@ -1032,15 +1178,26 @@ template <typename Protocol, typename Executor,
|
|
1032
1178
|
typename Iterator, typename ConnectCondition,
|
1033
1179
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1034
1180
|
Iterator)) IteratorConnectToken = default_completion_token_t<Executor>>
|
1035
|
-
auto async_connect(basic_socket<Protocol, Executor>& s,
|
1181
|
+
inline auto async_connect(basic_socket<Protocol, Executor>& s,
|
1036
1182
|
Iterator begin, ConnectCondition connect_condition,
|
1037
1183
|
IteratorConnectToken&& token = default_completion_token_t<Executor>(),
|
1038
|
-
constraint_t
|
1184
|
+
constraint_t<
|
1185
|
+
!is_endpoint_sequence<Iterator>::value
|
1186
|
+
> = 0,
|
1187
|
+
constraint_t<
|
1188
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
1189
|
+
> = 0)
|
1039
1190
|
-> decltype(
|
1040
1191
|
async_initiate<IteratorConnectToken,
|
1041
1192
|
void (boost::system::error_code, Iterator)>(
|
1042
1193
|
declval<detail::initiate_async_iterator_connect<Protocol, Executor>>(),
|
1043
|
-
token, begin, Iterator(), connect_condition))
|
1194
|
+
token, begin, Iterator(), connect_condition))
|
1195
|
+
{
|
1196
|
+
return async_initiate<IteratorConnectToken,
|
1197
|
+
void (boost::system::error_code, Iterator)>(
|
1198
|
+
detail::initiate_async_iterator_connect<Protocol, Executor>(s),
|
1199
|
+
token, begin, Iterator(), connect_condition);
|
1200
|
+
}
|
1044
1201
|
#endif // !defined(BOOST_ASIO_NO_DEPRECATED)
|
1045
1202
|
|
1046
1203
|
/// Asynchronously establishes a socket connection by trying each endpoint in a
|
@@ -1088,7 +1245,7 @@ auto async_connect(basic_socket<Protocol, Executor>& s,
|
|
1088
1245
|
* Regardless of whether the asynchronous operation completes immediately or
|
1089
1246
|
* not, the completion handler will not be invoked from within this function.
|
1090
1247
|
* On immediate completion, invocation of the handler will be performed in a
|
1091
|
-
* manner equivalent to using boost::asio::
|
1248
|
+
* manner equivalent to using boost::asio::async_immediate().
|
1092
1249
|
*
|
1093
1250
|
* @par Completion Signature
|
1094
1251
|
* @code void(boost::system::error_code, Iterator) @endcode
|
@@ -1161,14 +1318,23 @@ template <typename Protocol, typename Executor,
|
|
1161
1318
|
typename Iterator, typename ConnectCondition,
|
1162
1319
|
BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
|
1163
1320
|
Iterator)) IteratorConnectToken = default_completion_token_t<Executor>>
|
1164
|
-
auto async_connect(basic_socket<Protocol, Executor>& s,
|
1321
|
+
inline auto async_connect(basic_socket<Protocol, Executor>& s,
|
1165
1322
|
Iterator begin, Iterator end, ConnectCondition connect_condition,
|
1166
|
-
IteratorConnectToken&& token = default_completion_token_t<Executor>()
|
1323
|
+
IteratorConnectToken&& token = default_completion_token_t<Executor>(),
|
1324
|
+
constraint_t<
|
1325
|
+
is_connect_condition<ConnectCondition, Iterator>::value
|
1326
|
+
> = 0)
|
1167
1327
|
-> decltype(
|
1168
1328
|
async_initiate<IteratorConnectToken,
|
1169
1329
|
void (boost::system::error_code, Iterator)>(
|
1170
1330
|
declval<detail::initiate_async_iterator_connect<Protocol, Executor>>(),
|
1171
|
-
token, begin, end, connect_condition))
|
1331
|
+
token, begin, end, connect_condition))
|
1332
|
+
{
|
1333
|
+
return async_initiate<IteratorConnectToken,
|
1334
|
+
void (boost::system::error_code, Iterator)>(
|
1335
|
+
detail::initiate_async_iterator_connect<Protocol, Executor>(s),
|
1336
|
+
token, begin, end, connect_condition);
|
1337
|
+
}
|
1172
1338
|
|
1173
1339
|
/*@}*/
|
1174
1340
|
|
@@ -1179,4 +1345,4 @@ auto async_connect(basic_socket<Protocol, Executor>& s,
|
|
1179
1345
|
|
1180
1346
|
#include <boost/asio/impl/connect.hpp>
|
1181
1347
|
|
1182
|
-
#endif
|
1348
|
+
#endif // BOOST_ASIO_CONNECT_HPP
|
@@ -201,7 +201,7 @@ class coroutine_ref;
|
|
201
201
|
* The @c fork pseudo-keyword is used when "forking" a coroutine, i.e. splitting
|
202
202
|
* it into two (or more) copies. One use of @c fork is in a server, where a new
|
203
203
|
* coroutine is created to handle each client connection:
|
204
|
-
*
|
204
|
+
*
|
205
205
|
* @code reenter (this)
|
206
206
|
* {
|
207
207
|
* do
|
@@ -212,9 +212,9 @@ class coroutine_ref;
|
|
212
212
|
* } while (is_parent());
|
213
213
|
* ... client-specific handling follows ...
|
214
214
|
* } @endcode
|
215
|
-
*
|
215
|
+
*
|
216
216
|
* The logical steps involved in a @c fork are:
|
217
|
-
*
|
217
|
+
*
|
218
218
|
* @li @c fork saves the current state of the coroutine.
|
219
219
|
* @li The statement creates a copy of the coroutine and either executes it
|
220
220
|
* immediately or schedules it for later execution.
|
@@ -259,7 +259,6 @@ private:
|
|
259
259
|
int value_;
|
260
260
|
};
|
261
261
|
|
262
|
-
|
263
262
|
namespace detail {
|
264
263
|
|
265
264
|
class coroutine_ref
|
@@ -0,0 +1,91 @@
|
|
1
|
+
//
|
2
|
+
// default_completion_token.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_DEFAULT_COMPLETION_TOKEN_HPP
|
12
|
+
#define BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_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/detail/type_traits.hpp>
|
20
|
+
|
21
|
+
#include <boost/asio/detail/push_options.hpp>
|
22
|
+
|
23
|
+
namespace boost {
|
24
|
+
namespace asio {
|
25
|
+
|
26
|
+
class deferred_t;
|
27
|
+
|
28
|
+
namespace detail {
|
29
|
+
|
30
|
+
template <typename T, typename = void>
|
31
|
+
struct default_completion_token_impl
|
32
|
+
{
|
33
|
+
typedef deferred_t type;
|
34
|
+
};
|
35
|
+
|
36
|
+
template <typename T>
|
37
|
+
struct default_completion_token_impl<T,
|
38
|
+
void_t<typename T::default_completion_token_type>
|
39
|
+
>
|
40
|
+
{
|
41
|
+
typedef typename T::default_completion_token_type type;
|
42
|
+
};
|
43
|
+
|
44
|
+
} // namespace detail
|
45
|
+
|
46
|
+
#if defined(GENERATING_DOCUMENTATION)
|
47
|
+
|
48
|
+
/// Traits type used to determine the default completion token type associated
|
49
|
+
/// with a type (such as an executor).
|
50
|
+
/**
|
51
|
+
* A program may specialise this traits type if the @c T template parameter in
|
52
|
+
* the specialisation is a user-defined type.
|
53
|
+
*
|
54
|
+
* Specialisations of this trait may provide a nested typedef @c type, which is
|
55
|
+
* a default-constructible completion token type.
|
56
|
+
*
|
57
|
+
* If not otherwise specialised, the default completion token type is
|
58
|
+
* boost::asio::deferred_t.
|
59
|
+
*/
|
60
|
+
template <typename T>
|
61
|
+
struct default_completion_token
|
62
|
+
{
|
63
|
+
/// If @c T has a nested type @c default_completion_token_type,
|
64
|
+
/// <tt>T::default_completion_token_type</tt>. Otherwise the typedef @c type
|
65
|
+
/// is boost::asio::deferred_t.
|
66
|
+
typedef see_below type;
|
67
|
+
};
|
68
|
+
#else
|
69
|
+
template <typename T>
|
70
|
+
struct default_completion_token
|
71
|
+
: detail::default_completion_token_impl<T>
|
72
|
+
{
|
73
|
+
};
|
74
|
+
#endif
|
75
|
+
|
76
|
+
template <typename T>
|
77
|
+
using default_completion_token_t = typename default_completion_token<T>::type;
|
78
|
+
|
79
|
+
#define BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(e) \
|
80
|
+
= typename ::boost::asio::default_completion_token<e>::type
|
81
|
+
#define BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(e) \
|
82
|
+
= typename ::boost::asio::default_completion_token<e>::type()
|
83
|
+
|
84
|
+
} // namespace asio
|
85
|
+
} // namespace boost
|
86
|
+
|
87
|
+
#include <boost/asio/detail/pop_options.hpp>
|
88
|
+
|
89
|
+
#include <boost/asio/deferred.hpp>
|
90
|
+
|
91
|
+
#endif // BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_HPP
|
@@ -185,7 +185,7 @@ template <typename Function>
|
|
185
185
|
class deferred_function
|
186
186
|
{
|
187
187
|
public:
|
188
|
-
/// Constructor.
|
188
|
+
/// Constructor.
|
189
189
|
template <typename F>
|
190
190
|
constexpr explicit deferred_function(deferred_init_tag, F&& function)
|
191
191
|
: function_(static_cast<F&&>(function))
|
@@ -326,7 +326,8 @@ private:
|
|
326
326
|
detail::index_sequence<I...>) const &
|
327
327
|
-> decltype(
|
328
328
|
async_initiate<CompletionToken, Signature>(
|
329
|
-
|
329
|
+
conditional_t<true, initiation_t, CompletionToken>(initiation_),
|
330
|
+
token, std::get<I>(init_args_)...))
|
330
331
|
{
|
331
332
|
return async_initiate<CompletionToken, Signature>(
|
332
333
|
initiation_t(initiation_), token, std::get<I>(init_args_)...);
|
@@ -593,8 +594,11 @@ struct is_deferred<deferred_conditional<OnTrue, OnFalse>> : true_type
|
|
593
594
|
* The deferred_t class is used to indicate that an asynchronous operation
|
594
595
|
* should return a function object which is itself an initiation function. A
|
595
596
|
* deferred_t object may be passed as a completion token to an asynchronous
|
596
|
-
* operation, typically
|
597
|
-
*
|
597
|
+
* operation, typically as the default completion token:
|
598
|
+
*
|
599
|
+
* @code auto my_deferred_op = my_socket.async_read_some(my_buffer); @endcode
|
600
|
+
*
|
601
|
+
* or by explicitly passing the special value @c boost::asio::deferred:
|
598
602
|
*
|
599
603
|
* @code auto my_deferred_op
|
600
604
|
* = my_socket.async_read_some(my_buffer,
|
@@ -705,7 +709,7 @@ inline auto operator|(Head head, Tail&& tail)
|
|
705
709
|
/**
|
706
710
|
* See the documentation for boost::asio::deferred_t for a usage example.
|
707
711
|
*/
|
708
|
-
constexpr deferred_t deferred;
|
712
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr deferred_t deferred;
|
709
713
|
|
710
714
|
} // namespace asio
|
711
715
|
} // namespace boost
|
@@ -39,7 +39,7 @@ namespace asio {
|
|
39
39
|
class detached_t
|
40
40
|
{
|
41
41
|
public:
|
42
|
-
/// Constructor.
|
42
|
+
/// Constructor.
|
43
43
|
constexpr detached_t()
|
44
44
|
{
|
45
45
|
}
|
@@ -95,7 +95,7 @@ public:
|
|
95
95
|
/**
|
96
96
|
* See the documentation for boost::asio::detached_t for a usage example.
|
97
97
|
*/
|
98
|
-
constexpr detached_t detached;
|
98
|
+
BOOST_ASIO_INLINE_VARIABLE constexpr detached_t detached;
|
99
99
|
|
100
100
|
} // namespace asio
|
101
101
|
} // namespace boost
|