passenger 6.0.16 → 6.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +46 -2
- data/CONTRIBUTORS +2 -0
- data/build/integration_tests.rb +6 -6
- data/build/ruby_tests.rb +1 -1
- data/build/test_basics.rb +0 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
- 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 +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
- 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 +2 -2
- 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 +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
- data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
- data/src/ruby_native_extension/extconf.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +4 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +36 -19
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
- data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -19,6 +19,7 @@
|
|
19
19
|
#include <new>
|
20
20
|
#include <typeinfo>
|
21
21
|
#include <boost/asio/detail/assert.hpp>
|
22
|
+
#include <boost/asio/detail/atomic_count.hpp>
|
22
23
|
#include <boost/asio/detail/cstddef.hpp>
|
23
24
|
#include <boost/asio/detail/executor_function.hpp>
|
24
25
|
#include <boost/asio/detail/memory.hpp>
|
@@ -65,10 +66,25 @@ public:
|
|
65
66
|
template <class... OtherSupportableProperties>
|
66
67
|
any_executor(any_executor<OtherSupportableProperties...> e);
|
67
68
|
|
69
|
+
/// Construct to point to the same target as another any_executor.
|
70
|
+
template <class... OtherSupportableProperties>
|
71
|
+
any_executor(std::nothrow_t,
|
72
|
+
any_executor<OtherSupportableProperties...> e) noexcept;
|
73
|
+
|
74
|
+
/// Construct to point to the same target as another any_executor.
|
75
|
+
any_executor(std::nothrow_t, const any_executor& e) noexcept;
|
76
|
+
|
77
|
+
/// Construct to point to the same target as another any_executor.
|
78
|
+
any_executor(std::nothrow_t, any_executor&& e) noexcept;
|
79
|
+
|
68
80
|
/// Construct a polymorphic wrapper for the specified executor.
|
69
81
|
template <typename Executor>
|
70
82
|
any_executor(Executor e);
|
71
83
|
|
84
|
+
/// Construct a polymorphic wrapper for the specified executor.
|
85
|
+
template <typename Executor>
|
86
|
+
any_executor(std::nothrow_t, Executor e) noexcept;
|
87
|
+
|
72
88
|
/// Assignment operator.
|
73
89
|
any_executor& operator=(const any_executor& e) noexcept;
|
74
90
|
|
@@ -127,13 +143,6 @@ public:
|
|
127
143
|
|
128
144
|
/// Execute the function on the target executor.
|
129
145
|
/**
|
130
|
-
* Do not call this function directly. It is intended for use with the
|
131
|
-
* execution::execute customisation point.
|
132
|
-
*
|
133
|
-
* For example:
|
134
|
-
* @code execution::any_executor<> ex = ...;
|
135
|
-
* execution::execute(ex, my_function_object); @endcode
|
136
|
-
*
|
137
146
|
* Throws boost::asio::bad_executor if the polymorphic wrapper has no target.
|
138
147
|
*/
|
139
148
|
template <typename Function>
|
@@ -487,13 +496,103 @@ struct is_valid_target_executor<int, Props> : false_type
|
|
487
496
|
{
|
488
497
|
};
|
489
498
|
|
499
|
+
class shared_target_executor
|
500
|
+
{
|
501
|
+
public:
|
502
|
+
template <typename E>
|
503
|
+
shared_target_executor(BOOST_ASIO_MOVE_ARG(E) e,
|
504
|
+
typename decay<E>::type*& target)
|
505
|
+
{
|
506
|
+
impl<typename decay<E>::type>* i =
|
507
|
+
new impl<typename decay<E>::type>(BOOST_ASIO_MOVE_CAST(E)(e));
|
508
|
+
target = &i->ex_;
|
509
|
+
impl_ = i;
|
510
|
+
}
|
511
|
+
|
512
|
+
template <typename E>
|
513
|
+
shared_target_executor(std::nothrow_t, BOOST_ASIO_MOVE_ARG(E) e,
|
514
|
+
typename decay<E>::type*& target) BOOST_ASIO_NOEXCEPT
|
515
|
+
{
|
516
|
+
impl<typename decay<E>::type>* i =
|
517
|
+
new (std::nothrow) impl<typename decay<E>::type>(
|
518
|
+
BOOST_ASIO_MOVE_CAST(E)(e));
|
519
|
+
target = i ? &i->ex_ : 0;
|
520
|
+
impl_ = i;
|
521
|
+
}
|
522
|
+
|
523
|
+
shared_target_executor(
|
524
|
+
const shared_target_executor& other) BOOST_ASIO_NOEXCEPT
|
525
|
+
: impl_(other.impl_)
|
526
|
+
{
|
527
|
+
if (impl_)
|
528
|
+
boost::asio::detail::ref_count_up(impl_->ref_count_);
|
529
|
+
}
|
530
|
+
|
531
|
+
shared_target_executor& operator=(
|
532
|
+
const shared_target_executor& other) BOOST_ASIO_NOEXCEPT
|
533
|
+
{
|
534
|
+
impl_ = other.impl_;
|
535
|
+
if (impl_)
|
536
|
+
boost::asio::detail::ref_count_up(impl_->ref_count_);
|
537
|
+
return *this;
|
538
|
+
}
|
539
|
+
|
540
|
+
#if defined(BOOST_ASIO_HAS_MOVE)
|
541
|
+
shared_target_executor(
|
542
|
+
shared_target_executor&& other) BOOST_ASIO_NOEXCEPT
|
543
|
+
: impl_(other.impl_)
|
544
|
+
{
|
545
|
+
other.impl_ = 0;
|
546
|
+
}
|
547
|
+
|
548
|
+
shared_target_executor& operator=(
|
549
|
+
shared_target_executor&& other) BOOST_ASIO_NOEXCEPT
|
550
|
+
{
|
551
|
+
impl_ = other.impl_;
|
552
|
+
other.impl_ = 0;
|
553
|
+
return *this;
|
554
|
+
}
|
555
|
+
#endif // defined(BOOST_ASIO_HAS_MOVE)
|
556
|
+
|
557
|
+
~shared_target_executor()
|
558
|
+
{
|
559
|
+
if (impl_)
|
560
|
+
if (boost::asio::detail::ref_count_down(impl_->ref_count_))
|
561
|
+
delete impl_;
|
562
|
+
}
|
563
|
+
|
564
|
+
void* get() const BOOST_ASIO_NOEXCEPT
|
565
|
+
{
|
566
|
+
return impl_ ? impl_->get() : 0;
|
567
|
+
}
|
568
|
+
|
569
|
+
private:
|
570
|
+
struct impl_base
|
571
|
+
{
|
572
|
+
impl_base() : ref_count_(1) {}
|
573
|
+
virtual ~impl_base() {}
|
574
|
+
virtual void* get() = 0;
|
575
|
+
boost::asio::detail::atomic_count ref_count_;
|
576
|
+
};
|
577
|
+
|
578
|
+
template <typename Executor>
|
579
|
+
struct impl : impl_base
|
580
|
+
{
|
581
|
+
impl(Executor ex) : ex_(BOOST_ASIO_MOVE_CAST(Executor)(ex)) {}
|
582
|
+
virtual void* get() { return &ex_; }
|
583
|
+
Executor ex_;
|
584
|
+
};
|
585
|
+
|
586
|
+
impl_base* impl_;
|
587
|
+
};
|
588
|
+
|
490
589
|
class any_executor_base
|
491
590
|
{
|
492
591
|
public:
|
493
592
|
any_executor_base() BOOST_ASIO_NOEXCEPT
|
494
|
-
: object_fns_(
|
593
|
+
: object_fns_(0),
|
495
594
|
target_(0),
|
496
|
-
target_fns_(
|
595
|
+
target_fns_(0)
|
497
596
|
{
|
498
597
|
}
|
499
598
|
|
@@ -511,29 +610,75 @@ public:
|
|
511
610
|
>());
|
512
611
|
}
|
513
612
|
|
613
|
+
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
614
|
+
any_executor_base(std::nothrow_t, Executor ex, false_type) BOOST_ASIO_NOEXCEPT
|
615
|
+
: target_fns_(target_fns_table<Executor>(
|
616
|
+
any_executor_base::query_blocking(ex,
|
617
|
+
can_query<const Executor&, const execution::blocking_t&>())
|
618
|
+
== execution::blocking.always))
|
619
|
+
{
|
620
|
+
any_executor_base::construct_object(std::nothrow, ex,
|
621
|
+
integral_constant<bool,
|
622
|
+
sizeof(Executor) <= sizeof(object_type)
|
623
|
+
&& alignment_of<Executor>::value <= alignment_of<object_type>::value
|
624
|
+
>());
|
625
|
+
if (target_ == 0)
|
626
|
+
{
|
627
|
+
object_fns_ = 0;
|
628
|
+
target_fns_ = 0;
|
629
|
+
}
|
630
|
+
}
|
631
|
+
|
514
632
|
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
515
633
|
any_executor_base(Executor other, true_type)
|
516
|
-
: object_fns_(object_fns_table<
|
634
|
+
: object_fns_(object_fns_table<shared_target_executor>()),
|
517
635
|
target_fns_(other.target_fns_)
|
518
636
|
{
|
519
|
-
|
520
|
-
|
521
|
-
|
637
|
+
Executor* p = 0;
|
638
|
+
new (&object_) shared_target_executor(
|
639
|
+
BOOST_ASIO_MOVE_CAST(Executor)(other), p);
|
522
640
|
target_ = p->template target<void>();
|
523
|
-
new (&object_) boost::asio::detail::shared_ptr<void>(
|
524
|
-
BOOST_ASIO_MOVE_CAST(boost::asio::detail::shared_ptr<Executor>)(p));
|
525
641
|
}
|
526
642
|
|
527
|
-
|
528
|
-
|
643
|
+
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
644
|
+
any_executor_base(std::nothrow_t,
|
645
|
+
Executor other, true_type) BOOST_ASIO_NOEXCEPT
|
646
|
+
: object_fns_(object_fns_table<shared_target_executor>()),
|
529
647
|
target_fns_(other.target_fns_)
|
530
648
|
{
|
531
|
-
|
649
|
+
Executor* p = 0;
|
650
|
+
new (&object_) shared_target_executor(
|
651
|
+
std::nothrow, BOOST_ASIO_MOVE_CAST(Executor)(other), p);
|
652
|
+
if (p)
|
653
|
+
target_ = p->template target<void>();
|
654
|
+
else
|
655
|
+
{
|
656
|
+
target_ = 0;
|
657
|
+
object_fns_ = 0;
|
658
|
+
target_fns_ = 0;
|
659
|
+
}
|
660
|
+
}
|
661
|
+
|
662
|
+
any_executor_base(const any_executor_base& other) BOOST_ASIO_NOEXCEPT
|
663
|
+
{
|
664
|
+
if (!!other)
|
665
|
+
{
|
666
|
+
object_fns_ = other.object_fns_;
|
667
|
+
target_fns_ = other.target_fns_;
|
668
|
+
object_fns_->copy(*this, other);
|
669
|
+
}
|
670
|
+
else
|
671
|
+
{
|
672
|
+
object_fns_ = 0;
|
673
|
+
target_ = 0;
|
674
|
+
target_fns_ = 0;
|
675
|
+
}
|
532
676
|
}
|
533
677
|
|
534
678
|
~any_executor_base() BOOST_ASIO_NOEXCEPT
|
535
679
|
{
|
536
|
-
|
680
|
+
if (!!*this)
|
681
|
+
object_fns_->destroy(*this);
|
537
682
|
}
|
538
683
|
|
539
684
|
any_executor_base& operator=(
|
@@ -541,33 +686,53 @@ public:
|
|
541
686
|
{
|
542
687
|
if (this != &other)
|
543
688
|
{
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
689
|
+
if (!!*this)
|
690
|
+
object_fns_->destroy(*this);
|
691
|
+
if (!!other)
|
692
|
+
{
|
693
|
+
object_fns_ = other.object_fns_;
|
694
|
+
target_fns_ = other.target_fns_;
|
695
|
+
object_fns_->copy(*this, other);
|
696
|
+
}
|
697
|
+
else
|
698
|
+
{
|
699
|
+
object_fns_ = 0;
|
700
|
+
target_ = 0;
|
701
|
+
target_fns_ = 0;
|
702
|
+
}
|
548
703
|
}
|
549
704
|
return *this;
|
550
705
|
}
|
551
706
|
|
552
707
|
any_executor_base& operator=(nullptr_t) BOOST_ASIO_NOEXCEPT
|
553
708
|
{
|
554
|
-
|
709
|
+
if (target_)
|
710
|
+
object_fns_->destroy(*this);
|
555
711
|
target_ = 0;
|
556
|
-
object_fns_ =
|
557
|
-
target_fns_ =
|
712
|
+
object_fns_ = 0;
|
713
|
+
target_fns_ = 0;
|
558
714
|
return *this;
|
559
715
|
}
|
560
716
|
|
561
717
|
#if defined(BOOST_ASIO_HAS_MOVE)
|
562
718
|
|
563
719
|
any_executor_base(any_executor_base&& other) BOOST_ASIO_NOEXCEPT
|
564
|
-
: object_fns_(other.object_fns_),
|
565
|
-
target_fns_(other.target_fns_)
|
566
720
|
{
|
567
|
-
other.
|
568
|
-
|
569
|
-
|
570
|
-
|
721
|
+
if (other.target_)
|
722
|
+
{
|
723
|
+
object_fns_ = other.object_fns_;
|
724
|
+
target_fns_ = other.target_fns_;
|
725
|
+
other.object_fns_ = 0;
|
726
|
+
other.target_fns_ = 0;
|
727
|
+
object_fns_->move(*this, other);
|
728
|
+
other.target_ = 0;
|
729
|
+
}
|
730
|
+
else
|
731
|
+
{
|
732
|
+
object_fns_ = 0;
|
733
|
+
target_ = 0;
|
734
|
+
target_fns_ = 0;
|
735
|
+
}
|
571
736
|
}
|
572
737
|
|
573
738
|
any_executor_base& operator=(
|
@@ -575,13 +740,23 @@ public:
|
|
575
740
|
{
|
576
741
|
if (this != &other)
|
577
742
|
{
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
743
|
+
if (!!*this)
|
744
|
+
object_fns_->destroy(*this);
|
745
|
+
if (!!other)
|
746
|
+
{
|
747
|
+
object_fns_ = other.object_fns_;
|
748
|
+
target_fns_ = other.target_fns_;
|
749
|
+
other.object_fns_ = 0;
|
750
|
+
other.target_fns_ = 0;
|
751
|
+
object_fns_->move(*this, other);
|
752
|
+
other.target_ = 0;
|
753
|
+
}
|
754
|
+
else
|
755
|
+
{
|
756
|
+
object_fns_ = 0;
|
757
|
+
target_ = 0;
|
758
|
+
target_fns_ = 0;
|
759
|
+
}
|
585
760
|
}
|
586
761
|
return *this;
|
587
762
|
}
|
@@ -601,38 +776,53 @@ public:
|
|
601
776
|
template <typename F>
|
602
777
|
void execute(BOOST_ASIO_MOVE_ARG(F) f) const
|
603
778
|
{
|
604
|
-
if (
|
779
|
+
if (target_)
|
605
780
|
{
|
606
|
-
|
607
|
-
|
781
|
+
if (target_fns_->blocking_execute != 0)
|
782
|
+
{
|
783
|
+
boost::asio::detail::non_const_lvalue<F> f2(f);
|
784
|
+
target_fns_->blocking_execute(*this, function_view(f2.value));
|
785
|
+
}
|
786
|
+
else
|
787
|
+
{
|
788
|
+
target_fns_->execute(*this,
|
789
|
+
function(BOOST_ASIO_MOVE_CAST(F)(f), std::allocator<void>()));
|
790
|
+
}
|
608
791
|
}
|
609
792
|
else
|
610
793
|
{
|
611
|
-
|
612
|
-
|
794
|
+
bad_executor ex;
|
795
|
+
boost::asio::detail::throw_exception(ex);
|
613
796
|
}
|
614
797
|
}
|
615
798
|
|
616
799
|
template <typename Executor>
|
617
800
|
Executor* target()
|
618
801
|
{
|
619
|
-
return
|
802
|
+
return target_ && (is_same<Executor, void>::value
|
803
|
+
|| target_fns_->target_type() == target_type_ex<Executor>())
|
804
|
+
? static_cast<Executor*>(target_) : 0;
|
620
805
|
}
|
621
806
|
|
622
807
|
template <typename Executor>
|
623
808
|
const Executor* target() const
|
624
809
|
{
|
625
|
-
return
|
810
|
+
return target_ && (is_same<Executor, void>::value
|
811
|
+
|| target_fns_->target_type() == target_type_ex<Executor>())
|
812
|
+
? static_cast<const Executor*>(target_) : 0;
|
626
813
|
}
|
627
814
|
|
628
815
|
#if !defined(BOOST_ASIO_NO_TYPEID)
|
629
816
|
const std::type_info& target_type() const
|
817
|
+
{
|
818
|
+
return target_ ? target_fns_->target_type() : typeid(void);
|
819
|
+
}
|
630
820
|
#else // !defined(BOOST_ASIO_NO_TYPEID)
|
631
821
|
const void* target_type() const
|
632
|
-
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
633
822
|
{
|
634
|
-
return target_fns_->target_type();
|
823
|
+
return target_ ? target_fns_->target_type() : 0;
|
635
824
|
}
|
825
|
+
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
636
826
|
|
637
827
|
struct unspecified_bool_type_t {};
|
638
828
|
typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
|
@@ -682,57 +872,22 @@ protected:
|
|
682
872
|
const void* (*target)(const any_executor_base&);
|
683
873
|
};
|
684
874
|
|
685
|
-
static void destroy_void(any_executor_base&)
|
686
|
-
{
|
687
|
-
}
|
688
|
-
|
689
|
-
static void copy_void(any_executor_base& ex1, const any_executor_base&)
|
690
|
-
{
|
691
|
-
ex1.target_ = 0;
|
692
|
-
}
|
693
|
-
|
694
|
-
static void move_void(any_executor_base& ex1, any_executor_base&)
|
695
|
-
{
|
696
|
-
ex1.target_ = 0;
|
697
|
-
}
|
698
|
-
|
699
|
-
static const void* target_void(const any_executor_base&)
|
700
|
-
{
|
701
|
-
return 0;
|
702
|
-
}
|
703
|
-
|
704
|
-
template <typename Obj>
|
705
|
-
static const object_fns* object_fns_table(
|
706
|
-
typename enable_if<
|
707
|
-
is_same<Obj, void>::value
|
708
|
-
>::type* = 0)
|
709
|
-
{
|
710
|
-
static const object_fns fns =
|
711
|
-
{
|
712
|
-
&any_executor_base::destroy_void,
|
713
|
-
&any_executor_base::copy_void,
|
714
|
-
&any_executor_base::move_void,
|
715
|
-
&any_executor_base::target_void
|
716
|
-
};
|
717
|
-
return &fns;
|
718
|
-
}
|
719
|
-
|
720
875
|
static void destroy_shared(any_executor_base& ex)
|
721
876
|
{
|
722
|
-
typedef
|
877
|
+
typedef shared_target_executor type;
|
723
878
|
ex.object<type>().~type();
|
724
879
|
}
|
725
880
|
|
726
881
|
static void copy_shared(any_executor_base& ex1, const any_executor_base& ex2)
|
727
882
|
{
|
728
|
-
typedef
|
883
|
+
typedef shared_target_executor type;
|
729
884
|
new (&ex1.object_) type(ex2.object<type>());
|
730
885
|
ex1.target_ = ex2.target_;
|
731
886
|
}
|
732
887
|
|
733
888
|
static void move_shared(any_executor_base& ex1, any_executor_base& ex2)
|
734
889
|
{
|
735
|
-
typedef
|
890
|
+
typedef shared_target_executor type;
|
736
891
|
new (&ex1.object_) type(BOOST_ASIO_MOVE_CAST(type)(ex2.object<type>()));
|
737
892
|
ex1.target_ = ex2.target_;
|
738
893
|
ex2.object<type>().~type();
|
@@ -740,14 +895,14 @@ protected:
|
|
740
895
|
|
741
896
|
static const void* target_shared(const any_executor_base& ex)
|
742
897
|
{
|
743
|
-
typedef
|
898
|
+
typedef shared_target_executor type;
|
744
899
|
return ex.object<type>().get();
|
745
900
|
}
|
746
901
|
|
747
902
|
template <typename Obj>
|
748
903
|
static const object_fns* object_fns_table(
|
749
904
|
typename enable_if<
|
750
|
-
is_same<Obj,
|
905
|
+
is_same<Obj, shared_target_executor>::value
|
751
906
|
>::type* = 0)
|
752
907
|
{
|
753
908
|
static const object_fns fns =
|
@@ -791,7 +946,7 @@ protected:
|
|
791
946
|
static const object_fns* object_fns_table(
|
792
947
|
typename enable_if<
|
793
948
|
!is_same<Obj, void>::value
|
794
|
-
&& !is_same<Obj,
|
949
|
+
&& !is_same<Obj, shared_target_executor>::value
|
795
950
|
>::type* = 0)
|
796
951
|
{
|
797
952
|
static const object_fns fns =
|
@@ -819,52 +974,6 @@ protected:
|
|
819
974
|
void (*blocking_execute)(const any_executor_base&, function_view);
|
820
975
|
};
|
821
976
|
|
822
|
-
#if !defined(BOOST_ASIO_NO_TYPEID)
|
823
|
-
static const std::type_info& target_type_void()
|
824
|
-
{
|
825
|
-
return typeid(void);
|
826
|
-
}
|
827
|
-
#else // !defined(BOOST_ASIO_NO_TYPEID)
|
828
|
-
static const void* target_type_void()
|
829
|
-
{
|
830
|
-
return 0;
|
831
|
-
}
|
832
|
-
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
833
|
-
|
834
|
-
static bool equal_void(const any_executor_base&, const any_executor_base&)
|
835
|
-
{
|
836
|
-
return true;
|
837
|
-
}
|
838
|
-
|
839
|
-
static void execute_void(const any_executor_base&,
|
840
|
-
BOOST_ASIO_MOVE_ARG(function))
|
841
|
-
{
|
842
|
-
bad_executor ex;
|
843
|
-
boost::asio::detail::throw_exception(ex);
|
844
|
-
}
|
845
|
-
|
846
|
-
static void blocking_execute_void(const any_executor_base&, function_view)
|
847
|
-
{
|
848
|
-
bad_executor ex;
|
849
|
-
boost::asio::detail::throw_exception(ex);
|
850
|
-
}
|
851
|
-
|
852
|
-
template <typename Ex>
|
853
|
-
static const target_fns* target_fns_table(
|
854
|
-
typename enable_if<
|
855
|
-
is_same<Ex, void>::value
|
856
|
-
>::type* = 0)
|
857
|
-
{
|
858
|
-
static const target_fns fns =
|
859
|
-
{
|
860
|
-
&any_executor_base::target_type_void,
|
861
|
-
&any_executor_base::equal_void,
|
862
|
-
&any_executor_base::execute_void,
|
863
|
-
&any_executor_base::blocking_execute_void
|
864
|
-
};
|
865
|
-
return &fns;
|
866
|
-
}
|
867
|
-
|
868
977
|
#if !defined(BOOST_ASIO_NO_TYPEID)
|
869
978
|
template <typename Ex>
|
870
979
|
static const std::type_info& target_type_ex()
|
@@ -891,13 +1000,21 @@ protected:
|
|
891
1000
|
static void execute_ex(const any_executor_base& ex,
|
892
1001
|
BOOST_ASIO_MOVE_ARG(function) f)
|
893
1002
|
{
|
1003
|
+
#if defined(BOOST_ASIO_NO_DEPRECATED)
|
1004
|
+
ex.target<Ex>()->execute(BOOST_ASIO_MOVE_CAST(function)(f));
|
1005
|
+
#else // defined(BOOST_ASIO_NO_DEPRECATED)
|
894
1006
|
execution::execute(*ex.target<Ex>(), BOOST_ASIO_MOVE_CAST(function)(f));
|
1007
|
+
#endif // defined(BOOST_ASIO_NO_DEPRECATED)
|
895
1008
|
}
|
896
1009
|
|
897
1010
|
template <typename Ex>
|
898
1011
|
static void blocking_execute_ex(const any_executor_base& ex, function_view f)
|
899
1012
|
{
|
1013
|
+
#if defined(BOOST_ASIO_NO_DEPRECATED)
|
1014
|
+
ex.target<Ex>()->execute(f);
|
1015
|
+
#else // defined(BOOST_ASIO_NO_DEPRECATED)
|
900
1016
|
execution::execute(*ex.target<Ex>(), f);
|
1017
|
+
#endif // defined(BOOST_ASIO_NO_DEPRECATED)
|
901
1018
|
}
|
902
1019
|
|
903
1020
|
template <typename Ex>
|
@@ -1155,13 +1272,30 @@ private:
|
|
1155
1272
|
template <typename Executor>
|
1156
1273
|
void construct_object(Executor& ex, false_type)
|
1157
1274
|
{
|
1158
|
-
object_fns_ = object_fns_table<
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
target_ = p
|
1163
|
-
|
1164
|
-
|
1275
|
+
object_fns_ = object_fns_table<shared_target_executor>();
|
1276
|
+
Executor* p = 0;
|
1277
|
+
new (&object_) shared_target_executor(
|
1278
|
+
BOOST_ASIO_MOVE_CAST(Executor)(ex), p);
|
1279
|
+
target_ = p;
|
1280
|
+
}
|
1281
|
+
|
1282
|
+
template <typename Executor>
|
1283
|
+
void construct_object(std::nothrow_t,
|
1284
|
+
Executor& ex, true_type) BOOST_ASIO_NOEXCEPT
|
1285
|
+
{
|
1286
|
+
object_fns_ = object_fns_table<Executor>();
|
1287
|
+
target_ = new (&object_) Executor(BOOST_ASIO_MOVE_CAST(Executor)(ex));
|
1288
|
+
}
|
1289
|
+
|
1290
|
+
template <typename Executor>
|
1291
|
+
void construct_object(std::nothrow_t,
|
1292
|
+
Executor& ex, false_type) BOOST_ASIO_NOEXCEPT
|
1293
|
+
{
|
1294
|
+
object_fns_ = object_fns_table<shared_target_executor>();
|
1295
|
+
Executor* p = 0;
|
1296
|
+
new (&object_) shared_target_executor(
|
1297
|
+
std::nothrow, BOOST_ASIO_MOVE_CAST(Executor)(ex), p);
|
1298
|
+
target_ = p;
|
1165
1299
|
}
|
1166
1300
|
|
1167
1301
|
/*private:*/public:
|
@@ -1228,6 +1362,21 @@ public:
|
|
1228
1362
|
{
|
1229
1363
|
}
|
1230
1364
|
|
1365
|
+
template <typename Executor>
|
1366
|
+
any_executor(std::nothrow_t, Executor ex,
|
1367
|
+
typename enable_if<
|
1368
|
+
conditional<
|
1369
|
+
!is_same<Executor, any_executor>::value
|
1370
|
+
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1371
|
+
is_executor<Executor>,
|
1372
|
+
false_type
|
1373
|
+
>::type::value
|
1374
|
+
>::type* = 0) BOOST_ASIO_NOEXCEPT
|
1375
|
+
: detail::any_executor_base(std::nothrow,
|
1376
|
+
BOOST_ASIO_MOVE_CAST(Executor)(ex), false_type())
|
1377
|
+
{
|
1378
|
+
}
|
1379
|
+
|
1231
1380
|
#if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
1232
1381
|
|
1233
1382
|
template <typename... OtherSupportableProperties>
|
@@ -1237,6 +1386,14 @@ public:
|
|
1237
1386
|
{
|
1238
1387
|
}
|
1239
1388
|
|
1389
|
+
template <typename... OtherSupportableProperties>
|
1390
|
+
any_executor(std::nothrow_t,
|
1391
|
+
any_executor<OtherSupportableProperties...> other) BOOST_ASIO_NOEXCEPT
|
1392
|
+
: detail::any_executor_base(
|
1393
|
+
static_cast<const detail::any_executor_base&>(other))
|
1394
|
+
{
|
1395
|
+
}
|
1396
|
+
|
1240
1397
|
#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
1241
1398
|
|
1242
1399
|
template <typename U0, typename U1, typename U2, typename U3,
|
@@ -1247,6 +1404,15 @@ public:
|
|
1247
1404
|
{
|
1248
1405
|
}
|
1249
1406
|
|
1407
|
+
template <typename U0, typename U1, typename U2, typename U3,
|
1408
|
+
typename U4, typename U5, typename U6, typename U7>
|
1409
|
+
any_executor(std::nothrow_t,
|
1410
|
+
any_executor<U0, U1, U2, U3, U4, U5, U6, U7> other) BOOST_ASIO_NOEXCEPT
|
1411
|
+
: detail::any_executor_base(
|
1412
|
+
static_cast<const detail::any_executor_base&>(other))
|
1413
|
+
{
|
1414
|
+
}
|
1415
|
+
|
1250
1416
|
#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
1251
1417
|
|
1252
1418
|
any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT
|
@@ -1255,6 +1421,12 @@ public:
|
|
1255
1421
|
{
|
1256
1422
|
}
|
1257
1423
|
|
1424
|
+
any_executor(std::nothrow_t, const any_executor& other) BOOST_ASIO_NOEXCEPT
|
1425
|
+
: detail::any_executor_base(
|
1426
|
+
static_cast<const detail::any_executor_base&>(other))
|
1427
|
+
{
|
1428
|
+
}
|
1429
|
+
|
1258
1430
|
any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT
|
1259
1431
|
{
|
1260
1432
|
if (this != &other)
|
@@ -1280,6 +1452,13 @@ public:
|
|
1280
1452
|
{
|
1281
1453
|
}
|
1282
1454
|
|
1455
|
+
any_executor(std::nothrow_t, any_executor&& other) BOOST_ASIO_NOEXCEPT
|
1456
|
+
: detail::any_executor_base(
|
1457
|
+
static_cast<any_executor_base&&>(
|
1458
|
+
static_cast<any_executor_base&>(other)))
|
1459
|
+
{
|
1460
|
+
}
|
1461
|
+
|
1283
1462
|
any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT
|
1284
1463
|
{
|
1285
1464
|
if (this != &other)
|
@@ -1414,6 +1593,25 @@ public:
|
|
1414
1593
|
{
|
1415
1594
|
}
|
1416
1595
|
|
1596
|
+
template <typename Executor>
|
1597
|
+
any_executor(std::nothrow_t, Executor ex,
|
1598
|
+
typename enable_if<
|
1599
|
+
conditional<
|
1600
|
+
!is_same<Executor, any_executor>::value
|
1601
|
+
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1602
|
+
detail::is_valid_target_executor<
|
1603
|
+
Executor, void(SupportableProperties...)>,
|
1604
|
+
false_type
|
1605
|
+
>::type::value
|
1606
|
+
>::type* = 0) BOOST_ASIO_NOEXCEPT
|
1607
|
+
: detail::any_executor_base(std::nothrow,
|
1608
|
+
BOOST_ASIO_MOVE_CAST(Executor)(ex), false_type()),
|
1609
|
+
prop_fns_(prop_fns_table<Executor>())
|
1610
|
+
{
|
1611
|
+
if (this->template target<void>() == 0)
|
1612
|
+
prop_fns_ = prop_fns_table<void>();
|
1613
|
+
}
|
1614
|
+
|
1417
1615
|
template <typename... OtherSupportableProperties>
|
1418
1616
|
any_executor(any_executor<OtherSupportableProperties...> other,
|
1419
1617
|
typename enable_if<
|
@@ -1434,6 +1632,29 @@ public:
|
|
1434
1632
|
{
|
1435
1633
|
}
|
1436
1634
|
|
1635
|
+
template <typename... OtherSupportableProperties>
|
1636
|
+
any_executor(std::nothrow_t,
|
1637
|
+
any_executor<OtherSupportableProperties...> other,
|
1638
|
+
typename enable_if<
|
1639
|
+
conditional<
|
1640
|
+
!is_same<
|
1641
|
+
any_executor<OtherSupportableProperties...>,
|
1642
|
+
any_executor
|
1643
|
+
>::value,
|
1644
|
+
typename detail::supportable_properties<
|
1645
|
+
0, void(SupportableProperties...)>::template is_valid_target<
|
1646
|
+
any_executor<OtherSupportableProperties...> >,
|
1647
|
+
false_type
|
1648
|
+
>::type::value
|
1649
|
+
>::type* = 0) BOOST_ASIO_NOEXCEPT
|
1650
|
+
: detail::any_executor_base(std::nothrow, BOOST_ASIO_MOVE_CAST(
|
1651
|
+
any_executor<OtherSupportableProperties...>)(other), true_type()),
|
1652
|
+
prop_fns_(prop_fns_table<any_executor<OtherSupportableProperties...> >())
|
1653
|
+
{
|
1654
|
+
if (this->template target<void>() == 0)
|
1655
|
+
prop_fns_ = prop_fns_table<void>();
|
1656
|
+
}
|
1657
|
+
|
1437
1658
|
any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT
|
1438
1659
|
: detail::any_executor_base(
|
1439
1660
|
static_cast<const detail::any_executor_base&>(other)),
|
@@ -1441,6 +1662,13 @@ public:
|
|
1441
1662
|
{
|
1442
1663
|
}
|
1443
1664
|
|
1665
|
+
any_executor(std::nothrow_t, const any_executor& other) BOOST_ASIO_NOEXCEPT
|
1666
|
+
: detail::any_executor_base(
|
1667
|
+
static_cast<const detail::any_executor_base&>(other)),
|
1668
|
+
prop_fns_(other.prop_fns_)
|
1669
|
+
{
|
1670
|
+
}
|
1671
|
+
|
1444
1672
|
any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT
|
1445
1673
|
{
|
1446
1674
|
if (this != &other)
|
@@ -1470,6 +1698,15 @@ public:
|
|
1470
1698
|
other.prop_fns_ = prop_fns_table<void>();
|
1471
1699
|
}
|
1472
1700
|
|
1701
|
+
any_executor(std::nothrow_t, any_executor&& other) BOOST_ASIO_NOEXCEPT
|
1702
|
+
: detail::any_executor_base(
|
1703
|
+
static_cast<any_executor_base&&>(
|
1704
|
+
static_cast<any_executor_base&>(other))),
|
1705
|
+
prop_fns_(other.prop_fns_)
|
1706
|
+
{
|
1707
|
+
other.prop_fns_ = prop_fns_table<void>();
|
1708
|
+
}
|
1709
|
+
|
1473
1710
|
any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT
|
1474
1711
|
{
|
1475
1712
|
if (this != &other)
|
@@ -1789,6 +2026,15 @@ inline void swap(any_executor<SupportableProperties...>& a,
|
|
1789
2026
|
other.prop_fns_ = prop_fns_table<void>(); \
|
1790
2027
|
} \
|
1791
2028
|
\
|
2029
|
+
any_executor(std::nothrow_t, any_executor&& other) BOOST_ASIO_NOEXCEPT \
|
2030
|
+
: detail::any_executor_base( \
|
2031
|
+
static_cast<any_executor_base&&>( \
|
2032
|
+
static_cast<any_executor_base&>(other))), \
|
2033
|
+
prop_fns_(other.prop_fns_) \
|
2034
|
+
{ \
|
2035
|
+
other.prop_fns_ = prop_fns_table<void>(); \
|
2036
|
+
} \
|
2037
|
+
\
|
1792
2038
|
any_executor& operator=(any_executor&& other) BOOST_ASIO_NOEXCEPT \
|
1793
2039
|
{ \
|
1794
2040
|
if (this != &other) \
|
@@ -1846,6 +2092,25 @@ inline void swap(any_executor<SupportableProperties...>& a,
|
|
1846
2092
|
{ \
|
1847
2093
|
} \
|
1848
2094
|
\
|
2095
|
+
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor> \
|
2096
|
+
any_executor(std::nothrow_t, Executor ex, \
|
2097
|
+
typename enable_if< \
|
2098
|
+
conditional< \
|
2099
|
+
!is_same<Executor, any_executor>::value \
|
2100
|
+
&& !is_base_of<detail::any_executor_base, Executor>::value, \
|
2101
|
+
detail::is_valid_target_executor< \
|
2102
|
+
Executor, void(BOOST_ASIO_VARIADIC_TARGS(n))>, \
|
2103
|
+
false_type \
|
2104
|
+
>::type::value \
|
2105
|
+
>::type* = 0) BOOST_ASIO_NOEXCEPT \
|
2106
|
+
: detail::any_executor_base(std::nothrow, \
|
2107
|
+
BOOST_ASIO_MOVE_CAST(Executor)(ex), false_type()), \
|
2108
|
+
prop_fns_(prop_fns_table<Executor>()) \
|
2109
|
+
{ \
|
2110
|
+
if (this->template target<void>() == 0) \
|
2111
|
+
prop_fns_ = prop_fns_table<void>(); \
|
2112
|
+
} \
|
2113
|
+
\
|
1849
2114
|
any_executor(const any_executor& other) BOOST_ASIO_NOEXCEPT \
|
1850
2115
|
: detail::any_executor_base( \
|
1851
2116
|
static_cast<const detail::any_executor_base&>(other)), \
|
@@ -1853,6 +2118,16 @@ inline void swap(any_executor<SupportableProperties...>& a,
|
|
1853
2118
|
{ \
|
1854
2119
|
} \
|
1855
2120
|
\
|
2121
|
+
any_executor(std::nothrow_t, \
|
2122
|
+
const any_executor& other) BOOST_ASIO_NOEXCEPT \
|
2123
|
+
: detail::any_executor_base( \
|
2124
|
+
static_cast<const detail::any_executor_base&>(other)), \
|
2125
|
+
prop_fns_(other.prop_fns_) \
|
2126
|
+
{ \
|
2127
|
+
if (this->template target<void>() == 0) \
|
2128
|
+
prop_fns_ = prop_fns_table<void>(); \
|
2129
|
+
} \
|
2130
|
+
\
|
1856
2131
|
any_executor(any_executor<> other) \
|
1857
2132
|
: detail::any_executor_base(BOOST_ASIO_MOVE_CAST( \
|
1858
2133
|
any_executor<>)(other), true_type()), \
|
@@ -1860,6 +2135,15 @@ inline void swap(any_executor<SupportableProperties...>& a,
|
|
1860
2135
|
{ \
|
1861
2136
|
} \
|
1862
2137
|
\
|
2138
|
+
any_executor(std::nothrow_t, any_executor<> other) BOOST_ASIO_NOEXCEPT \
|
2139
|
+
: detail::any_executor_base(std::nothrow, \
|
2140
|
+
BOOST_ASIO_MOVE_CAST(any_executor<>)(other), true_type()), \
|
2141
|
+
prop_fns_(prop_fns_table<any_executor<> >()) \
|
2142
|
+
{ \
|
2143
|
+
if (this->template target<void>() == 0) \
|
2144
|
+
prop_fns_ = prop_fns_table<void>(); \
|
2145
|
+
} \
|
2146
|
+
\
|
1863
2147
|
template <typename OtherAnyExecutor> \
|
1864
2148
|
any_executor(OtherAnyExecutor other, \
|
1865
2149
|
typename enable_if< \
|
@@ -1879,6 +2163,27 @@ inline void swap(any_executor<SupportableProperties...>& a,
|
|
1879
2163
|
{ \
|
1880
2164
|
} \
|
1881
2165
|
\
|
2166
|
+
template <typename OtherAnyExecutor> \
|
2167
|
+
any_executor(std::nothrow_t, OtherAnyExecutor other, \
|
2168
|
+
typename enable_if< \
|
2169
|
+
conditional< \
|
2170
|
+
!is_same<OtherAnyExecutor, any_executor>::value \
|
2171
|
+
&& is_base_of<detail::any_executor_base, \
|
2172
|
+
OtherAnyExecutor>::value, \
|
2173
|
+
typename detail::supportable_properties< \
|
2174
|
+
0, void(BOOST_ASIO_VARIADIC_TARGS(n))>::template \
|
2175
|
+
is_valid_target<OtherAnyExecutor>, \
|
2176
|
+
false_type \
|
2177
|
+
>::type::value \
|
2178
|
+
>::type* = 0) BOOST_ASIO_NOEXCEPT \
|
2179
|
+
: detail::any_executor_base(std::nothrow, \
|
2180
|
+
BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(other), true_type()), \
|
2181
|
+
prop_fns_(prop_fns_table<OtherAnyExecutor>()) \
|
2182
|
+
{ \
|
2183
|
+
if (this->template target<void>() == 0) \
|
2184
|
+
prop_fns_ = prop_fns_table<void>(); \
|
2185
|
+
} \
|
2186
|
+
\
|
1882
2187
|
any_executor& operator=(const any_executor& other) BOOST_ASIO_NOEXCEPT \
|
1883
2188
|
{ \
|
1884
2189
|
if (this != &other) \
|