passenger 6.0.23 → 6.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -1
- data/Rakefile +7 -3
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +17 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +4 -12
- data/package.json +1 -1
- data/passenger.gemspec +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +7 -3
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +21 -8
@@ -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
|