passenger 6.0.25 → 6.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +33 -1
- data/CONTRIBUTING.md +2 -2
- data/build/agent.rb +0 -2
- data/build/basics.rb +2 -0
- data/build/common_library.rb +0 -6
- data/build/misc.rb +0 -2
- data/build/schema_printer.rb +0 -2
- data/build/support/cxx_dependency_map.rb +57 -254
- data/dev/copy_boost_headers +3 -14
- data/dev/index_cxx_dependencies.rb +1 -1
- data/doc/AiInstructions.md +112 -0
- data/doc/CxxMockingStrategy.md +42 -0
- data/doc/CxxTestingGuide.md +110 -0
- data/doc/DesignAspects/LimitedGemDependencies.md +22 -14
- data/doc/TempFileHandling.md +15 -0
- data/passenger.gemspec +1 -1
- data/resources/templates/standalone/server.erb +1 -0
- data/src/agent/Core/ApiServer.h +0 -1
- data/src/agent/Core/ApplicationPool/AbstractSession.h +10 -1
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +33 -18
- data/src/agent/Core/ApplicationPool/Group.h +0 -1
- data/src/agent/Core/ApplicationPool/Implementation.cpp +0 -3
- data/src/agent/Core/ApplicationPool/Session.h +14 -19
- data/src/agent/Core/ApplicationPool/Socket.h +15 -5
- data/src/agent/Core/ApplicationPool/TestSession.h +74 -15
- data/src/agent/Core/Config.h +2 -34
- data/src/agent/Core/ConfigChange.cpp +1 -41
- data/src/agent/Core/Controller/CheckoutSession.cpp +100 -14
- data/src/agent/Core/Controller/Client.h +0 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/Controller/Hooks.cpp +13 -0
- data/src/agent/Core/Controller/InitRequest.cpp +2 -0
- data/src/agent/Core/Controller/InternalUtils.cpp +12 -0
- data/src/agent/Core/Controller/Request.h +3 -2
- data/src/agent/Core/Controller.h +12 -13
- data/src/agent/Core/CoreMain.cpp +1 -56
- data/src/agent/Core/OptionParser.h +1 -7
- data/src/agent/Core/SecurityUpdateChecker.h +0 -1
- data/src/agent/Watchdog/Config.h +2 -21
- data/src/agent/Watchdog/WatchdogMain.cpp +0 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +0 -20
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +0 -60
- data/src/apache2_module/Hooks.cpp +0 -4
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +0 -44
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +0 -52
- data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
- data/src/cxx_supportlib/Algorithms/Hasher.h +4 -7
- data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -160
- data/src/cxx_supportlib/Constants.h +2 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +2 -3
- data/src/cxx_supportlib/FileTools/FileManip.h +2 -0
- data/src/cxx_supportlib/Hooks.h +0 -1
- data/src/cxx_supportlib/IOTools/IOUtils.cpp +49 -60
- data/src/cxx_supportlib/IOTools/IOUtils.h +65 -73
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +2 -0
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +24 -24
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +2 -2
- data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +0 -2
- data/src/cxx_supportlib/Utils/FastStringStream.h +7 -7
- data/src/cxx_supportlib/Utils/IniFile.h +24 -25
- data/src/cxx_supportlib/Utils.h +0 -30
- data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +4 -0
- data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -0
- data/src/cxx_supportlib/oxt/implementation.cpp +41 -2
- data/src/cxx_supportlib/oxt/system_calls.cpp +1 -0
- data/src/cxx_supportlib/oxt/system_calls.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +23 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +72 -49
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +15 -11
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +36 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +21 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +10 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +21 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +73 -14
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +18 -29
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +6 -10
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +1 -20
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +4 -49
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +13 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +47 -46
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +12 -252
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +101 -592
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +12 -24
- data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +37 -44
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +1 -23
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +7 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +39 -90
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +13 -14
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +16 -17
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +16 -55
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +5 -14
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_type_traits.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +32 -110
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +28 -565
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +11 -17
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +20 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +34 -68
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +78 -356
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +31 -89
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +195 -12
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +206 -17
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +1202 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map_fwd.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +1065 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set_fwd.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +30 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +248 -47
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +120 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_handle.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_handle.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +13 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/types_constructibility.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +32 -44
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +31 -35
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_printers.hpp +414 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -32
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +6 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -48
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +5 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +21 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +13 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +0 -24
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +0 -48
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +0 -16
- data/src/nginx_module/ngx_http_passenger_module.c +0 -4
- data/src/ruby_native_extension/passenger_native_support.c +19 -3
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +8 -24
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +0 -3
- data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +6 -28
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +9 -8
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +2 -27
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +0 -30
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +8 -20
- data/src/ruby_supportlib/phusion_passenger.rb +7 -7
- data/src/schema_printer/SchemaPrinterMain.cpp +0 -4
- metadata +19 -670
- data/dev/websocketpp.patch +0 -39
- data/src/agent/Core/AdminPanelConnector.h +0 -680
- data/src/cxx_supportlib/DataStructures/HashMap.h +0 -60
- data/src/cxx_supportlib/FileTools/LargeFiles.cpp +0 -41
- data/src/cxx_supportlib/FileTools/LargeFiles.h +0 -43
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +0 -975
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +0 -338
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +0 -824
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +0 -353
- data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +0 -154
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +0 -223
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +0 -283
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +0 -950
- data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +0 -144
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +0 -1364
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +0 -712
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +0 -826
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +0 -288
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +0 -691
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +0 -1358
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +0 -628
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +0 -825
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +0 -989
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +0 -650
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +0 -1938
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +0 -2710
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +0 -333
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +0 -644
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +0 -746
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +0 -1165
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +0 -452
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +0 -826
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +0 -624
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +0 -598
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +0 -615
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +0 -666
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +0 -618
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +0 -2755
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +0 -320
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +0 -275
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +0 -294
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +0 -267
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +0 -523
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +0 -303
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +0 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +0 -247
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +0 -159
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_composed.hpp +0 -1323
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +0 -525
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +0 -269
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +0 -415
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +0 -1348
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +0 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +0 -330
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +0 -220
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +0 -721
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +0 -107
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +0 -713
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +0 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +0 -839
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +0 -127
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +0 -192
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +0 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_message.hpp +0 -129
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload.hpp +0 -222
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload_handler.hpp +0 -81
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +0 -254
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +0 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +0 -122
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +0 -151
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +0 -1413
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +0 -445
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +0 -341
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +0 -181
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +0 -190
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +0 -249
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +0 -297
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +0 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +0 -154
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +0 -123
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +0 -268
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +0 -555
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +0 -513
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +0 -333
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +0 -120
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +0 -996
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +0 -113
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +0 -471
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +0 -111
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +0 -828
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +0 -173
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +0 -400
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +0 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +0 -916
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +0 -251
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +0 -115
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +0 -610
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +0 -76
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +0 -131
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +0 -65
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +0 -170
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +0 -234
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +0 -314
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +0 -677
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +0 -126
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +0 -402
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +0 -95
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +0 -199
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +0 -828
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +0 -4046
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +0 -187
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +0 -348
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +0 -204
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +0 -99
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +0 -209
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +0 -209
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +0 -179
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +0 -197
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +0 -192
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +0 -689
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +0 -191
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +0 -187
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +0 -263
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +0 -116
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +0 -282
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +0 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +0 -208
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +0 -194
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +0 -193
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +0 -196
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +0 -631
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +0 -665
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +0 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +0 -298
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +0 -273
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +0 -108
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +0 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +0 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +0 -521
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +0 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +0 -173
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +0 -164
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +0 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +0 -120
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +0 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +0 -78
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +0 -251
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +0 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +0 -66
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +0 -111
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +0 -81
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +0 -228
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +0 -572
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +0 -133
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +0 -325
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +0 -164
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +0 -199
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +0 -205
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -202
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +0 -196
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +0 -635
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +0 -757
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +0 -133
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +0 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +0 -214
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +0 -116
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +0 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +0 -152
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +0 -243
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +0 -293
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +0 -165
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +0 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +0 -55
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +0 -294
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +0 -100
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +0 -377
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +0 -429
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +0 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +0 -78
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +0 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +0 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +0 -53
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +0 -101
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +0 -262
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +0 -57
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +0 -363
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +0 -391
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +0 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +0 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +0 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +0 -145
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +0 -197
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +0 -199
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +0 -390
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +0 -280
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +0 -1935
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +0 -1362
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +0 -1082
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +0 -193
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +0 -192
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +0 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +0 -1004
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +0 -755
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +0 -330
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +0 -753
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +0 -390
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +0 -365
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +0 -364
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +0 -134
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +0 -538
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +0 -516
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +0 -516
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +0 -154
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +0 -303
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +0 -295
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +0 -230
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +0 -363
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +0 -202
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +0 -681
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +0 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +0 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +0 -625
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +0 -199
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +0 -183
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +0 -63
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +0 -1224
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +0 -790
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +0 -257
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +0 -457
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +0 -226
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +0 -191
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +0 -113
- data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +0 -168
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +0 -191
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +0 -125
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +0 -112
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +0 -123
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +0 -124
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +0 -129
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +0 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +0 -144
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +0 -136
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +0 -278
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +0 -1198
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +0 -406
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +0 -386
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +0 -270
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +0 -270
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +0 -98
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +0 -459
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +0 -705
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +0 -75
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +0 -151
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +0 -84
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +0 -319
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +0 -435
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +0 -178
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +0 -172
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +0 -904
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +0 -564
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +0 -2670
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +0 -289
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +0 -556
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +0 -1402
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +0 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +0 -181
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +0 -279
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +0 -144
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +0 -303
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -709
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +0 -782
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +0 -482
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -1507
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +0 -398
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +0 -283
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +0 -423
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +0 -158
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +0 -409
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +0 -126
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +0 -65
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +0 -284
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +0 -1114
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +0 -115
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +0 -190
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +0 -262
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +0 -309
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +0 -143
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +0 -197
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +0 -568
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +0 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +0 -117
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +0 -208
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +0 -344
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +0 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +0 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +0 -220
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +0 -55
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +0 -193
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +0 -259
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +0 -233
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +0 -131
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +0 -113
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +0 -63
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +0 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +0 -245
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +0 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +0 -141
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +0 -133
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +0 -775
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +0 -561
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +0 -215
- data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +0 -581
- data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +0 -315
- data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +0 -1549
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +0 -830
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +0 -3204
- data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +0 -140
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +0 -346
- data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +0 -437
- data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +0 -347
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +0 -169
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +0 -173
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +0 -561
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -873
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +0 -764
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +0 -211
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +0 -121
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +0 -379
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +0 -378
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +0 -74
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +0 -219
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +0 -78
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +0 -129
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +0 -1324
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +0 -126
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +0 -75
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +0 -100
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +0 -1044
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +0 -65
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +0 -559
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +0 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -673
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +0 -269
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +0 -965
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +0 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +0 -104
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +0 -117
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +0 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +0 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +0 -238
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +0 -161
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +0 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +0 -58
- data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +0 -1528
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +0 -843
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +0 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +0 -1059
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +0 -23
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/websocketpp/COPYING +0 -145
- data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +0 -444
- data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +0 -49
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/base64/base64.hpp +0 -178
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/client.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +0 -353
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +0 -141
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio_ssl.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/chrono.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/connection_hdl.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/cpp11.hpp +0 -162
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +0 -100
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +0 -448
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/network.hpp +0 -106
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/platforms.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/random.hpp +0 -82
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/regex.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/stdint.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/system_error.hpp +0 -84
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/time.hpp +0 -56
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/type_traits.hpp +0 -65
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/basic.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/none.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_client.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/boost_config.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +0 -297
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core_client.hpp +0 -294
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug.hpp +0 -286
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_client.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_server.hpp +0 -312
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +0 -1642
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection_base.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +0 -700
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint_base.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/error.hpp +0 -277
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/extension.hpp +0 -102
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -129
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -817
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -853
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/constants.hpp +0 -308
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +0 -200
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/request.hpp +0 -191
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/response.hpp +0 -266
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +0 -629
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/request.hpp +0 -124
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/response.hpp +0 -188
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2375
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -87
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/basic.hpp +0 -199
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/levels.hpp +0 -203
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/stub.hpp +0 -119
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/syslog.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/message.hpp +0 -340
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/pool.hpp +0 -229
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +0 -299
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi00.hpp +0 -462
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi07.hpp +0 -78
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi08.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +0 -1072
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/processor.hpp +0 -407
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/none.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/random_device.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/server.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/base.hpp +0 -232
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1197
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1182
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -159
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -372
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -474
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/connection.hpp +0 -238
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/base.hpp +0 -104
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/base.hpp +0 -133
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/base.hpp +0 -95
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -140
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +0 -356
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utf8_validator.hpp +0 -154
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +0 -61
@@ -1,1935 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// execution/any_executor.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_EXECUTION_ANY_EXECUTOR_HPP
|
12
|
-
#define BOOST_ASIO_EXECUTION_ANY_EXECUTOR_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 <new>
|
20
|
-
#include <typeinfo>
|
21
|
-
#include <boost/asio/detail/assert.hpp>
|
22
|
-
#include <boost/asio/detail/atomic_count.hpp>
|
23
|
-
#include <boost/asio/detail/cstddef.hpp>
|
24
|
-
#include <boost/asio/detail/executor_function.hpp>
|
25
|
-
#include <boost/asio/detail/memory.hpp>
|
26
|
-
#include <boost/asio/detail/non_const_lvalue.hpp>
|
27
|
-
#include <boost/asio/detail/scoped_ptr.hpp>
|
28
|
-
#include <boost/asio/detail/type_traits.hpp>
|
29
|
-
#include <boost/asio/detail/throw_exception.hpp>
|
30
|
-
#include <boost/asio/execution/bad_executor.hpp>
|
31
|
-
#include <boost/asio/execution/blocking.hpp>
|
32
|
-
#include <boost/asio/execution/executor.hpp>
|
33
|
-
#include <boost/asio/prefer.hpp>
|
34
|
-
#include <boost/asio/query.hpp>
|
35
|
-
#include <boost/asio/require.hpp>
|
36
|
-
|
37
|
-
#include <boost/asio/detail/push_options.hpp>
|
38
|
-
|
39
|
-
namespace boost {
|
40
|
-
namespace asio {
|
41
|
-
|
42
|
-
#if defined(GENERATING_DOCUMENTATION)
|
43
|
-
|
44
|
-
namespace execution {
|
45
|
-
|
46
|
-
/// Polymorphic executor wrapper.
|
47
|
-
template <typename... SupportableProperties>
|
48
|
-
class any_executor
|
49
|
-
{
|
50
|
-
public:
|
51
|
-
/// Default constructor.
|
52
|
-
any_executor() noexcept;
|
53
|
-
|
54
|
-
/// Construct in an empty state. Equivalent effects to default constructor.
|
55
|
-
any_executor(nullptr_t) noexcept;
|
56
|
-
|
57
|
-
/// Copy constructor.
|
58
|
-
any_executor(const any_executor& e) noexcept;
|
59
|
-
|
60
|
-
/// Move constructor.
|
61
|
-
any_executor(any_executor&& e) noexcept;
|
62
|
-
|
63
|
-
/// Construct to point to the same target as another any_executor.
|
64
|
-
template <class... OtherSupportableProperties>
|
65
|
-
any_executor(any_executor<OtherSupportableProperties...> e);
|
66
|
-
|
67
|
-
/// Construct to point to the same target as another any_executor.
|
68
|
-
template <class... OtherSupportableProperties>
|
69
|
-
any_executor(std::nothrow_t,
|
70
|
-
any_executor<OtherSupportableProperties...> e) noexcept;
|
71
|
-
|
72
|
-
/// Construct to point to the same target as another any_executor.
|
73
|
-
any_executor(std::nothrow_t, const any_executor& e) noexcept;
|
74
|
-
|
75
|
-
/// Construct to point to the same target as another any_executor.
|
76
|
-
any_executor(std::nothrow_t, any_executor&& e) noexcept;
|
77
|
-
|
78
|
-
/// Construct a polymorphic wrapper for the specified executor.
|
79
|
-
template <typename Executor>
|
80
|
-
any_executor(Executor e);
|
81
|
-
|
82
|
-
/// Construct a polymorphic wrapper for the specified executor.
|
83
|
-
template <typename Executor>
|
84
|
-
any_executor(std::nothrow_t, Executor e) noexcept;
|
85
|
-
|
86
|
-
/// Assignment operator.
|
87
|
-
any_executor& operator=(const any_executor& e) noexcept;
|
88
|
-
|
89
|
-
/// Move assignment operator.
|
90
|
-
any_executor& operator=(any_executor&& e) noexcept;
|
91
|
-
|
92
|
-
/// Assignment operator that sets the polymorphic wrapper to the empty state.
|
93
|
-
any_executor& operator=(nullptr_t);
|
94
|
-
|
95
|
-
/// Assignment operator to create a polymorphic wrapper for the specified
|
96
|
-
/// executor.
|
97
|
-
template <typename Executor>
|
98
|
-
any_executor& operator=(Executor e);
|
99
|
-
|
100
|
-
/// Destructor.
|
101
|
-
~any_executor();
|
102
|
-
|
103
|
-
/// Swap targets with another polymorphic wrapper.
|
104
|
-
void swap(any_executor& other) noexcept;
|
105
|
-
|
106
|
-
/// Obtain a polymorphic wrapper with the specified property.
|
107
|
-
/**
|
108
|
-
* Do not call this function directly. It is intended for use with the
|
109
|
-
* boost::asio::require and boost::asio::prefer customisation points.
|
110
|
-
*
|
111
|
-
* For example:
|
112
|
-
* @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
|
113
|
-
* auto ex2 = boost::asio::requre(ex, execution::blocking.possibly); @endcode
|
114
|
-
*/
|
115
|
-
template <typename Property>
|
116
|
-
any_executor require(Property) const;
|
117
|
-
|
118
|
-
/// Obtain a polymorphic wrapper with the specified property.
|
119
|
-
/**
|
120
|
-
* Do not call this function directly. It is intended for use with the
|
121
|
-
* boost::asio::prefer customisation point.
|
122
|
-
*
|
123
|
-
* For example:
|
124
|
-
* @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
|
125
|
-
* auto ex2 = boost::asio::prefer(ex, execution::blocking.possibly); @endcode
|
126
|
-
*/
|
127
|
-
template <typename Property>
|
128
|
-
any_executor prefer(Property) const;
|
129
|
-
|
130
|
-
/// Obtain the value associated with the specified property.
|
131
|
-
/**
|
132
|
-
* Do not call this function directly. It is intended for use with the
|
133
|
-
* boost::asio::query customisation point.
|
134
|
-
*
|
135
|
-
* For example:
|
136
|
-
* @code execution::any_executor<execution::occupancy_t> ex = ...;
|
137
|
-
* size_t n = boost::asio::query(ex, execution::occupancy); @endcode
|
138
|
-
*/
|
139
|
-
template <typename Property>
|
140
|
-
typename Property::polymorphic_query_result_type query(Property) const;
|
141
|
-
|
142
|
-
/// Execute the function on the target executor.
|
143
|
-
/**
|
144
|
-
* Throws boost::asio::bad_executor if the polymorphic wrapper has no target.
|
145
|
-
*/
|
146
|
-
template <typename Function>
|
147
|
-
void execute(Function&& f) const;
|
148
|
-
|
149
|
-
/// Obtain the underlying execution context.
|
150
|
-
/**
|
151
|
-
* This function is provided for backward compatibility. It is automatically
|
152
|
-
* defined when the @c SupportableProperties... list includes a property of
|
153
|
-
* type <tt>execution::context_as<U></tt>, for some type <tt>U</tt>.
|
154
|
-
*/
|
155
|
-
automatically_determined context() const;
|
156
|
-
|
157
|
-
/// Determine whether the wrapper has a target executor.
|
158
|
-
/**
|
159
|
-
* @returns @c true if the polymorphic wrapper has a target executor,
|
160
|
-
* otherwise false.
|
161
|
-
*/
|
162
|
-
explicit operator bool() const noexcept;
|
163
|
-
|
164
|
-
/// Get the type of the target executor.
|
165
|
-
const type_info& target_type() const noexcept;
|
166
|
-
|
167
|
-
/// Get a pointer to the target executor.
|
168
|
-
template <typename Executor> Executor* target() noexcept;
|
169
|
-
|
170
|
-
/// Get a pointer to the target executor.
|
171
|
-
template <typename Executor> const Executor* target() const noexcept;
|
172
|
-
};
|
173
|
-
|
174
|
-
/// Equality operator.
|
175
|
-
/**
|
176
|
-
* @relates any_executor
|
177
|
-
*/
|
178
|
-
template <typename... SupportableProperties>
|
179
|
-
bool operator==(const any_executor<SupportableProperties...>& a,
|
180
|
-
const any_executor<SupportableProperties...>& b) noexcept;
|
181
|
-
|
182
|
-
/// Equality operator.
|
183
|
-
/**
|
184
|
-
* @relates any_executor
|
185
|
-
*/
|
186
|
-
template <typename... SupportableProperties>
|
187
|
-
bool operator==(const any_executor<SupportableProperties...>& a,
|
188
|
-
nullptr_t) noexcept;
|
189
|
-
|
190
|
-
/// Equality operator.
|
191
|
-
/**
|
192
|
-
* @relates any_executor
|
193
|
-
*/
|
194
|
-
template <typename... SupportableProperties>
|
195
|
-
bool operator==(nullptr_t,
|
196
|
-
const any_executor<SupportableProperties...>& b) noexcept;
|
197
|
-
|
198
|
-
/// Inequality operator.
|
199
|
-
/**
|
200
|
-
* @relates any_executor
|
201
|
-
*/
|
202
|
-
template <typename... SupportableProperties>
|
203
|
-
bool operator!=(const any_executor<SupportableProperties...>& a,
|
204
|
-
const any_executor<SupportableProperties...>& b) noexcept;
|
205
|
-
|
206
|
-
/// Inequality operator.
|
207
|
-
/**
|
208
|
-
* @relates any_executor
|
209
|
-
*/
|
210
|
-
template <typename... SupportableProperties>
|
211
|
-
bool operator!=(const any_executor<SupportableProperties...>& a,
|
212
|
-
nullptr_t) noexcept;
|
213
|
-
|
214
|
-
/// Inequality operator.
|
215
|
-
/**
|
216
|
-
* @relates any_executor
|
217
|
-
*/
|
218
|
-
template <typename... SupportableProperties>
|
219
|
-
bool operator!=(nullptr_t,
|
220
|
-
const any_executor<SupportableProperties...>& b) noexcept;
|
221
|
-
|
222
|
-
} // namespace execution
|
223
|
-
|
224
|
-
#else // defined(GENERATING_DOCUMENTATION)
|
225
|
-
|
226
|
-
namespace execution {
|
227
|
-
|
228
|
-
#if !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
|
229
|
-
#define BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL
|
230
|
-
|
231
|
-
template <typename... SupportableProperties>
|
232
|
-
class any_executor;
|
233
|
-
|
234
|
-
#endif // !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
|
235
|
-
|
236
|
-
template <typename U>
|
237
|
-
struct context_as_t;
|
238
|
-
|
239
|
-
namespace detail {
|
240
|
-
|
241
|
-
// Traits used to detect whether a property is requirable or preferable, taking
|
242
|
-
// into account that T::is_requirable or T::is_preferable may not not be well
|
243
|
-
// formed.
|
244
|
-
|
245
|
-
template <typename T, typename = void>
|
246
|
-
struct is_requirable : false_type {};
|
247
|
-
|
248
|
-
template <typename T>
|
249
|
-
struct is_requirable<T, enable_if_t<T::is_requirable>> : true_type {};
|
250
|
-
|
251
|
-
template <typename T, typename = void>
|
252
|
-
struct is_preferable : false_type {};
|
253
|
-
|
254
|
-
template <typename T>
|
255
|
-
struct is_preferable<T, enable_if_t<T::is_preferable>> : true_type {};
|
256
|
-
|
257
|
-
// Trait used to detect context_as property, for backward compatibility.
|
258
|
-
|
259
|
-
template <typename T>
|
260
|
-
struct is_context_as : false_type {};
|
261
|
-
|
262
|
-
template <typename U>
|
263
|
-
struct is_context_as<context_as_t<U>> : true_type {};
|
264
|
-
|
265
|
-
// Helper template to:
|
266
|
-
// - Check if a target can supply the supportable properties.
|
267
|
-
// - Find the first convertible-from-T property in the list.
|
268
|
-
|
269
|
-
template <std::size_t I, typename Props>
|
270
|
-
struct supportable_properties;
|
271
|
-
|
272
|
-
template <std::size_t I, typename Prop>
|
273
|
-
struct supportable_properties<I, void(Prop)>
|
274
|
-
{
|
275
|
-
template <typename T>
|
276
|
-
struct is_valid_target : integral_constant<bool,
|
277
|
-
(
|
278
|
-
is_requirable<Prop>::value
|
279
|
-
? can_require<T, Prop>::value
|
280
|
-
: true
|
281
|
-
)
|
282
|
-
&&
|
283
|
-
(
|
284
|
-
is_preferable<Prop>::value
|
285
|
-
? can_prefer<T, Prop>::value
|
286
|
-
: true
|
287
|
-
)
|
288
|
-
&&
|
289
|
-
(
|
290
|
-
!is_requirable<Prop>::value && !is_preferable<Prop>::value
|
291
|
-
? can_query<T, Prop>::value
|
292
|
-
: true
|
293
|
-
)
|
294
|
-
>
|
295
|
-
{
|
296
|
-
};
|
297
|
-
|
298
|
-
struct found
|
299
|
-
{
|
300
|
-
static constexpr bool value = true;
|
301
|
-
typedef Prop type;
|
302
|
-
typedef typename Prop::polymorphic_query_result_type query_result_type;
|
303
|
-
static constexpr std::size_t index = I;
|
304
|
-
};
|
305
|
-
|
306
|
-
struct not_found
|
307
|
-
{
|
308
|
-
static constexpr bool value = false;
|
309
|
-
};
|
310
|
-
|
311
|
-
template <typename T>
|
312
|
-
struct find_convertible_property :
|
313
|
-
conditional_t<
|
314
|
-
is_same<T, Prop>::value || is_convertible<T, Prop>::value,
|
315
|
-
found,
|
316
|
-
not_found
|
317
|
-
> {};
|
318
|
-
|
319
|
-
template <typename T>
|
320
|
-
struct find_convertible_requirable_property :
|
321
|
-
conditional_t<
|
322
|
-
is_requirable<Prop>::value
|
323
|
-
&& (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
|
324
|
-
found,
|
325
|
-
not_found
|
326
|
-
> {};
|
327
|
-
|
328
|
-
template <typename T>
|
329
|
-
struct find_convertible_preferable_property :
|
330
|
-
conditional_t<
|
331
|
-
is_preferable<Prop>::value
|
332
|
-
&& (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
|
333
|
-
found,
|
334
|
-
not_found
|
335
|
-
> {};
|
336
|
-
|
337
|
-
struct find_context_as_property :
|
338
|
-
conditional_t<
|
339
|
-
is_context_as<Prop>::value,
|
340
|
-
found,
|
341
|
-
not_found
|
342
|
-
> {};
|
343
|
-
};
|
344
|
-
|
345
|
-
template <std::size_t I, typename Head, typename... Tail>
|
346
|
-
struct supportable_properties<I, void(Head, Tail...)>
|
347
|
-
{
|
348
|
-
template <typename T>
|
349
|
-
struct is_valid_target : integral_constant<bool,
|
350
|
-
(
|
351
|
-
supportable_properties<I,
|
352
|
-
void(Head)>::template is_valid_target<T>::value
|
353
|
-
&&
|
354
|
-
supportable_properties<I + 1,
|
355
|
-
void(Tail...)>::template is_valid_target<T>::value
|
356
|
-
)
|
357
|
-
>
|
358
|
-
{
|
359
|
-
};
|
360
|
-
|
361
|
-
template <typename T>
|
362
|
-
struct find_convertible_property :
|
363
|
-
conditional_t<
|
364
|
-
is_convertible<T, Head>::value,
|
365
|
-
typename supportable_properties<I, void(Head)>::found,
|
366
|
-
typename supportable_properties<I + 1,
|
367
|
-
void(Tail...)>::template find_convertible_property<T>
|
368
|
-
> {};
|
369
|
-
|
370
|
-
template <typename T>
|
371
|
-
struct find_convertible_requirable_property :
|
372
|
-
conditional_t<
|
373
|
-
is_requirable<Head>::value
|
374
|
-
&& is_convertible<T, Head>::value,
|
375
|
-
typename supportable_properties<I, void(Head)>::found,
|
376
|
-
typename supportable_properties<I + 1,
|
377
|
-
void(Tail...)>::template find_convertible_requirable_property<T>
|
378
|
-
> {};
|
379
|
-
|
380
|
-
template <typename T>
|
381
|
-
struct find_convertible_preferable_property :
|
382
|
-
conditional_t<
|
383
|
-
is_preferable<Head>::value
|
384
|
-
&& is_convertible<T, Head>::value,
|
385
|
-
typename supportable_properties<I, void(Head)>::found,
|
386
|
-
typename supportable_properties<I + 1,
|
387
|
-
void(Tail...)>::template find_convertible_preferable_property<T>
|
388
|
-
> {};
|
389
|
-
|
390
|
-
struct find_context_as_property :
|
391
|
-
conditional_t<
|
392
|
-
is_context_as<Head>::value,
|
393
|
-
typename supportable_properties<I, void(Head)>::found,
|
394
|
-
typename supportable_properties<I + 1,
|
395
|
-
void(Tail...)>::find_context_as_property
|
396
|
-
> {};
|
397
|
-
};
|
398
|
-
|
399
|
-
template <typename T, typename Props>
|
400
|
-
struct is_valid_target_executor :
|
401
|
-
conditional_t<
|
402
|
-
is_executor<T>::value,
|
403
|
-
typename supportable_properties<0, Props>::template is_valid_target<T>,
|
404
|
-
false_type
|
405
|
-
>
|
406
|
-
{
|
407
|
-
};
|
408
|
-
|
409
|
-
template <typename Props>
|
410
|
-
struct is_valid_target_executor<int, Props> : false_type
|
411
|
-
{
|
412
|
-
};
|
413
|
-
|
414
|
-
class shared_target_executor
|
415
|
-
{
|
416
|
-
public:
|
417
|
-
template <typename E>
|
418
|
-
shared_target_executor(E&& e, decay_t<E>*& target)
|
419
|
-
{
|
420
|
-
impl<decay_t<E>>* i =
|
421
|
-
new impl<decay_t<E>>(static_cast<E&&>(e));
|
422
|
-
target = &i->ex_;
|
423
|
-
impl_ = i;
|
424
|
-
}
|
425
|
-
|
426
|
-
template <typename E>
|
427
|
-
shared_target_executor(std::nothrow_t, E&& e, decay_t<E>*& target) noexcept
|
428
|
-
{
|
429
|
-
impl<decay_t<E>>* i =
|
430
|
-
new (std::nothrow) impl<decay_t<E>>(static_cast<E&&>(e));
|
431
|
-
target = i ? &i->ex_ : 0;
|
432
|
-
impl_ = i;
|
433
|
-
}
|
434
|
-
|
435
|
-
shared_target_executor(const shared_target_executor& other) noexcept
|
436
|
-
: impl_(other.impl_)
|
437
|
-
{
|
438
|
-
if (impl_)
|
439
|
-
boost::asio::detail::ref_count_up(impl_->ref_count_);
|
440
|
-
}
|
441
|
-
|
442
|
-
shared_target_executor(shared_target_executor&& other) noexcept
|
443
|
-
: impl_(other.impl_)
|
444
|
-
{
|
445
|
-
other.impl_ = 0;
|
446
|
-
}
|
447
|
-
|
448
|
-
~shared_target_executor()
|
449
|
-
{
|
450
|
-
if (impl_)
|
451
|
-
if (boost::asio::detail::ref_count_down(impl_->ref_count_))
|
452
|
-
delete impl_;
|
453
|
-
}
|
454
|
-
|
455
|
-
void* get() const noexcept
|
456
|
-
{
|
457
|
-
return impl_ ? impl_->get() : 0;
|
458
|
-
}
|
459
|
-
|
460
|
-
private:
|
461
|
-
shared_target_executor& operator=(
|
462
|
-
const shared_target_executor& other) = delete;
|
463
|
-
|
464
|
-
shared_target_executor& operator=(
|
465
|
-
shared_target_executor&& other) = delete;
|
466
|
-
|
467
|
-
struct impl_base
|
468
|
-
{
|
469
|
-
impl_base() : ref_count_(1) {}
|
470
|
-
virtual ~impl_base() {}
|
471
|
-
virtual void* get() = 0;
|
472
|
-
boost::asio::detail::atomic_count ref_count_;
|
473
|
-
};
|
474
|
-
|
475
|
-
template <typename Executor>
|
476
|
-
struct impl : impl_base
|
477
|
-
{
|
478
|
-
impl(Executor ex) : ex_(static_cast<Executor&&>(ex)) {}
|
479
|
-
virtual void* get() { return &ex_; }
|
480
|
-
Executor ex_;
|
481
|
-
};
|
482
|
-
|
483
|
-
impl_base* impl_;
|
484
|
-
};
|
485
|
-
|
486
|
-
class any_executor_base
|
487
|
-
{
|
488
|
-
public:
|
489
|
-
any_executor_base() noexcept
|
490
|
-
: object_fns_(0),
|
491
|
-
target_(0),
|
492
|
-
target_fns_(0)
|
493
|
-
{
|
494
|
-
}
|
495
|
-
|
496
|
-
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
497
|
-
any_executor_base(Executor ex, false_type)
|
498
|
-
: target_fns_(target_fns_table<Executor>(
|
499
|
-
any_executor_base::query_blocking(ex,
|
500
|
-
can_query<const Executor&, const execution::blocking_t&>())
|
501
|
-
== execution::blocking.always))
|
502
|
-
{
|
503
|
-
any_executor_base::construct_object(ex,
|
504
|
-
integral_constant<bool,
|
505
|
-
sizeof(Executor) <= sizeof(object_type)
|
506
|
-
&& alignment_of<Executor>::value <= alignment_of<object_type>::value
|
507
|
-
>());
|
508
|
-
}
|
509
|
-
|
510
|
-
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
511
|
-
any_executor_base(std::nothrow_t, Executor ex, false_type) noexcept
|
512
|
-
: target_fns_(target_fns_table<Executor>(
|
513
|
-
any_executor_base::query_blocking(ex,
|
514
|
-
can_query<const Executor&, const execution::blocking_t&>())
|
515
|
-
== execution::blocking.always))
|
516
|
-
{
|
517
|
-
any_executor_base::construct_object(std::nothrow, ex,
|
518
|
-
integral_constant<bool,
|
519
|
-
sizeof(Executor) <= sizeof(object_type)
|
520
|
-
&& alignment_of<Executor>::value <= alignment_of<object_type>::value
|
521
|
-
>());
|
522
|
-
if (target_ == 0)
|
523
|
-
{
|
524
|
-
object_fns_ = 0;
|
525
|
-
target_fns_ = 0;
|
526
|
-
}
|
527
|
-
}
|
528
|
-
|
529
|
-
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
530
|
-
any_executor_base(Executor other, true_type)
|
531
|
-
: object_fns_(object_fns_table<shared_target_executor>()),
|
532
|
-
target_fns_(other.target_fns_)
|
533
|
-
{
|
534
|
-
Executor* p = 0;
|
535
|
-
new (&object_) shared_target_executor(
|
536
|
-
static_cast<Executor&&>(other), p);
|
537
|
-
target_ = p->template target<void>();
|
538
|
-
}
|
539
|
-
|
540
|
-
template <BOOST_ASIO_EXECUTION_EXECUTOR Executor>
|
541
|
-
any_executor_base(std::nothrow_t,
|
542
|
-
Executor other, true_type) noexcept
|
543
|
-
: object_fns_(object_fns_table<shared_target_executor>()),
|
544
|
-
target_fns_(other.target_fns_)
|
545
|
-
{
|
546
|
-
Executor* p = 0;
|
547
|
-
new (&object_) shared_target_executor(
|
548
|
-
std::nothrow, static_cast<Executor&&>(other), p);
|
549
|
-
if (p)
|
550
|
-
target_ = p->template target<void>();
|
551
|
-
else
|
552
|
-
{
|
553
|
-
target_ = 0;
|
554
|
-
object_fns_ = 0;
|
555
|
-
target_fns_ = 0;
|
556
|
-
}
|
557
|
-
}
|
558
|
-
|
559
|
-
any_executor_base(const any_executor_base& other) noexcept
|
560
|
-
{
|
561
|
-
if (!!other)
|
562
|
-
{
|
563
|
-
object_fns_ = other.object_fns_;
|
564
|
-
target_fns_ = other.target_fns_;
|
565
|
-
object_fns_->copy(*this, other);
|
566
|
-
}
|
567
|
-
else
|
568
|
-
{
|
569
|
-
object_fns_ = 0;
|
570
|
-
target_ = 0;
|
571
|
-
target_fns_ = 0;
|
572
|
-
}
|
573
|
-
}
|
574
|
-
|
575
|
-
~any_executor_base() noexcept
|
576
|
-
{
|
577
|
-
if (!!*this)
|
578
|
-
object_fns_->destroy(*this);
|
579
|
-
}
|
580
|
-
|
581
|
-
any_executor_base& operator=(
|
582
|
-
const any_executor_base& other) noexcept
|
583
|
-
{
|
584
|
-
if (this != &other)
|
585
|
-
{
|
586
|
-
if (!!*this)
|
587
|
-
object_fns_->destroy(*this);
|
588
|
-
if (!!other)
|
589
|
-
{
|
590
|
-
object_fns_ = other.object_fns_;
|
591
|
-
target_fns_ = other.target_fns_;
|
592
|
-
object_fns_->copy(*this, other);
|
593
|
-
}
|
594
|
-
else
|
595
|
-
{
|
596
|
-
object_fns_ = 0;
|
597
|
-
target_ = 0;
|
598
|
-
target_fns_ = 0;
|
599
|
-
}
|
600
|
-
}
|
601
|
-
return *this;
|
602
|
-
}
|
603
|
-
|
604
|
-
any_executor_base& operator=(nullptr_t) noexcept
|
605
|
-
{
|
606
|
-
if (target_)
|
607
|
-
object_fns_->destroy(*this);
|
608
|
-
target_ = 0;
|
609
|
-
object_fns_ = 0;
|
610
|
-
target_fns_ = 0;
|
611
|
-
return *this;
|
612
|
-
}
|
613
|
-
|
614
|
-
any_executor_base(any_executor_base&& other) noexcept
|
615
|
-
{
|
616
|
-
if (other.target_)
|
617
|
-
{
|
618
|
-
object_fns_ = other.object_fns_;
|
619
|
-
target_fns_ = other.target_fns_;
|
620
|
-
other.object_fns_ = 0;
|
621
|
-
other.target_fns_ = 0;
|
622
|
-
object_fns_->move(*this, other);
|
623
|
-
other.target_ = 0;
|
624
|
-
}
|
625
|
-
else
|
626
|
-
{
|
627
|
-
object_fns_ = 0;
|
628
|
-
target_ = 0;
|
629
|
-
target_fns_ = 0;
|
630
|
-
}
|
631
|
-
}
|
632
|
-
|
633
|
-
any_executor_base& operator=(
|
634
|
-
any_executor_base&& other) noexcept
|
635
|
-
{
|
636
|
-
if (this != &other)
|
637
|
-
{
|
638
|
-
if (!!*this)
|
639
|
-
object_fns_->destroy(*this);
|
640
|
-
if (!!other)
|
641
|
-
{
|
642
|
-
object_fns_ = other.object_fns_;
|
643
|
-
target_fns_ = other.target_fns_;
|
644
|
-
other.object_fns_ = 0;
|
645
|
-
other.target_fns_ = 0;
|
646
|
-
object_fns_->move(*this, other);
|
647
|
-
other.target_ = 0;
|
648
|
-
}
|
649
|
-
else
|
650
|
-
{
|
651
|
-
object_fns_ = 0;
|
652
|
-
target_ = 0;
|
653
|
-
target_fns_ = 0;
|
654
|
-
}
|
655
|
-
}
|
656
|
-
return *this;
|
657
|
-
}
|
658
|
-
|
659
|
-
void swap(any_executor_base& other) noexcept
|
660
|
-
{
|
661
|
-
if (this != &other)
|
662
|
-
{
|
663
|
-
any_executor_base tmp(static_cast<any_executor_base&&>(other));
|
664
|
-
other = static_cast<any_executor_base&&>(*this);
|
665
|
-
*this = static_cast<any_executor_base&&>(tmp);
|
666
|
-
}
|
667
|
-
}
|
668
|
-
|
669
|
-
template <typename F>
|
670
|
-
void execute(F&& f) const
|
671
|
-
{
|
672
|
-
if (target_)
|
673
|
-
{
|
674
|
-
if (target_fns_->blocking_execute != 0)
|
675
|
-
{
|
676
|
-
boost::asio::detail::non_const_lvalue<F> f2(f);
|
677
|
-
target_fns_->blocking_execute(*this, function_view(f2.value));
|
678
|
-
}
|
679
|
-
else
|
680
|
-
{
|
681
|
-
target_fns_->execute(*this,
|
682
|
-
function(static_cast<F&&>(f), std::allocator<void>()));
|
683
|
-
}
|
684
|
-
}
|
685
|
-
else
|
686
|
-
{
|
687
|
-
bad_executor ex;
|
688
|
-
boost::asio::detail::throw_exception(ex);
|
689
|
-
}
|
690
|
-
}
|
691
|
-
|
692
|
-
template <typename Executor>
|
693
|
-
Executor* target()
|
694
|
-
{
|
695
|
-
return target_ && (is_same<Executor, void>::value
|
696
|
-
|| target_fns_->target_type() == target_type_ex<Executor>())
|
697
|
-
? static_cast<Executor*>(target_) : 0;
|
698
|
-
}
|
699
|
-
|
700
|
-
template <typename Executor>
|
701
|
-
const Executor* target() const
|
702
|
-
{
|
703
|
-
return target_ && (is_same<Executor, void>::value
|
704
|
-
|| target_fns_->target_type() == target_type_ex<Executor>())
|
705
|
-
? static_cast<const Executor*>(target_) : 0;
|
706
|
-
}
|
707
|
-
|
708
|
-
#if !defined(BOOST_ASIO_NO_TYPEID)
|
709
|
-
const std::type_info& target_type() const
|
710
|
-
{
|
711
|
-
return target_ ? target_fns_->target_type() : typeid(void);
|
712
|
-
}
|
713
|
-
#else // !defined(BOOST_ASIO_NO_TYPEID)
|
714
|
-
const void* target_type() const
|
715
|
-
{
|
716
|
-
return target_ ? target_fns_->target_type() : 0;
|
717
|
-
}
|
718
|
-
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
719
|
-
|
720
|
-
struct unspecified_bool_type_t {};
|
721
|
-
typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
|
722
|
-
static void unspecified_bool_true(unspecified_bool_type_t) {}
|
723
|
-
|
724
|
-
operator unspecified_bool_type() const noexcept
|
725
|
-
{
|
726
|
-
return target_ ? &any_executor_base::unspecified_bool_true : 0;
|
727
|
-
}
|
728
|
-
|
729
|
-
bool operator!() const noexcept
|
730
|
-
{
|
731
|
-
return target_ == 0;
|
732
|
-
}
|
733
|
-
|
734
|
-
protected:
|
735
|
-
bool equality_helper(const any_executor_base& other) const noexcept
|
736
|
-
{
|
737
|
-
if (target_ == other.target_)
|
738
|
-
return true;
|
739
|
-
if (target_ && !other.target_)
|
740
|
-
return false;
|
741
|
-
if (!target_ && other.target_)
|
742
|
-
return false;
|
743
|
-
if (target_fns_ != other.target_fns_)
|
744
|
-
return false;
|
745
|
-
return target_fns_->equal(*this, other);
|
746
|
-
}
|
747
|
-
|
748
|
-
template <typename Ex>
|
749
|
-
Ex& object()
|
750
|
-
{
|
751
|
-
return *static_cast<Ex*>(static_cast<void*>(&object_));
|
752
|
-
}
|
753
|
-
|
754
|
-
template <typename Ex>
|
755
|
-
const Ex& object() const
|
756
|
-
{
|
757
|
-
return *static_cast<const Ex*>(static_cast<const void*>(&object_));
|
758
|
-
}
|
759
|
-
|
760
|
-
struct object_fns
|
761
|
-
{
|
762
|
-
void (*destroy)(any_executor_base&);
|
763
|
-
void (*copy)(any_executor_base&, const any_executor_base&);
|
764
|
-
void (*move)(any_executor_base&, any_executor_base&);
|
765
|
-
const void* (*target)(const any_executor_base&);
|
766
|
-
};
|
767
|
-
|
768
|
-
static void destroy_shared(any_executor_base& ex)
|
769
|
-
{
|
770
|
-
typedef shared_target_executor type;
|
771
|
-
ex.object<type>().~type();
|
772
|
-
}
|
773
|
-
|
774
|
-
static void copy_shared(any_executor_base& ex1, const any_executor_base& ex2)
|
775
|
-
{
|
776
|
-
typedef shared_target_executor type;
|
777
|
-
new (&ex1.object_) type(ex2.object<type>());
|
778
|
-
ex1.target_ = ex2.target_;
|
779
|
-
}
|
780
|
-
|
781
|
-
static void move_shared(any_executor_base& ex1, any_executor_base& ex2)
|
782
|
-
{
|
783
|
-
typedef shared_target_executor type;
|
784
|
-
new (&ex1.object_) type(static_cast<type&&>(ex2.object<type>()));
|
785
|
-
ex1.target_ = ex2.target_;
|
786
|
-
ex2.object<type>().~type();
|
787
|
-
}
|
788
|
-
|
789
|
-
static const void* target_shared(const any_executor_base& ex)
|
790
|
-
{
|
791
|
-
typedef shared_target_executor type;
|
792
|
-
return ex.object<type>().get();
|
793
|
-
}
|
794
|
-
|
795
|
-
template <typename Obj>
|
796
|
-
static const object_fns* object_fns_table(
|
797
|
-
enable_if_t<
|
798
|
-
is_same<Obj, shared_target_executor>::value
|
799
|
-
>* = 0)
|
800
|
-
{
|
801
|
-
static const object_fns fns =
|
802
|
-
{
|
803
|
-
&any_executor_base::destroy_shared,
|
804
|
-
&any_executor_base::copy_shared,
|
805
|
-
&any_executor_base::move_shared,
|
806
|
-
&any_executor_base::target_shared
|
807
|
-
};
|
808
|
-
return &fns;
|
809
|
-
}
|
810
|
-
|
811
|
-
template <typename Obj>
|
812
|
-
static void destroy_object(any_executor_base& ex)
|
813
|
-
{
|
814
|
-
ex.object<Obj>().~Obj();
|
815
|
-
}
|
816
|
-
|
817
|
-
template <typename Obj>
|
818
|
-
static void copy_object(any_executor_base& ex1, const any_executor_base& ex2)
|
819
|
-
{
|
820
|
-
new (&ex1.object_) Obj(ex2.object<Obj>());
|
821
|
-
ex1.target_ = &ex1.object<Obj>();
|
822
|
-
}
|
823
|
-
|
824
|
-
template <typename Obj>
|
825
|
-
static void move_object(any_executor_base& ex1, any_executor_base& ex2)
|
826
|
-
{
|
827
|
-
new (&ex1.object_) Obj(static_cast<Obj&&>(ex2.object<Obj>()));
|
828
|
-
ex1.target_ = &ex1.object<Obj>();
|
829
|
-
ex2.object<Obj>().~Obj();
|
830
|
-
}
|
831
|
-
|
832
|
-
template <typename Obj>
|
833
|
-
static const void* target_object(const any_executor_base& ex)
|
834
|
-
{
|
835
|
-
return &ex.object<Obj>();
|
836
|
-
}
|
837
|
-
|
838
|
-
template <typename Obj>
|
839
|
-
static const object_fns* object_fns_table(
|
840
|
-
enable_if_t<
|
841
|
-
!is_same<Obj, void>::value
|
842
|
-
&& !is_same<Obj, shared_target_executor>::value
|
843
|
-
>* = 0)
|
844
|
-
{
|
845
|
-
static const object_fns fns =
|
846
|
-
{
|
847
|
-
&any_executor_base::destroy_object<Obj>,
|
848
|
-
&any_executor_base::copy_object<Obj>,
|
849
|
-
&any_executor_base::move_object<Obj>,
|
850
|
-
&any_executor_base::target_object<Obj>
|
851
|
-
};
|
852
|
-
return &fns;
|
853
|
-
}
|
854
|
-
|
855
|
-
typedef boost::asio::detail::executor_function function;
|
856
|
-
typedef boost::asio::detail::executor_function_view function_view;
|
857
|
-
|
858
|
-
struct target_fns
|
859
|
-
{
|
860
|
-
#if !defined(BOOST_ASIO_NO_TYPEID)
|
861
|
-
const std::type_info& (*target_type)();
|
862
|
-
#else // !defined(BOOST_ASIO_NO_TYPEID)
|
863
|
-
const void* (*target_type)();
|
864
|
-
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
865
|
-
bool (*equal)(const any_executor_base&, const any_executor_base&);
|
866
|
-
void (*execute)(const any_executor_base&, function&&);
|
867
|
-
void (*blocking_execute)(const any_executor_base&, function_view);
|
868
|
-
};
|
869
|
-
|
870
|
-
#if !defined(BOOST_ASIO_NO_TYPEID)
|
871
|
-
template <typename Ex>
|
872
|
-
static const std::type_info& target_type_ex()
|
873
|
-
{
|
874
|
-
return typeid(Ex);
|
875
|
-
}
|
876
|
-
#else // !defined(BOOST_ASIO_NO_TYPEID)
|
877
|
-
template <typename Ex>
|
878
|
-
static const void* target_type_ex()
|
879
|
-
{
|
880
|
-
static int unique_id;
|
881
|
-
return &unique_id;
|
882
|
-
}
|
883
|
-
#endif // !defined(BOOST_ASIO_NO_TYPEID)
|
884
|
-
|
885
|
-
template <typename Ex>
|
886
|
-
static bool equal_ex(const any_executor_base& ex1,
|
887
|
-
const any_executor_base& ex2)
|
888
|
-
{
|
889
|
-
const Ex* p1 = ex1.target<Ex>();
|
890
|
-
const Ex* p2 = ex2.target<Ex>();
|
891
|
-
BOOST_ASIO_ASSUME(p1 != 0 && p2 != 0);
|
892
|
-
return *p1 == *p2;
|
893
|
-
}
|
894
|
-
|
895
|
-
template <typename Ex>
|
896
|
-
static void execute_ex(const any_executor_base& ex, function&& f)
|
897
|
-
{
|
898
|
-
const Ex* p = ex.target<Ex>();
|
899
|
-
BOOST_ASIO_ASSUME(p != 0);
|
900
|
-
p->execute(static_cast<function&&>(f));
|
901
|
-
}
|
902
|
-
|
903
|
-
template <typename Ex>
|
904
|
-
static void blocking_execute_ex(const any_executor_base& ex, function_view f)
|
905
|
-
{
|
906
|
-
const Ex* p = ex.target<Ex>();
|
907
|
-
BOOST_ASIO_ASSUME(p != 0);
|
908
|
-
p->execute(f);
|
909
|
-
}
|
910
|
-
|
911
|
-
template <typename Ex>
|
912
|
-
static const target_fns* target_fns_table(bool is_always_blocking,
|
913
|
-
enable_if_t<
|
914
|
-
!is_same<Ex, void>::value
|
915
|
-
>* = 0)
|
916
|
-
{
|
917
|
-
static const target_fns fns_with_execute =
|
918
|
-
{
|
919
|
-
&any_executor_base::target_type_ex<Ex>,
|
920
|
-
&any_executor_base::equal_ex<Ex>,
|
921
|
-
&any_executor_base::execute_ex<Ex>,
|
922
|
-
0
|
923
|
-
};
|
924
|
-
|
925
|
-
static const target_fns fns_with_blocking_execute =
|
926
|
-
{
|
927
|
-
&any_executor_base::target_type_ex<Ex>,
|
928
|
-
&any_executor_base::equal_ex<Ex>,
|
929
|
-
0,
|
930
|
-
&any_executor_base::blocking_execute_ex<Ex>
|
931
|
-
};
|
932
|
-
|
933
|
-
return is_always_blocking ? &fns_with_blocking_execute : &fns_with_execute;
|
934
|
-
}
|
935
|
-
|
936
|
-
#if defined(BOOST_ASIO_MSVC)
|
937
|
-
# pragma warning (push)
|
938
|
-
# pragma warning (disable:4702)
|
939
|
-
#endif // defined(BOOST_ASIO_MSVC)
|
940
|
-
|
941
|
-
static void query_fn_void(void*, const void*, const void*)
|
942
|
-
{
|
943
|
-
bad_executor ex;
|
944
|
-
boost::asio::detail::throw_exception(ex);
|
945
|
-
}
|
946
|
-
|
947
|
-
template <typename Ex, class Prop>
|
948
|
-
static void query_fn_non_void(void*, const void* ex, const void* prop,
|
949
|
-
enable_if_t<
|
950
|
-
boost::asio::can_query<const Ex&, const Prop&>::value
|
951
|
-
&& is_same<typename Prop::polymorphic_query_result_type, void>::value
|
952
|
-
>*)
|
953
|
-
{
|
954
|
-
boost::asio::query(*static_cast<const Ex*>(ex),
|
955
|
-
*static_cast<const Prop*>(prop));
|
956
|
-
}
|
957
|
-
|
958
|
-
template <typename Ex, class Prop>
|
959
|
-
static void query_fn_non_void(void*, const void*, const void*,
|
960
|
-
enable_if_t<
|
961
|
-
!boost::asio::can_query<const Ex&, const Prop&>::value
|
962
|
-
&& is_same<typename Prop::polymorphic_query_result_type, void>::value
|
963
|
-
>*)
|
964
|
-
{
|
965
|
-
}
|
966
|
-
|
967
|
-
template <typename Ex, class Prop>
|
968
|
-
static void query_fn_non_void(void* result, const void* ex, const void* prop,
|
969
|
-
enable_if_t<
|
970
|
-
boost::asio::can_query<const Ex&, const Prop&>::value
|
971
|
-
&& !is_same<typename Prop::polymorphic_query_result_type, void>::value
|
972
|
-
&& is_reference<typename Prop::polymorphic_query_result_type>::value
|
973
|
-
>*)
|
974
|
-
{
|
975
|
-
*static_cast<remove_reference_t<
|
976
|
-
typename Prop::polymorphic_query_result_type>**>(result)
|
977
|
-
= &static_cast<typename Prop::polymorphic_query_result_type>(
|
978
|
-
boost::asio::query(*static_cast<const Ex*>(ex),
|
979
|
-
*static_cast<const Prop*>(prop)));
|
980
|
-
}
|
981
|
-
|
982
|
-
template <typename Ex, class Prop>
|
983
|
-
static void query_fn_non_void(void*, const void*, const void*,
|
984
|
-
enable_if_t<
|
985
|
-
!boost::asio::can_query<const Ex&, const Prop&>::value
|
986
|
-
&& !is_same<typename Prop::polymorphic_query_result_type, void>::value
|
987
|
-
&& is_reference<typename Prop::polymorphic_query_result_type>::value
|
988
|
-
>*)
|
989
|
-
{
|
990
|
-
std::terminate(); // Combination should not be possible.
|
991
|
-
}
|
992
|
-
|
993
|
-
template <typename Ex, class Prop>
|
994
|
-
static void query_fn_non_void(void* result, const void* ex, const void* prop,
|
995
|
-
enable_if_t<
|
996
|
-
boost::asio::can_query<const Ex&, const Prop&>::value
|
997
|
-
&& !is_same<typename Prop::polymorphic_query_result_type, void>::value
|
998
|
-
&& is_scalar<typename Prop::polymorphic_query_result_type>::value
|
999
|
-
>*)
|
1000
|
-
{
|
1001
|
-
*static_cast<typename Prop::polymorphic_query_result_type*>(result)
|
1002
|
-
= static_cast<typename Prop::polymorphic_query_result_type>(
|
1003
|
-
boost::asio::query(*static_cast<const Ex*>(ex),
|
1004
|
-
*static_cast<const Prop*>(prop)));
|
1005
|
-
}
|
1006
|
-
|
1007
|
-
template <typename Ex, class Prop>
|
1008
|
-
static void query_fn_non_void(void* result, const void*, const void*,
|
1009
|
-
enable_if_t<
|
1010
|
-
!boost::asio::can_query<const Ex&, const Prop&>::value
|
1011
|
-
&& !is_same<typename Prop::polymorphic_query_result_type, void>::value
|
1012
|
-
&& is_scalar<typename Prop::polymorphic_query_result_type>::value
|
1013
|
-
>*)
|
1014
|
-
{
|
1015
|
-
*static_cast<typename Prop::polymorphic_query_result_type*>(result)
|
1016
|
-
= typename Prop::polymorphic_query_result_type();
|
1017
|
-
}
|
1018
|
-
|
1019
|
-
template <typename Ex, class Prop>
|
1020
|
-
static void query_fn_non_void(void* result, const void* ex, const void* prop,
|
1021
|
-
enable_if_t<
|
1022
|
-
boost::asio::can_query<const Ex&, const Prop&>::value
|
1023
|
-
&& !is_same<typename Prop::polymorphic_query_result_type, void>::value
|
1024
|
-
&& !is_reference<typename Prop::polymorphic_query_result_type>::value
|
1025
|
-
&& !is_scalar<typename Prop::polymorphic_query_result_type>::value
|
1026
|
-
>*)
|
1027
|
-
{
|
1028
|
-
*static_cast<typename Prop::polymorphic_query_result_type**>(result)
|
1029
|
-
= new typename Prop::polymorphic_query_result_type(
|
1030
|
-
boost::asio::query(*static_cast<const Ex*>(ex),
|
1031
|
-
*static_cast<const Prop*>(prop)));
|
1032
|
-
}
|
1033
|
-
|
1034
|
-
template <typename Ex, class Prop>
|
1035
|
-
static void query_fn_non_void(void* result, const void*, const void*, ...)
|
1036
|
-
{
|
1037
|
-
*static_cast<typename Prop::polymorphic_query_result_type**>(result)
|
1038
|
-
= new typename Prop::polymorphic_query_result_type();
|
1039
|
-
}
|
1040
|
-
|
1041
|
-
template <typename Ex, class Prop>
|
1042
|
-
static void query_fn_impl(void* result, const void* ex, const void* prop,
|
1043
|
-
enable_if_t<
|
1044
|
-
is_same<Ex, void>::value
|
1045
|
-
>*)
|
1046
|
-
{
|
1047
|
-
query_fn_void(result, ex, prop);
|
1048
|
-
}
|
1049
|
-
|
1050
|
-
template <typename Ex, class Prop>
|
1051
|
-
static void query_fn_impl(void* result, const void* ex, const void* prop,
|
1052
|
-
enable_if_t<
|
1053
|
-
!is_same<Ex, void>::value
|
1054
|
-
>*)
|
1055
|
-
{
|
1056
|
-
query_fn_non_void<Ex, Prop>(result, ex, prop, 0);
|
1057
|
-
}
|
1058
|
-
|
1059
|
-
template <typename Ex, class Prop>
|
1060
|
-
static void query_fn(void* result, const void* ex, const void* prop)
|
1061
|
-
{
|
1062
|
-
query_fn_impl<Ex, Prop>(result, ex, prop, 0);
|
1063
|
-
}
|
1064
|
-
|
1065
|
-
template <typename Poly, typename Ex, class Prop>
|
1066
|
-
static Poly require_fn_impl(const void*, const void*,
|
1067
|
-
enable_if_t<
|
1068
|
-
is_same<Ex, void>::value
|
1069
|
-
>*)
|
1070
|
-
{
|
1071
|
-
bad_executor ex;
|
1072
|
-
boost::asio::detail::throw_exception(ex);
|
1073
|
-
return Poly();
|
1074
|
-
}
|
1075
|
-
|
1076
|
-
template <typename Poly, typename Ex, class Prop>
|
1077
|
-
static Poly require_fn_impl(const void* ex, const void* prop,
|
1078
|
-
enable_if_t<
|
1079
|
-
!is_same<Ex, void>::value && Prop::is_requirable
|
1080
|
-
>*)
|
1081
|
-
{
|
1082
|
-
return boost::asio::require(*static_cast<const Ex*>(ex),
|
1083
|
-
*static_cast<const Prop*>(prop));
|
1084
|
-
}
|
1085
|
-
|
1086
|
-
template <typename Poly, typename Ex, class Prop>
|
1087
|
-
static Poly require_fn_impl(const void*, const void*, ...)
|
1088
|
-
{
|
1089
|
-
return Poly();
|
1090
|
-
}
|
1091
|
-
|
1092
|
-
template <typename Poly, typename Ex, class Prop>
|
1093
|
-
static Poly require_fn(const void* ex, const void* prop)
|
1094
|
-
{
|
1095
|
-
return require_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
|
1096
|
-
}
|
1097
|
-
|
1098
|
-
template <typename Poly, typename Ex, class Prop>
|
1099
|
-
static Poly prefer_fn_impl(const void*, const void*,
|
1100
|
-
enable_if_t<
|
1101
|
-
is_same<Ex, void>::value
|
1102
|
-
>*)
|
1103
|
-
{
|
1104
|
-
bad_executor ex;
|
1105
|
-
boost::asio::detail::throw_exception(ex);
|
1106
|
-
return Poly();
|
1107
|
-
}
|
1108
|
-
|
1109
|
-
template <typename Poly, typename Ex, class Prop>
|
1110
|
-
static Poly prefer_fn_impl(const void* ex, const void* prop,
|
1111
|
-
enable_if_t<
|
1112
|
-
!is_same<Ex, void>::value && Prop::is_preferable
|
1113
|
-
>*)
|
1114
|
-
{
|
1115
|
-
return boost::asio::prefer(*static_cast<const Ex*>(ex),
|
1116
|
-
*static_cast<const Prop*>(prop));
|
1117
|
-
}
|
1118
|
-
|
1119
|
-
template <typename Poly, typename Ex, class Prop>
|
1120
|
-
static Poly prefer_fn_impl(const void*, const void*, ...)
|
1121
|
-
{
|
1122
|
-
return Poly();
|
1123
|
-
}
|
1124
|
-
|
1125
|
-
template <typename Poly, typename Ex, class Prop>
|
1126
|
-
static Poly prefer_fn(const void* ex, const void* prop)
|
1127
|
-
{
|
1128
|
-
return prefer_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
|
1129
|
-
}
|
1130
|
-
|
1131
|
-
template <typename Poly>
|
1132
|
-
struct prop_fns
|
1133
|
-
{
|
1134
|
-
void (*query)(void*, const void*, const void*);
|
1135
|
-
Poly (*require)(const void*, const void*);
|
1136
|
-
Poly (*prefer)(const void*, const void*);
|
1137
|
-
};
|
1138
|
-
|
1139
|
-
#if defined(BOOST_ASIO_MSVC)
|
1140
|
-
# pragma warning (pop)
|
1141
|
-
#endif // defined(BOOST_ASIO_MSVC)
|
1142
|
-
|
1143
|
-
private:
|
1144
|
-
template <typename Executor>
|
1145
|
-
static execution::blocking_t query_blocking(const Executor& ex, true_type)
|
1146
|
-
{
|
1147
|
-
return boost::asio::query(ex, execution::blocking);
|
1148
|
-
}
|
1149
|
-
|
1150
|
-
template <typename Executor>
|
1151
|
-
static execution::blocking_t query_blocking(const Executor&, false_type)
|
1152
|
-
{
|
1153
|
-
return execution::blocking_t();
|
1154
|
-
}
|
1155
|
-
|
1156
|
-
template <typename Executor>
|
1157
|
-
void construct_object(Executor& ex, true_type)
|
1158
|
-
{
|
1159
|
-
object_fns_ = object_fns_table<Executor>();
|
1160
|
-
target_ = new (&object_) Executor(static_cast<Executor&&>(ex));
|
1161
|
-
}
|
1162
|
-
|
1163
|
-
template <typename Executor>
|
1164
|
-
void construct_object(Executor& ex, false_type)
|
1165
|
-
{
|
1166
|
-
object_fns_ = object_fns_table<shared_target_executor>();
|
1167
|
-
Executor* p = 0;
|
1168
|
-
new (&object_) shared_target_executor(
|
1169
|
-
static_cast<Executor&&>(ex), p);
|
1170
|
-
target_ = p;
|
1171
|
-
}
|
1172
|
-
|
1173
|
-
template <typename Executor>
|
1174
|
-
void construct_object(std::nothrow_t,
|
1175
|
-
Executor& ex, true_type) noexcept
|
1176
|
-
{
|
1177
|
-
object_fns_ = object_fns_table<Executor>();
|
1178
|
-
target_ = new (&object_) Executor(static_cast<Executor&&>(ex));
|
1179
|
-
}
|
1180
|
-
|
1181
|
-
template <typename Executor>
|
1182
|
-
void construct_object(std::nothrow_t,
|
1183
|
-
Executor& ex, false_type) noexcept
|
1184
|
-
{
|
1185
|
-
object_fns_ = object_fns_table<shared_target_executor>();
|
1186
|
-
Executor* p = 0;
|
1187
|
-
new (&object_) shared_target_executor(
|
1188
|
-
std::nothrow, static_cast<Executor&&>(ex), p);
|
1189
|
-
target_ = p;
|
1190
|
-
}
|
1191
|
-
|
1192
|
-
/*private:*/public:
|
1193
|
-
// template <typename...> friend class any_executor;
|
1194
|
-
|
1195
|
-
typedef aligned_storage<
|
1196
|
-
sizeof(boost::asio::detail::shared_ptr<void>) + sizeof(void*),
|
1197
|
-
alignment_of<boost::asio::detail::shared_ptr<void>>::value
|
1198
|
-
>::type object_type;
|
1199
|
-
|
1200
|
-
object_type object_;
|
1201
|
-
const object_fns* object_fns_;
|
1202
|
-
void* target_;
|
1203
|
-
const target_fns* target_fns_;
|
1204
|
-
};
|
1205
|
-
|
1206
|
-
template <typename Derived, typename Property, typename = void>
|
1207
|
-
struct any_executor_context
|
1208
|
-
{
|
1209
|
-
};
|
1210
|
-
|
1211
|
-
#if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
|
1212
|
-
|
1213
|
-
template <typename Derived, typename Property>
|
1214
|
-
struct any_executor_context<Derived, Property, enable_if_t<Property::value>>
|
1215
|
-
{
|
1216
|
-
typename Property::query_result_type context() const
|
1217
|
-
{
|
1218
|
-
return static_cast<const Derived*>(this)->query(typename Property::type());
|
1219
|
-
}
|
1220
|
-
};
|
1221
|
-
|
1222
|
-
#endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
|
1223
|
-
|
1224
|
-
} // namespace detail
|
1225
|
-
|
1226
|
-
template <>
|
1227
|
-
class any_executor<> : public detail::any_executor_base
|
1228
|
-
{
|
1229
|
-
public:
|
1230
|
-
any_executor() noexcept
|
1231
|
-
: detail::any_executor_base()
|
1232
|
-
{
|
1233
|
-
}
|
1234
|
-
|
1235
|
-
any_executor(nullptr_t) noexcept
|
1236
|
-
: detail::any_executor_base()
|
1237
|
-
{
|
1238
|
-
}
|
1239
|
-
|
1240
|
-
template <typename Executor>
|
1241
|
-
any_executor(Executor ex,
|
1242
|
-
enable_if_t<
|
1243
|
-
conditional_t<
|
1244
|
-
!is_same<Executor, any_executor>::value
|
1245
|
-
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1246
|
-
is_executor<Executor>,
|
1247
|
-
false_type
|
1248
|
-
>::value
|
1249
|
-
>* = 0)
|
1250
|
-
: detail::any_executor_base(
|
1251
|
-
static_cast<Executor&&>(ex), false_type())
|
1252
|
-
{
|
1253
|
-
}
|
1254
|
-
|
1255
|
-
template <typename Executor>
|
1256
|
-
any_executor(std::nothrow_t, Executor ex,
|
1257
|
-
enable_if_t<
|
1258
|
-
conditional_t<
|
1259
|
-
!is_same<Executor, any_executor>::value
|
1260
|
-
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1261
|
-
is_executor<Executor>,
|
1262
|
-
false_type
|
1263
|
-
>::value
|
1264
|
-
>* = 0) noexcept
|
1265
|
-
: detail::any_executor_base(std::nothrow,
|
1266
|
-
static_cast<Executor&&>(ex), false_type())
|
1267
|
-
{
|
1268
|
-
}
|
1269
|
-
|
1270
|
-
template <typename... OtherSupportableProperties>
|
1271
|
-
any_executor(any_executor<OtherSupportableProperties...> other)
|
1272
|
-
: detail::any_executor_base(
|
1273
|
-
static_cast<const detail::any_executor_base&>(other))
|
1274
|
-
{
|
1275
|
-
}
|
1276
|
-
|
1277
|
-
template <typename... OtherSupportableProperties>
|
1278
|
-
any_executor(std::nothrow_t,
|
1279
|
-
any_executor<OtherSupportableProperties...> other) noexcept
|
1280
|
-
: detail::any_executor_base(
|
1281
|
-
static_cast<const detail::any_executor_base&>(other))
|
1282
|
-
{
|
1283
|
-
}
|
1284
|
-
|
1285
|
-
any_executor(const any_executor& other) noexcept
|
1286
|
-
: detail::any_executor_base(
|
1287
|
-
static_cast<const detail::any_executor_base&>(other))
|
1288
|
-
{
|
1289
|
-
}
|
1290
|
-
|
1291
|
-
any_executor(std::nothrow_t, const any_executor& other) noexcept
|
1292
|
-
: detail::any_executor_base(
|
1293
|
-
static_cast<const detail::any_executor_base&>(other))
|
1294
|
-
{
|
1295
|
-
}
|
1296
|
-
|
1297
|
-
any_executor& operator=(const any_executor& other) noexcept
|
1298
|
-
{
|
1299
|
-
if (this != &other)
|
1300
|
-
{
|
1301
|
-
detail::any_executor_base::operator=(
|
1302
|
-
static_cast<const detail::any_executor_base&>(other));
|
1303
|
-
}
|
1304
|
-
return *this;
|
1305
|
-
}
|
1306
|
-
|
1307
|
-
any_executor& operator=(nullptr_t p) noexcept
|
1308
|
-
{
|
1309
|
-
detail::any_executor_base::operator=(p);
|
1310
|
-
return *this;
|
1311
|
-
}
|
1312
|
-
|
1313
|
-
any_executor(any_executor&& other) noexcept
|
1314
|
-
: detail::any_executor_base(
|
1315
|
-
static_cast<any_executor_base&&>(
|
1316
|
-
static_cast<any_executor_base&>(other)))
|
1317
|
-
{
|
1318
|
-
}
|
1319
|
-
|
1320
|
-
any_executor(std::nothrow_t, any_executor&& other) noexcept
|
1321
|
-
: detail::any_executor_base(
|
1322
|
-
static_cast<any_executor_base&&>(
|
1323
|
-
static_cast<any_executor_base&>(other)))
|
1324
|
-
{
|
1325
|
-
}
|
1326
|
-
|
1327
|
-
any_executor& operator=(any_executor&& other) noexcept
|
1328
|
-
{
|
1329
|
-
if (this != &other)
|
1330
|
-
{
|
1331
|
-
detail::any_executor_base::operator=(
|
1332
|
-
static_cast<detail::any_executor_base&&>(
|
1333
|
-
static_cast<detail::any_executor_base&>(other)));
|
1334
|
-
}
|
1335
|
-
return *this;
|
1336
|
-
}
|
1337
|
-
|
1338
|
-
void swap(any_executor& other) noexcept
|
1339
|
-
{
|
1340
|
-
detail::any_executor_base::swap(
|
1341
|
-
static_cast<detail::any_executor_base&>(other));
|
1342
|
-
}
|
1343
|
-
|
1344
|
-
using detail::any_executor_base::execute;
|
1345
|
-
using detail::any_executor_base::target;
|
1346
|
-
using detail::any_executor_base::target_type;
|
1347
|
-
using detail::any_executor_base::operator unspecified_bool_type;
|
1348
|
-
using detail::any_executor_base::operator!;
|
1349
|
-
|
1350
|
-
bool equality_helper(const any_executor& other) const noexcept
|
1351
|
-
{
|
1352
|
-
return any_executor_base::equality_helper(other);
|
1353
|
-
}
|
1354
|
-
|
1355
|
-
template <typename AnyExecutor1, typename AnyExecutor2>
|
1356
|
-
friend enable_if_t<
|
1357
|
-
is_base_of<any_executor, AnyExecutor1>::value
|
1358
|
-
|| is_base_of<any_executor, AnyExecutor2>::value,
|
1359
|
-
bool
|
1360
|
-
> operator==(const AnyExecutor1& a,
|
1361
|
-
const AnyExecutor2& b) noexcept
|
1362
|
-
{
|
1363
|
-
return static_cast<const any_executor&>(a).equality_helper(b);
|
1364
|
-
}
|
1365
|
-
|
1366
|
-
template <typename AnyExecutor>
|
1367
|
-
friend enable_if_t<
|
1368
|
-
is_same<AnyExecutor, any_executor>::value,
|
1369
|
-
bool
|
1370
|
-
> operator==(const AnyExecutor& a, nullptr_t) noexcept
|
1371
|
-
{
|
1372
|
-
return !a;
|
1373
|
-
}
|
1374
|
-
|
1375
|
-
template <typename AnyExecutor>
|
1376
|
-
friend enable_if_t<
|
1377
|
-
is_same<AnyExecutor, any_executor>::value,
|
1378
|
-
bool
|
1379
|
-
> operator==(nullptr_t, const AnyExecutor& b) noexcept
|
1380
|
-
{
|
1381
|
-
return !b;
|
1382
|
-
}
|
1383
|
-
|
1384
|
-
template <typename AnyExecutor1, typename AnyExecutor2>
|
1385
|
-
friend enable_if_t<
|
1386
|
-
is_base_of<any_executor, AnyExecutor1>::value
|
1387
|
-
|| is_base_of<any_executor, AnyExecutor2>::value,
|
1388
|
-
bool
|
1389
|
-
> operator!=(const AnyExecutor1& a,
|
1390
|
-
const AnyExecutor2& b) noexcept
|
1391
|
-
{
|
1392
|
-
return !static_cast<const any_executor&>(a).equality_helper(b);
|
1393
|
-
}
|
1394
|
-
|
1395
|
-
template <typename AnyExecutor>
|
1396
|
-
friend enable_if_t<
|
1397
|
-
is_same<AnyExecutor, any_executor>::value,
|
1398
|
-
bool
|
1399
|
-
> operator!=(const AnyExecutor& a, nullptr_t) noexcept
|
1400
|
-
{
|
1401
|
-
return !!a;
|
1402
|
-
}
|
1403
|
-
|
1404
|
-
template <typename AnyExecutor>
|
1405
|
-
friend enable_if_t<
|
1406
|
-
is_same<AnyExecutor, any_executor>::value,
|
1407
|
-
bool
|
1408
|
-
> operator!=(nullptr_t, const AnyExecutor& b) noexcept
|
1409
|
-
{
|
1410
|
-
return !!b;
|
1411
|
-
}
|
1412
|
-
};
|
1413
|
-
|
1414
|
-
inline void swap(any_executor<>& a, any_executor<>& b) noexcept
|
1415
|
-
{
|
1416
|
-
return a.swap(b);
|
1417
|
-
}
|
1418
|
-
|
1419
|
-
template <typename... SupportableProperties>
|
1420
|
-
class any_executor :
|
1421
|
-
public detail::any_executor_base,
|
1422
|
-
public detail::any_executor_context<
|
1423
|
-
any_executor<SupportableProperties...>,
|
1424
|
-
typename detail::supportable_properties<
|
1425
|
-
0, void(SupportableProperties...)>::find_context_as_property>
|
1426
|
-
{
|
1427
|
-
public:
|
1428
|
-
any_executor() noexcept
|
1429
|
-
: detail::any_executor_base(),
|
1430
|
-
prop_fns_(prop_fns_table<void>())
|
1431
|
-
{
|
1432
|
-
}
|
1433
|
-
|
1434
|
-
any_executor(nullptr_t) noexcept
|
1435
|
-
: detail::any_executor_base(),
|
1436
|
-
prop_fns_(prop_fns_table<void>())
|
1437
|
-
{
|
1438
|
-
}
|
1439
|
-
|
1440
|
-
template <typename Executor>
|
1441
|
-
any_executor(Executor ex,
|
1442
|
-
enable_if_t<
|
1443
|
-
conditional_t<
|
1444
|
-
!is_same<Executor, any_executor>::value
|
1445
|
-
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1446
|
-
detail::is_valid_target_executor<
|
1447
|
-
Executor, void(SupportableProperties...)>,
|
1448
|
-
false_type
|
1449
|
-
>::value
|
1450
|
-
>* = 0)
|
1451
|
-
: detail::any_executor_base(
|
1452
|
-
static_cast<Executor&&>(ex), false_type()),
|
1453
|
-
prop_fns_(prop_fns_table<Executor>())
|
1454
|
-
{
|
1455
|
-
}
|
1456
|
-
|
1457
|
-
template <typename Executor>
|
1458
|
-
any_executor(std::nothrow_t, Executor ex,
|
1459
|
-
enable_if_t<
|
1460
|
-
conditional_t<
|
1461
|
-
!is_same<Executor, any_executor>::value
|
1462
|
-
&& !is_base_of<detail::any_executor_base, Executor>::value,
|
1463
|
-
detail::is_valid_target_executor<
|
1464
|
-
Executor, void(SupportableProperties...)>,
|
1465
|
-
false_type
|
1466
|
-
>::value
|
1467
|
-
>* = 0) noexcept
|
1468
|
-
: detail::any_executor_base(std::nothrow,
|
1469
|
-
static_cast<Executor&&>(ex), false_type()),
|
1470
|
-
prop_fns_(prop_fns_table<Executor>())
|
1471
|
-
{
|
1472
|
-
if (this->template target<void>() == 0)
|
1473
|
-
prop_fns_ = prop_fns_table<void>();
|
1474
|
-
}
|
1475
|
-
|
1476
|
-
template <typename... OtherSupportableProperties>
|
1477
|
-
any_executor(any_executor<OtherSupportableProperties...> other,
|
1478
|
-
enable_if_t<
|
1479
|
-
conditional_t<
|
1480
|
-
!is_same<
|
1481
|
-
any_executor<OtherSupportableProperties...>,
|
1482
|
-
any_executor
|
1483
|
-
>::value,
|
1484
|
-
typename detail::supportable_properties<
|
1485
|
-
0, void(SupportableProperties...)>::template is_valid_target<
|
1486
|
-
any_executor<OtherSupportableProperties...>>,
|
1487
|
-
false_type
|
1488
|
-
>::value
|
1489
|
-
>* = 0)
|
1490
|
-
: detail::any_executor_base(
|
1491
|
-
static_cast<any_executor<OtherSupportableProperties...>&&>(other),
|
1492
|
-
true_type()),
|
1493
|
-
prop_fns_(prop_fns_table<any_executor<OtherSupportableProperties...>>())
|
1494
|
-
{
|
1495
|
-
}
|
1496
|
-
|
1497
|
-
template <typename... OtherSupportableProperties>
|
1498
|
-
any_executor(std::nothrow_t,
|
1499
|
-
any_executor<OtherSupportableProperties...> other,
|
1500
|
-
enable_if_t<
|
1501
|
-
conditional_t<
|
1502
|
-
!is_same<
|
1503
|
-
any_executor<OtherSupportableProperties...>,
|
1504
|
-
any_executor
|
1505
|
-
>::value,
|
1506
|
-
typename detail::supportable_properties<
|
1507
|
-
0, void(SupportableProperties...)>::template is_valid_target<
|
1508
|
-
any_executor<OtherSupportableProperties...>>,
|
1509
|
-
false_type
|
1510
|
-
>::value
|
1511
|
-
>* = 0) noexcept
|
1512
|
-
: detail::any_executor_base(std::nothrow,
|
1513
|
-
static_cast<any_executor<OtherSupportableProperties...>&&>(other),
|
1514
|
-
true_type()),
|
1515
|
-
prop_fns_(prop_fns_table<any_executor<OtherSupportableProperties...>>())
|
1516
|
-
{
|
1517
|
-
if (this->template target<void>() == 0)
|
1518
|
-
prop_fns_ = prop_fns_table<void>();
|
1519
|
-
}
|
1520
|
-
|
1521
|
-
any_executor(const any_executor& other) noexcept
|
1522
|
-
: detail::any_executor_base(
|
1523
|
-
static_cast<const detail::any_executor_base&>(other)),
|
1524
|
-
prop_fns_(other.prop_fns_)
|
1525
|
-
{
|
1526
|
-
}
|
1527
|
-
|
1528
|
-
any_executor(std::nothrow_t, const any_executor& other) noexcept
|
1529
|
-
: detail::any_executor_base(
|
1530
|
-
static_cast<const detail::any_executor_base&>(other)),
|
1531
|
-
prop_fns_(other.prop_fns_)
|
1532
|
-
{
|
1533
|
-
}
|
1534
|
-
|
1535
|
-
any_executor& operator=(const any_executor& other) noexcept
|
1536
|
-
{
|
1537
|
-
if (this != &other)
|
1538
|
-
{
|
1539
|
-
prop_fns_ = other.prop_fns_;
|
1540
|
-
detail::any_executor_base::operator=(
|
1541
|
-
static_cast<const detail::any_executor_base&>(other));
|
1542
|
-
}
|
1543
|
-
return *this;
|
1544
|
-
}
|
1545
|
-
|
1546
|
-
any_executor& operator=(nullptr_t p) noexcept
|
1547
|
-
{
|
1548
|
-
prop_fns_ = prop_fns_table<void>();
|
1549
|
-
detail::any_executor_base::operator=(p);
|
1550
|
-
return *this;
|
1551
|
-
}
|
1552
|
-
|
1553
|
-
any_executor(any_executor&& other) noexcept
|
1554
|
-
: detail::any_executor_base(
|
1555
|
-
static_cast<any_executor_base&&>(
|
1556
|
-
static_cast<any_executor_base&>(other))),
|
1557
|
-
prop_fns_(other.prop_fns_)
|
1558
|
-
{
|
1559
|
-
other.prop_fns_ = prop_fns_table<void>();
|
1560
|
-
}
|
1561
|
-
|
1562
|
-
any_executor(std::nothrow_t, any_executor&& other) noexcept
|
1563
|
-
: detail::any_executor_base(
|
1564
|
-
static_cast<any_executor_base&&>(
|
1565
|
-
static_cast<any_executor_base&>(other))),
|
1566
|
-
prop_fns_(other.prop_fns_)
|
1567
|
-
{
|
1568
|
-
other.prop_fns_ = prop_fns_table<void>();
|
1569
|
-
}
|
1570
|
-
|
1571
|
-
any_executor& operator=(any_executor&& other) noexcept
|
1572
|
-
{
|
1573
|
-
if (this != &other)
|
1574
|
-
{
|
1575
|
-
prop_fns_ = other.prop_fns_;
|
1576
|
-
detail::any_executor_base::operator=(
|
1577
|
-
static_cast<detail::any_executor_base&&>(
|
1578
|
-
static_cast<detail::any_executor_base&>(other)));
|
1579
|
-
}
|
1580
|
-
return *this;
|
1581
|
-
}
|
1582
|
-
|
1583
|
-
void swap(any_executor& other) noexcept
|
1584
|
-
{
|
1585
|
-
if (this != &other)
|
1586
|
-
{
|
1587
|
-
detail::any_executor_base::swap(
|
1588
|
-
static_cast<detail::any_executor_base&>(other));
|
1589
|
-
const prop_fns<any_executor>* tmp_prop_fns = other.prop_fns_;
|
1590
|
-
other.prop_fns_ = prop_fns_;
|
1591
|
-
prop_fns_ = tmp_prop_fns;
|
1592
|
-
}
|
1593
|
-
}
|
1594
|
-
|
1595
|
-
using detail::any_executor_base::execute;
|
1596
|
-
using detail::any_executor_base::target;
|
1597
|
-
using detail::any_executor_base::target_type;
|
1598
|
-
using detail::any_executor_base::operator unspecified_bool_type;
|
1599
|
-
using detail::any_executor_base::operator!;
|
1600
|
-
|
1601
|
-
bool equality_helper(const any_executor& other) const noexcept
|
1602
|
-
{
|
1603
|
-
return any_executor_base::equality_helper(other);
|
1604
|
-
}
|
1605
|
-
|
1606
|
-
template <typename AnyExecutor1, typename AnyExecutor2>
|
1607
|
-
friend enable_if_t<
|
1608
|
-
is_base_of<any_executor, AnyExecutor1>::value
|
1609
|
-
|| is_base_of<any_executor, AnyExecutor2>::value,
|
1610
|
-
bool
|
1611
|
-
> operator==(const AnyExecutor1& a,
|
1612
|
-
const AnyExecutor2& b) noexcept
|
1613
|
-
{
|
1614
|
-
return static_cast<const any_executor&>(a).equality_helper(b);
|
1615
|
-
}
|
1616
|
-
|
1617
|
-
template <typename AnyExecutor>
|
1618
|
-
friend enable_if_t<
|
1619
|
-
is_same<AnyExecutor, any_executor>::value,
|
1620
|
-
bool
|
1621
|
-
> operator==(const AnyExecutor& a, nullptr_t) noexcept
|
1622
|
-
{
|
1623
|
-
return !a;
|
1624
|
-
}
|
1625
|
-
|
1626
|
-
template <typename AnyExecutor>
|
1627
|
-
friend enable_if_t<
|
1628
|
-
is_same<AnyExecutor, any_executor>::value,
|
1629
|
-
bool
|
1630
|
-
> operator==(nullptr_t, const AnyExecutor& b) noexcept
|
1631
|
-
{
|
1632
|
-
return !b;
|
1633
|
-
}
|
1634
|
-
|
1635
|
-
template <typename AnyExecutor1, typename AnyExecutor2>
|
1636
|
-
friend enable_if_t<
|
1637
|
-
is_base_of<any_executor, AnyExecutor1>::value
|
1638
|
-
|| is_base_of<any_executor, AnyExecutor2>::value,
|
1639
|
-
bool
|
1640
|
-
> operator!=(const AnyExecutor1& a,
|
1641
|
-
const AnyExecutor2& b) noexcept
|
1642
|
-
{
|
1643
|
-
return !static_cast<const any_executor&>(a).equality_helper(b);
|
1644
|
-
}
|
1645
|
-
|
1646
|
-
template <typename AnyExecutor>
|
1647
|
-
friend enable_if_t<
|
1648
|
-
is_same<AnyExecutor, any_executor>::value,
|
1649
|
-
bool
|
1650
|
-
> operator!=(const AnyExecutor& a, nullptr_t) noexcept
|
1651
|
-
{
|
1652
|
-
return !!a;
|
1653
|
-
}
|
1654
|
-
|
1655
|
-
template <typename AnyExecutor>
|
1656
|
-
friend enable_if_t<
|
1657
|
-
is_same<AnyExecutor, any_executor>::value,
|
1658
|
-
bool
|
1659
|
-
> operator!=(nullptr_t, const AnyExecutor& b) noexcept
|
1660
|
-
{
|
1661
|
-
return !!b;
|
1662
|
-
}
|
1663
|
-
|
1664
|
-
template <typename T>
|
1665
|
-
struct find_convertible_property :
|
1666
|
-
detail::supportable_properties<
|
1667
|
-
0, void(SupportableProperties...)>::template
|
1668
|
-
find_convertible_property<T> {};
|
1669
|
-
|
1670
|
-
template <typename Property>
|
1671
|
-
void query(const Property& p,
|
1672
|
-
enable_if_t<
|
1673
|
-
is_same<
|
1674
|
-
typename find_convertible_property<Property>::query_result_type,
|
1675
|
-
void
|
1676
|
-
>::value
|
1677
|
-
>* = 0) const
|
1678
|
-
{
|
1679
|
-
if (!target_)
|
1680
|
-
{
|
1681
|
-
bad_executor ex;
|
1682
|
-
boost::asio::detail::throw_exception(ex);
|
1683
|
-
}
|
1684
|
-
typedef find_convertible_property<Property> found;
|
1685
|
-
prop_fns_[found::index].query(0, object_fns_->target(*this),
|
1686
|
-
&static_cast<const typename found::type&>(p));
|
1687
|
-
}
|
1688
|
-
|
1689
|
-
template <typename Property>
|
1690
|
-
typename find_convertible_property<Property>::query_result_type
|
1691
|
-
query(const Property& p,
|
1692
|
-
enable_if_t<
|
1693
|
-
!is_same<
|
1694
|
-
typename find_convertible_property<Property>::query_result_type,
|
1695
|
-
void
|
1696
|
-
>::value
|
1697
|
-
&&
|
1698
|
-
is_reference<
|
1699
|
-
typename find_convertible_property<Property>::query_result_type
|
1700
|
-
>::value
|
1701
|
-
>* = 0) const
|
1702
|
-
{
|
1703
|
-
if (!target_)
|
1704
|
-
{
|
1705
|
-
bad_executor ex;
|
1706
|
-
boost::asio::detail::throw_exception(ex);
|
1707
|
-
}
|
1708
|
-
typedef find_convertible_property<Property> found;
|
1709
|
-
remove_reference_t<typename found::query_result_type>* result = 0;
|
1710
|
-
prop_fns_[found::index].query(&result, object_fns_->target(*this),
|
1711
|
-
&static_cast<const typename found::type&>(p));
|
1712
|
-
return *result;
|
1713
|
-
}
|
1714
|
-
|
1715
|
-
template <typename Property>
|
1716
|
-
typename find_convertible_property<Property>::query_result_type
|
1717
|
-
query(const Property& p,
|
1718
|
-
enable_if_t<
|
1719
|
-
!is_same<
|
1720
|
-
typename find_convertible_property<Property>::query_result_type,
|
1721
|
-
void
|
1722
|
-
>::value
|
1723
|
-
&&
|
1724
|
-
is_scalar<
|
1725
|
-
typename find_convertible_property<Property>::query_result_type
|
1726
|
-
>::value
|
1727
|
-
>* = 0) const
|
1728
|
-
{
|
1729
|
-
if (!target_)
|
1730
|
-
{
|
1731
|
-
bad_executor ex;
|
1732
|
-
boost::asio::detail::throw_exception(ex);
|
1733
|
-
}
|
1734
|
-
typedef find_convertible_property<Property> found;
|
1735
|
-
typename found::query_result_type result;
|
1736
|
-
prop_fns_[found::index].query(&result, object_fns_->target(*this),
|
1737
|
-
&static_cast<const typename found::type&>(p));
|
1738
|
-
return result;
|
1739
|
-
}
|
1740
|
-
|
1741
|
-
template <typename Property>
|
1742
|
-
typename find_convertible_property<Property>::query_result_type
|
1743
|
-
query(const Property& p,
|
1744
|
-
enable_if_t<
|
1745
|
-
!is_same<
|
1746
|
-
typename find_convertible_property<Property>::query_result_type,
|
1747
|
-
void
|
1748
|
-
>::value
|
1749
|
-
&&
|
1750
|
-
!is_reference<
|
1751
|
-
typename find_convertible_property<Property>::query_result_type
|
1752
|
-
>::value
|
1753
|
-
&&
|
1754
|
-
!is_scalar<
|
1755
|
-
typename find_convertible_property<Property>::query_result_type
|
1756
|
-
>::value
|
1757
|
-
>* = 0) const
|
1758
|
-
{
|
1759
|
-
if (!target_)
|
1760
|
-
{
|
1761
|
-
bad_executor ex;
|
1762
|
-
boost::asio::detail::throw_exception(ex);
|
1763
|
-
}
|
1764
|
-
typedef find_convertible_property<Property> found;
|
1765
|
-
typename found::query_result_type* result;
|
1766
|
-
prop_fns_[found::index].query(&result, object_fns_->target(*this),
|
1767
|
-
&static_cast<const typename found::type&>(p));
|
1768
|
-
return *boost::asio::detail::scoped_ptr<
|
1769
|
-
typename found::query_result_type>(result);
|
1770
|
-
}
|
1771
|
-
|
1772
|
-
template <typename T>
|
1773
|
-
struct find_convertible_requirable_property :
|
1774
|
-
detail::supportable_properties<
|
1775
|
-
0, void(SupportableProperties...)>::template
|
1776
|
-
find_convertible_requirable_property<T> {};
|
1777
|
-
|
1778
|
-
template <typename Property>
|
1779
|
-
any_executor require(const Property& p,
|
1780
|
-
enable_if_t<
|
1781
|
-
find_convertible_requirable_property<Property>::value
|
1782
|
-
>* = 0) const
|
1783
|
-
{
|
1784
|
-
if (!target_)
|
1785
|
-
{
|
1786
|
-
bad_executor ex;
|
1787
|
-
boost::asio::detail::throw_exception(ex);
|
1788
|
-
}
|
1789
|
-
typedef find_convertible_requirable_property<Property> found;
|
1790
|
-
return prop_fns_[found::index].require(object_fns_->target(*this),
|
1791
|
-
&static_cast<const typename found::type&>(p));
|
1792
|
-
}
|
1793
|
-
|
1794
|
-
template <typename T>
|
1795
|
-
struct find_convertible_preferable_property :
|
1796
|
-
detail::supportable_properties<
|
1797
|
-
0, void(SupportableProperties...)>::template
|
1798
|
-
find_convertible_preferable_property<T> {};
|
1799
|
-
|
1800
|
-
template <typename Property>
|
1801
|
-
any_executor prefer(const Property& p,
|
1802
|
-
enable_if_t<
|
1803
|
-
find_convertible_preferable_property<Property>::value
|
1804
|
-
>* = 0) const
|
1805
|
-
{
|
1806
|
-
if (!target_)
|
1807
|
-
{
|
1808
|
-
bad_executor ex;
|
1809
|
-
boost::asio::detail::throw_exception(ex);
|
1810
|
-
}
|
1811
|
-
typedef find_convertible_preferable_property<Property> found;
|
1812
|
-
return prop_fns_[found::index].prefer(object_fns_->target(*this),
|
1813
|
-
&static_cast<const typename found::type&>(p));
|
1814
|
-
}
|
1815
|
-
|
1816
|
-
//private:
|
1817
|
-
template <typename Ex>
|
1818
|
-
static const prop_fns<any_executor>* prop_fns_table()
|
1819
|
-
{
|
1820
|
-
static const prop_fns<any_executor> fns[] =
|
1821
|
-
{
|
1822
|
-
{
|
1823
|
-
&detail::any_executor_base::query_fn<
|
1824
|
-
Ex, SupportableProperties>,
|
1825
|
-
&detail::any_executor_base::require_fn<
|
1826
|
-
any_executor, Ex, SupportableProperties>,
|
1827
|
-
&detail::any_executor_base::prefer_fn<
|
1828
|
-
any_executor, Ex, SupportableProperties>
|
1829
|
-
}...
|
1830
|
-
};
|
1831
|
-
return fns;
|
1832
|
-
}
|
1833
|
-
|
1834
|
-
const prop_fns<any_executor>* prop_fns_;
|
1835
|
-
};
|
1836
|
-
|
1837
|
-
template <typename... SupportableProperties>
|
1838
|
-
inline void swap(any_executor<SupportableProperties...>& a,
|
1839
|
-
any_executor<SupportableProperties...>& b) noexcept
|
1840
|
-
{
|
1841
|
-
return a.swap(b);
|
1842
|
-
}
|
1843
|
-
|
1844
|
-
} // namespace execution
|
1845
|
-
namespace traits {
|
1846
|
-
|
1847
|
-
#if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
|
1848
|
-
|
1849
|
-
template <typename... SupportableProperties>
|
1850
|
-
struct equality_comparable<execution::any_executor<SupportableProperties...>>
|
1851
|
-
{
|
1852
|
-
static constexpr bool is_valid = true;
|
1853
|
-
static constexpr bool is_noexcept = true;
|
1854
|
-
};
|
1855
|
-
|
1856
|
-
#endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
|
1857
|
-
|
1858
|
-
#if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
|
1859
|
-
|
1860
|
-
template <typename F, typename... SupportableProperties>
|
1861
|
-
struct execute_member<execution::any_executor<SupportableProperties...>, F>
|
1862
|
-
{
|
1863
|
-
static constexpr bool is_valid = true;
|
1864
|
-
static constexpr bool is_noexcept = false;
|
1865
|
-
typedef void result_type;
|
1866
|
-
};
|
1867
|
-
|
1868
|
-
#endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
|
1869
|
-
|
1870
|
-
#if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
|
1871
|
-
|
1872
|
-
template <typename Prop, typename... SupportableProperties>
|
1873
|
-
struct query_member<
|
1874
|
-
execution::any_executor<SupportableProperties...>, Prop,
|
1875
|
-
enable_if_t<
|
1876
|
-
execution::detail::supportable_properties<
|
1877
|
-
0, void(SupportableProperties...)>::template
|
1878
|
-
find_convertible_property<Prop>::value
|
1879
|
-
>>
|
1880
|
-
{
|
1881
|
-
static constexpr bool is_valid = true;
|
1882
|
-
static constexpr bool is_noexcept = false;
|
1883
|
-
typedef typename execution::detail::supportable_properties<
|
1884
|
-
0, void(SupportableProperties...)>::template
|
1885
|
-
find_convertible_property<Prop>::query_result_type result_type;
|
1886
|
-
};
|
1887
|
-
|
1888
|
-
#endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
|
1889
|
-
|
1890
|
-
#if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
|
1891
|
-
|
1892
|
-
template <typename Prop, typename... SupportableProperties>
|
1893
|
-
struct require_member<
|
1894
|
-
execution::any_executor<SupportableProperties...>, Prop,
|
1895
|
-
enable_if_t<
|
1896
|
-
execution::detail::supportable_properties<
|
1897
|
-
0, void(SupportableProperties...)>::template
|
1898
|
-
find_convertible_requirable_property<Prop>::value
|
1899
|
-
>>
|
1900
|
-
{
|
1901
|
-
static constexpr bool is_valid = true;
|
1902
|
-
static constexpr bool is_noexcept = false;
|
1903
|
-
typedef execution::any_executor<SupportableProperties...> result_type;
|
1904
|
-
};
|
1905
|
-
|
1906
|
-
#endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
|
1907
|
-
|
1908
|
-
#if !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
|
1909
|
-
|
1910
|
-
template <typename Prop, typename... SupportableProperties>
|
1911
|
-
struct prefer_member<
|
1912
|
-
execution::any_executor<SupportableProperties...>, Prop,
|
1913
|
-
enable_if_t<
|
1914
|
-
execution::detail::supportable_properties<
|
1915
|
-
0, void(SupportableProperties...)>::template
|
1916
|
-
find_convertible_preferable_property<Prop>::value
|
1917
|
-
>>
|
1918
|
-
{
|
1919
|
-
static constexpr bool is_valid = true;
|
1920
|
-
static constexpr bool is_noexcept = false;
|
1921
|
-
typedef execution::any_executor<SupportableProperties...> result_type;
|
1922
|
-
};
|
1923
|
-
|
1924
|
-
#endif // !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
|
1925
|
-
|
1926
|
-
} // namespace traits
|
1927
|
-
|
1928
|
-
#endif // defined(GENERATING_DOCUMENTATION)
|
1929
|
-
|
1930
|
-
} // namespace asio
|
1931
|
-
} // namespace boost
|
1932
|
-
|
1933
|
-
#include <boost/asio/detail/pop_options.hpp>
|
1934
|
-
|
1935
|
-
#endif // BOOST_ASIO_EXECUTION_ANY_EXECUTOR_HPP
|