From 3a6a0640db2fd4663419e3ab5d4868145260ff98 Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Fri, 15 Dec 2023 17:04:58 +0000 Subject: [PATCH 1/3] update to latest link library --- tidal-link/link/.appveyor.yml | 25 +- tidal-link/link/Ableton Link Guidelines.pdf | Bin 0 -> 291991 bytes tidal-link/link/AbletonLinkConfig.cmake | 5 + tidal-link/link/CMakeLists.txt | 6 +- tidal-link/link/README.md | 2 +- tidal-link/link/ci/build.py | 0 tidal-link/link/ci/check-formatting.py | 0 tidal-link/link/ci/configure.py | 0 tidal-link/link/ci/run-tests.py | 0 tidal-link/link/ci/run_valgrind_tests.sh | 0 .../cmake_include/ConfigureCompileFlags.cmake | 4 +- tidal-link/link/examples/CMakeLists.txt | 8 +- tidal-link/link/examples/esp32/.gitignore | 1 + .../examples/esp32/main/idf_component.yml | 17 + tidal-link/link/examples/esp32/main/main.cpp | 44 +- .../link/examples/esp32/sdkconfig.defaults | 2 + .../link/extensions/abl_link/abl_link.cmake | 4 - tidal-link/link/include/CMakeLists.txt | 7 +- tidal-link/link/include/ableton/Link.ipp | 32 +- .../asio/Util.hpp => discovery/AsioTypes.hpp} | 27 +- .../ableton/discovery/InterfaceScanner.hpp | 6 +- .../{IpV4Interface.hpp => IpInterface.hpp} | 35 +- .../NetworkByteStreamSerializable.hpp | 2 +- .../include/ableton/discovery/Payload.hpp | 5 + .../include/ableton/discovery/PeerGateway.hpp | 8 +- .../ableton/discovery/PeerGateways.hpp | 27 +- .../include/ableton/discovery/Service.hpp | 2 +- .../ableton/discovery/UdpMessenger.hpp | 54 +- .../ableton/discovery/test/Interface.hpp | 20 +- .../include/ableton/discovery/test/Socket.hpp | 20 +- .../link/include/ableton/link/Controller.hpp | 15 +- .../link/include/ableton/link/Gateway.hpp | 2 +- .../link/include/ableton/link/Measurement.hpp | 22 +- .../ableton/link/MeasurementEndpointV4.hpp | 12 +- .../ableton/link/MeasurementEndpointV6.hpp | 75 + .../ableton/link/MeasurementService.hpp | 6 +- .../link/include/ableton/link/PeerState.hpp | 24 +- .../link/include/ableton/link/Peers.hpp | 14 +- .../include/ableton/link/PingResponder.hpp | 12 +- .../include/ableton/link/SessionState.hpp | 1 + .../link/include/ableton/platforms/Config.hpp | 20 +- .../ableton/platforms/asio/AsioTimer.hpp | 15 +- .../ableton/platforms/asio/AsioWrapper.hpp | 18 +- .../ableton/platforms/asio/Context.hpp | 100 +- .../asio/LockFreeCallbackDispatcher.hpp | 4 +- .../include/ableton/platforms/asio/Socket.hpp | 40 +- .../ableton/platforms/darwin/Clock.hpp | 3 + .../ableton/platforms/esp32/Context.hpp | 101 +- .../ableton/platforms/esp32/ScanIpIfAddrs.hpp | 6 +- .../include/ableton/platforms/linux/Clock.hpp | 8 +- .../ableton/platforms/linux/ThreadFactory.hpp | 4 +- .../ableton/platforms/posix/ScanIpIfAddrs.hpp | 48 +- .../platforms/windows/ScanIpIfAddrs.hpp | 45 +- .../ableton/test/serial_io/Context.hpp | 8 +- .../ableton/test/serial_io/Fixture.hpp | 6 +- .../modules/asio-standalone/.appveyor.yml | 2 - .../link/modules/asio-standalone/.cirrus.yml | 4 +- .../asio-standalone/.github/workflows/ci.yml | 380 + .../link/modules/asio-standalone/.travis.yml | 372 - .../modules/asio-standalone/asio/.gitignore | 1 + .../link/modules/asio-standalone/asio/COPYING | 2 +- .../link/modules/asio-standalone/asio/INSTALL | 2 +- .../modules/asio-standalone/asio/Makefile.am | 2 + .../link/modules/asio-standalone/asio/README | 4 +- .../asio-standalone/asio/asio.manifest | 1634 +- .../modules/asio-standalone/asio/asio.pc.in | 11 + .../modules/asio-standalone/asio/autogen.sh | 0 .../asio-standalone/asio/boost_asio.manifest | 2022 +- .../modules/asio-standalone/asio/boostify.pl | 73 +- .../modules/asio-standalone/asio/configure.ac | 41 +- .../asio-standalone/asio/include/Makefile.am | 132 +- .../asio-standalone/asio/include/asio.hpp | 36 +- .../include/asio/any_completion_executor.hpp | 342 + .../include/asio/any_completion_handler.hpp | 762 + .../asio/include/asio/any_io_executor.hpp | 310 +- .../asio/include/asio/append.hpp | 78 + .../asio/include/asio/as_tuple.hpp | 139 + .../include/asio/associated_allocator.hpp | 150 +- .../asio/associated_cancellation_slot.hpp | 238 + .../asio/include/asio/associated_executor.hpp | 119 +- .../asio/associated_immediate_executor.hpp | 297 + .../asio/include/asio/associator.hpp | 35 + .../asio/include/asio/async_result.hpp | 1329 +- .../asio/include/asio/awaitable.hpp | 13 +- .../include/asio/basic_datagram_socket.hpp | 431 +- .../include/asio/basic_deadline_timer.hpp | 78 +- .../asio/include/asio/basic_file.hpp | 829 + .../asio/include/asio/basic_io_object.hpp | 2 +- .../include/asio/basic_random_access_file.hpp | 701 + .../asio/include/asio/basic_raw_socket.hpp | 435 +- .../asio/include/asio/basic_readable_pipe.hpp | 635 + .../include/asio/basic_seq_packet_socket.hpp | 186 +- .../asio/include/asio/basic_serial_port.hpp | 193 +- .../asio/include/asio/basic_signal_set.hpp | 157 +- .../asio/include/asio/basic_socket.hpp | 151 +- .../include/asio/basic_socket_acceptor.hpp | 668 +- .../include/asio/basic_socket_iostream.hpp | 2 +- .../include/asio/basic_socket_streambuf.hpp | 2 +- .../asio/include/asio/basic_stream_file.hpp | 754 + .../asio/include/asio/basic_stream_socket.hpp | 322 +- .../asio/include/asio/basic_streambuf.hpp | 2 +- .../asio/include/asio/basic_streambuf_fwd.hpp | 2 +- .../include/asio/basic_waitable_timer.hpp | 88 +- .../asio/include/asio/basic_writable_pipe.hpp | 631 + .../asio/include/asio/bind_allocator.hpp | 733 + .../include/asio/bind_cancellation_slot.hpp | 736 + .../asio/include/asio/bind_executor.hpp | 254 +- .../include/asio/bind_immediate_executor.hpp | 736 + .../asio/include/asio/buffer.hpp | 545 +- .../asio/include/asio/buffer_registration.hpp | 328 + .../include/asio/buffered_read_stream.hpp | 53 +- .../include/asio/buffered_read_stream_fwd.hpp | 2 +- .../asio/include/asio/buffered_stream.hpp | 49 +- .../asio/include/asio/buffered_stream_fwd.hpp | 2 +- .../include/asio/buffered_write_stream.hpp | 53 +- .../asio/buffered_write_stream_fwd.hpp | 2 +- .../asio/include/asio/buffers_iterator.hpp | 2 +- .../asio/include/asio/cancellation_signal.hpp | 305 + .../asio/include/asio/cancellation_state.hpp | 235 + .../asio/include/asio/cancellation_type.hpp | 174 + .../asio/include/asio/co_spawn.hpp | 94 +- .../include/asio/completion_condition.hpp | 2 +- .../asio/include/asio/compose.hpp | 421 +- .../asio/include/asio/connect.hpp | 281 +- .../asio/include/asio/connect_pipe.hpp | 83 + .../asio/include/asio/consign.hpp | 88 + .../asio/include/asio/coroutine.hpp | 2 +- .../asio/include/asio/deadline_timer.hpp | 2 +- .../asio/include/asio/defer.hpp | 186 +- .../asio/include/asio/deferred.hpp | 802 + .../asio/include/asio/detached.hpp | 15 +- .../asio/include/asio/detail/array.hpp | 2 +- .../asio/include/asio/detail/array_fwd.hpp | 2 +- .../asio/include/asio/detail/assert.hpp | 2 +- .../asio/include/asio/detail/atomic_count.hpp | 5 +- .../detail/base_from_cancellation_state.hpp | 163 + .../asio/detail/base_from_completion_cond.hpp | 2 +- .../asio/include/asio/detail/bind_handler.hpp | 341 +- .../asio/detail/blocking_executor_op.hpp | 3 +- .../asio/detail/buffer_resize_guard.hpp | 2 +- .../asio/detail/buffer_sequence_adapter.hpp | 193 +- .../asio/detail/buffered_stream_storage.hpp | 2 +- .../include/asio/detail/bulk_executor_op.hpp | 3 +- .../asio/include/asio/detail/call_stack.hpp | 2 +- .../asio/include/asio/detail/chrono.hpp | 2 +- .../asio/detail/chrono_time_traits.hpp | 2 +- .../asio/detail/completion_handler.hpp | 2 +- .../include/asio/detail/composed_work.hpp | 328 + .../include/asio/detail/concurrency_hint.hpp | 2 +- .../detail/conditionally_enabled_event.hpp | 2 +- .../detail/conditionally_enabled_mutex.hpp | 2 +- .../asio/include/asio/detail/config.hpp | 645 +- .../include/asio/detail/consuming_buffers.hpp | 39 +- .../asio/include/asio/detail/cstddef.hpp | 2 +- .../asio/include/asio/detail/cstdint.hpp | 4 +- .../include/asio/detail/date_time_fwd.hpp | 2 +- .../asio/detail/deadline_timer_service.hpp | 42 +- .../include/asio/detail/dependent_type.hpp | 2 +- .../include/asio/detail/descriptor_ops.hpp | 44 +- .../asio/detail/descriptor_read_op.hpp | 42 +- .../asio/detail/descriptor_write_op.hpp | 41 +- .../include/asio/detail/dev_poll_reactor.hpp | 44 +- .../include/asio/detail/epoll_reactor.hpp | 43 +- .../asio/include/asio/detail/event.hpp | 2 +- .../detail/eventfd_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/exception.hpp | 40 + .../include/asio/detail/executor_function.hpp | 5 +- .../asio/include/asio/detail/executor_op.hpp | 3 +- .../include/asio/detail/fd_set_adapter.hpp | 2 +- .../asio/include/asio/detail/fenced_block.hpp | 2 +- .../asio/include/asio/detail/functional.hpp | 8 +- .../asio/include/asio/detail/future.hpp | 2 +- .../asio/detail/gcc_arm_fenced_block.hpp | 2 +- .../asio/detail/gcc_hppa_fenced_block.hpp | 2 +- .../asio/detail/gcc_sync_fenced_block.hpp | 2 +- .../asio/detail/gcc_x86_fenced_block.hpp | 4 +- .../asio/include/asio/detail/global.hpp | 2 +- .../asio/detail/handler_alloc_helpers.hpp | 28 +- .../asio/detail/handler_cont_helpers.hpp | 2 +- .../asio/detail/handler_invoke_helpers.hpp | 2 +- .../include/asio/detail/handler_tracking.hpp | 2 +- .../asio/detail/handler_type_requirements.hpp | 41 +- .../asio/include/asio/detail/handler_work.hpp | 183 +- .../asio/include/asio/detail/hash_map.hpp | 2 +- .../detail/impl/buffer_sequence_adapter.ipp | 2 +- .../asio/detail/impl/descriptor_ops.ipp | 372 +- .../asio/detail/impl/dev_poll_reactor.hpp | 22 +- .../asio/detail/impl/dev_poll_reactor.ipp | 31 +- .../asio/detail/impl/epoll_reactor.hpp | 22 +- .../asio/detail/impl/epoll_reactor.ipp | 55 +- .../impl/eventfd_select_interrupter.ipp | 18 +- .../asio/detail/impl/handler_tracking.ipp | 6 +- .../impl/io_uring_descriptor_service.ipp | 205 + .../detail/impl/io_uring_file_service.ipp | 140 + .../asio/detail/impl/io_uring_service.hpp | 112 + .../asio/detail/impl/io_uring_service.ipp | 909 + .../impl/io_uring_socket_service_base.ipp | 249 + .../asio/detail/impl/kqueue_reactor.hpp | 22 +- .../asio/detail/impl/kqueue_reactor.ipp | 50 +- .../include/asio/detail/impl/null_event.ipp | 2 +- .../detail/impl/pipe_select_interrupter.ipp | 2 +- .../include/asio/detail/impl/posix_event.ipp | 12 +- .../include/asio/detail/impl/posix_mutex.ipp | 2 +- ...vice.ipp => posix_serial_port_service.ipp} | 57 +- .../include/asio/detail/impl/posix_thread.ipp | 2 +- .../asio/detail/impl/posix_tss_ptr.ipp | 2 +- .../impl/reactive_descriptor_service.ipp | 25 +- .../impl/reactive_socket_service_base.ipp | 48 +- .../detail/impl/resolver_service_base.ipp | 2 +- .../include/asio/detail/impl/scheduler.ipp | 29 +- .../asio/detail/impl/select_reactor.hpp | 26 +- .../asio/detail/impl/select_reactor.ipp | 72 +- .../asio/detail/impl/service_registry.hpp | 2 +- .../asio/detail/impl/service_registry.ipp | 2 +- .../asio/detail/impl/signal_set_service.ipp | 168 +- .../include/asio/detail/impl/socket_ops.ipp | 279 +- .../detail/impl/socket_select_interrupter.ipp | 8 +- .../detail/impl/strand_executor_service.hpp | 66 +- .../detail/impl/strand_executor_service.ipp | 26 +- .../asio/detail/impl/strand_service.hpp | 36 +- .../asio/detail/impl/strand_service.ipp | 34 +- .../asio/detail/impl/thread_context.ipp | 35 + .../include/asio/detail/impl/throw_error.ipp | 30 +- .../asio/detail/impl/timer_queue_ptime.ipp | 8 +- .../asio/detail/impl/timer_queue_set.ipp | 2 +- .../include/asio/detail/impl/win_event.ipp | 2 +- .../detail/impl/win_iocp_file_service.ipp | 265 + .../detail/impl/win_iocp_handle_service.ipp | 96 +- .../asio/detail/impl/win_iocp_io_context.hpp | 19 +- .../asio/detail/impl/win_iocp_io_context.ipp | 16 +- .../impl/win_iocp_serial_port_service.ipp | 10 +- .../impl/win_iocp_socket_service_base.ipp | 72 +- .../include/asio/detail/impl/win_mutex.ipp | 2 +- .../detail/impl/win_object_handle_service.ipp | 6 +- .../asio/detail/impl/win_static_mutex.ipp | 2 +- .../include/asio/detail/impl/win_thread.ipp | 2 +- .../include/asio/detail/impl/win_tss_ptr.ipp | 2 +- .../impl/winrt_ssocket_service_base.ipp | 8 +- .../detail/impl/winrt_timer_scheduler.hpp | 2 +- .../detail/impl/winrt_timer_scheduler.ipp | 2 +- .../include/asio/detail/impl/winsock_init.ipp | 2 +- .../defer.hpp => detail/initiate_defer.hpp} | 100 +- .../initiate_dispatch.hpp} | 100 +- .../post.hpp => detail/initiate_post.hpp} | 100 +- .../asio/include/asio/detail/io_control.hpp | 2 +- .../include/asio/detail/io_object_impl.hpp | 22 +- .../detail/io_uring_descriptor_read_at_op.hpp | 195 + .../detail/io_uring_descriptor_read_op.hpp | 190 + .../detail/io_uring_descriptor_service.hpp | 687 + .../io_uring_descriptor_write_at_op.hpp | 189 + .../detail/io_uring_descriptor_write_op.hpp | 185 + .../asio/detail/io_uring_file_service.hpp | 261 + .../asio/detail/io_uring_null_buffers_op.hpp | 115 + .../asio/detail/io_uring_operation.hpp | 84 + .../include/asio/detail/io_uring_service.hpp | 319 + .../asio/detail/io_uring_socket_accept_op.hpp | 285 + .../detail/io_uring_socket_connect_op.hpp | 141 + .../asio/detail/io_uring_socket_recv_op.hpp | 205 + .../detail/io_uring_socket_recvfrom_op.hpp | 206 + .../detail/io_uring_socket_recvmsg_op.hpp | 192 + .../asio/detail/io_uring_socket_send_op.hpp | 191 + .../asio/detail/io_uring_socket_sendto_op.hpp | 194 + .../asio/detail/io_uring_socket_service.hpp | 631 + .../detail/io_uring_socket_service_base.hpp | 663 + .../include/asio/detail/io_uring_wait_op.hpp | 113 + .../asio/detail/is_buffer_sequence.hpp | 28 +- .../asio/include/asio/detail/is_executor.hpp | 2 +- .../include/asio/detail/keyword_tss_ptr.hpp | 2 +- .../include/asio/detail/kqueue_reactor.hpp | 45 +- .../asio/detail/local_free_on_block_exit.hpp | 2 +- .../asio/detail/macos_fenced_block.hpp | 2 +- .../asio/include/asio/detail/memory.hpp | 96 +- .../asio/include/asio/detail/mutex.hpp | 2 +- .../include/asio/detail/non_const_lvalue.hpp | 2 +- .../asio/include/asio/detail/noncopyable.hpp | 2 +- .../asio/include/asio/detail/null_event.hpp | 2 +- .../include/asio/detail/null_fenced_block.hpp | 2 +- .../asio/include/asio/detail/null_global.hpp | 2 +- .../asio/include/asio/detail/null_mutex.hpp | 6 +- .../asio/include/asio/detail/null_reactor.hpp | 23 +- .../asio/detail/null_signal_blocker.hpp | 2 +- .../asio/detail/null_socket_service.hpp | 2 +- .../include/asio/detail/null_static_mutex.hpp | 2 +- .../asio/include/asio/detail/null_thread.hpp | 2 +- .../asio/include/asio/detail/null_tss_ptr.hpp | 2 +- .../asio/include/asio/detail/object_pool.hpp | 2 +- .../asio/detail/old_win_sdk_compat.hpp | 2 +- .../asio/include/asio/detail/op_queue.hpp | 2 +- .../asio/include/asio/detail/operation.hpp | 2 +- .../asio/detail/pipe_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/pop_options.hpp | 18 +- .../asio/include/asio/detail/posix_event.hpp | 2 +- .../asio/detail/posix_fd_set_adapter.hpp | 2 +- .../asio/include/asio/detail/posix_global.hpp | 2 +- .../asio/include/asio/detail/posix_mutex.hpp | 2 +- ...vice.hpp => posix_serial_port_service.hpp} | 48 +- .../asio/detail/posix_signal_blocker.hpp | 2 +- .../asio/detail/posix_static_mutex.hpp | 2 +- .../asio/include/asio/detail/posix_thread.hpp | 2 +- .../include/asio/detail/posix_tss_ptr.hpp | 2 +- .../asio/include/asio/detail/push_options.hpp | 47 +- .../detail/reactive_descriptor_service.hpp | 202 +- .../asio/detail/reactive_null_buffers_op.hpp | 36 +- .../asio/detail/reactive_socket_accept_op.hpp | 88 +- .../detail/reactive_socket_connect_op.hpp | 42 +- .../asio/detail/reactive_socket_recv_op.hpp | 41 +- .../detail/reactive_socket_recvfrom_op.hpp | 42 +- .../detail/reactive_socket_recvmsg_op.hpp | 42 +- .../asio/detail/reactive_socket_send_op.hpp | 42 +- .../asio/detail/reactive_socket_sendto_op.hpp | 41 +- .../asio/detail/reactive_socket_service.hpp | 147 +- .../detail/reactive_socket_service_base.hpp | 269 +- .../include/asio/detail/reactive_wait_op.hpp | 36 +- .../asio/include/asio/detail/reactor.hpp | 32 +- .../asio/include/asio/detail/reactor_fwd.hpp | 40 - .../asio/include/asio/detail/reactor_op.hpp | 6 +- .../include/asio/detail/reactor_op_queue.hpp | 46 +- .../asio/detail/recycling_allocator.hpp | 9 +- .../asio/include/asio/detail/regex_fwd.hpp | 13 +- .../asio/detail/resolve_endpoint_op.hpp | 7 +- .../asio/include/asio/detail/resolve_op.hpp | 2 +- .../include/asio/detail/resolve_query_op.hpp | 7 +- .../include/asio/detail/resolver_service.hpp | 16 +- .../asio/detail/resolver_service_base.hpp | 17 +- .../asio/include/asio/detail/scheduler.hpp | 25 +- .../asio/detail/scheduler_operation.hpp | 2 +- .../include/asio/detail/scheduler_task.hpp | 49 + .../asio/detail/scheduler_thread_info.hpp | 2 +- .../asio/include/asio/detail/scoped_lock.hpp | 2 +- .../asio/include/asio/detail/scoped_ptr.hpp | 2 +- .../asio/detail/select_interrupter.hpp | 2 +- .../include/asio/detail/select_reactor.hpp | 65 +- .../include/asio/detail/service_registry.hpp | 2 +- .../include/asio/detail/signal_blocker.hpp | 2 +- .../include/asio/detail/signal_handler.hpp | 2 +- .../asio/include/asio/detail/signal_init.hpp | 2 +- .../asio/include/asio/detail/signal_op.hpp | 6 +- .../asio/detail/signal_set_service.hpp | 71 +- .../include/asio/detail/socket_holder.hpp | 2 +- .../asio/include/asio/detail/socket_ops.hpp | 82 +- .../include/asio/detail/socket_option.hpp | 2 +- .../asio/detail/socket_select_interrupter.hpp | 2 +- .../asio/include/asio/detail/socket_types.hpp | 13 +- .../asio/detail/solaris_fenced_block.hpp | 2 +- .../include/asio/detail/source_location.hpp | 2 +- .../asio/include/asio/detail/static_mutex.hpp | 2 +- .../asio/include/asio/detail/std_event.hpp | 4 +- .../include/asio/detail/std_fenced_block.hpp | 2 +- .../asio/include/asio/detail/std_global.hpp | 2 +- .../asio/include/asio/detail/std_mutex.hpp | 2 +- .../include/asio/detail/std_static_mutex.hpp | 2 +- .../asio/include/asio/detail/std_thread.hpp | 2 +- .../asio/detail/strand_executor_service.hpp | 9 +- .../include/asio/detail/strand_service.hpp | 9 +- .../asio/include/asio/detail/string_view.hpp | 2 +- .../asio/include/asio/detail/thread.hpp | 10 +- .../include/asio/detail/thread_context.hpp | 11 +- .../asio/include/asio/detail/thread_group.hpp | 6 +- .../include/asio/detail/thread_info_base.hpp | 133 +- .../asio/include/asio/detail/throw_error.hpp | 27 +- .../include/asio/detail/throw_exception.hpp | 10 +- .../asio/include/asio/detail/timer_queue.hpp | 33 +- .../include/asio/detail/timer_queue_base.hpp | 2 +- .../include/asio/detail/timer_queue_ptime.hpp | 6 +- .../include/asio/detail/timer_queue_set.hpp | 2 +- .../include/asio/detail/timer_scheduler.hpp | 4 +- .../asio/detail/timer_scheduler_fwd.hpp | 4 +- .../asio/include/asio/detail/tss_ptr.hpp | 2 +- .../asio/include/asio/detail/type_traits.hpp | 18 +- .../asio/include/asio/detail/utility.hpp | 83 + .../asio/detail/variadic_templates.hpp | 2 +- .../asio/include/asio/detail/wait_handler.hpp | 2 +- .../asio/include/asio/detail/wait_op.hpp | 8 +- .../asio/include/asio/detail/win_event.hpp | 2 +- .../asio/detail/win_fd_set_adapter.hpp | 2 +- .../include/asio/detail/win_fenced_block.hpp | 2 +- .../asio/include/asio/detail/win_global.hpp | 2 +- .../asio/detail/win_iocp_file_service.hpp | 287 + .../asio/detail/win_iocp_handle_read_op.hpp | 5 +- .../asio/detail/win_iocp_handle_service.hpp | 114 +- .../asio/detail/win_iocp_handle_write_op.hpp | 9 +- .../asio/detail/win_iocp_io_context.hpp | 15 +- .../asio/detail/win_iocp_null_buffers_op.hpp | 5 +- .../asio/detail/win_iocp_operation.hpp | 22 +- .../asio/detail/win_iocp_overlapped_op.hpp | 9 +- .../asio/detail/win_iocp_overlapped_ptr.hpp | 2 +- .../detail/win_iocp_serial_port_service.hpp | 3 +- .../asio/detail/win_iocp_socket_accept_op.hpp | 38 +- .../detail/win_iocp_socket_connect_op.hpp | 6 +- .../asio/detail/win_iocp_socket_recv_op.hpp | 5 +- .../detail/win_iocp_socket_recvfrom_op.hpp | 5 +- .../detail/win_iocp_socket_recvmsg_op.hpp | 5 +- .../asio/detail/win_iocp_socket_send_op.hpp | 5 +- .../asio/detail/win_iocp_socket_service.hpp | 146 +- .../detail/win_iocp_socket_service_base.hpp | 276 +- .../asio/detail/win_iocp_thread_info.hpp | 2 +- .../include/asio/detail/win_iocp_wait_op.hpp | 5 +- .../asio/include/asio/detail/win_mutex.hpp | 2 +- .../asio/detail/win_object_handle_service.hpp | 2 +- .../include/asio/detail/win_static_mutex.hpp | 2 +- .../asio/include/asio/detail/win_thread.hpp | 2 +- .../asio/include/asio/detail/win_tss_ptr.hpp | 2 +- .../include/asio/detail/winapp_thread.hpp | 2 +- .../asio/include/asio/detail/wince_thread.hpp | 2 +- .../asio/detail/winrt_async_manager.hpp | 2 +- .../include/asio/detail/winrt_async_op.hpp | 2 +- .../include/asio/detail/winrt_resolve_op.hpp | 3 +- .../asio/detail/winrt_resolver_service.hpp | 2 +- .../asio/detail/winrt_socket_connect_op.hpp | 3 +- .../asio/detail/winrt_socket_recv_op.hpp | 3 +- .../asio/detail/winrt_socket_send_op.hpp | 3 +- .../asio/detail/winrt_ssocket_service.hpp | 2 +- .../detail/winrt_ssocket_service_base.hpp | 2 +- .../asio/detail/winrt_timer_scheduler.hpp | 2 +- .../asio/include/asio/detail/winrt_utils.hpp | 2 +- .../asio/include/asio/detail/winsock_init.hpp | 2 +- .../include/asio/detail/work_dispatcher.hpp | 21 +- .../include/asio/detail/wrapped_handler.hpp | 2 +- .../asio/include/asio/dispatch.hpp | 169 +- .../asio/include/asio/error.hpp | 37 +- .../asio/include/asio/error_code.hpp | 2 +- .../asio/include/asio/execution.hpp | 2 +- .../asio/include/asio/execution/allocator.hpp | 145 +- .../include/asio/execution/any_executor.hpp | 897 +- .../include/asio/execution/bad_executor.hpp | 2 +- .../asio/include/asio/execution/blocking.hpp | 415 +- .../asio/execution/blocking_adaptation.hpp | 333 +- .../include/asio/execution/bulk_execute.hpp | 102 +- .../include/asio/execution/bulk_guarantee.hpp | 414 +- .../asio/include/asio/execution/connect.hpp | 80 +- .../asio/include/asio/execution/context.hpp | 87 +- .../include/asio/execution/context_as.hpp | 49 +- .../asio/execution/detail/as_invocable.hpp | 2 +- .../asio/execution/detail/as_operation.hpp | 6 +- .../asio/execution/detail/as_receiver.hpp | 2 +- .../asio/execution/detail/bulk_sender.hpp | 2 +- .../asio/execution/detail/submit_receiver.hpp | 2 +- .../asio/execution/detail/void_receiver.hpp | 2 +- .../asio/include/asio/execution/execute.hpp | 126 +- .../asio/include/asio/execution/executor.hpp | 76 +- .../asio/execution/impl/bad_executor.ipp | 2 +- .../impl/receiver_invocation_error.ipp | 2 +- .../asio/execution/invocable_archetype.hpp | 2 +- .../asio/include/asio/execution/mapping.hpp | 407 +- .../asio/include/asio/execution/occupancy.hpp | 87 +- .../asio/execution/operation_state.hpp | 7 +- .../asio/execution/outstanding_work.hpp | 319 +- .../include/asio/execution/prefer_only.hpp | 10 +- .../asio/include/asio/execution/receiver.hpp | 7 +- .../execution/receiver_invocation_error.hpp | 2 +- .../include/asio/execution/relationship.hpp | 318 +- .../asio/include/asio/execution/schedule.hpp | 36 +- .../asio/include/asio/execution/scheduler.hpp | 7 +- .../asio/include/asio/execution/sender.hpp | 7 +- .../asio/include/asio/execution/set_done.hpp | 22 +- .../asio/include/asio/execution/set_error.hpp | 22 +- .../asio/include/asio/execution/set_value.hpp | 22 +- .../asio/include/asio/execution/start.hpp | 22 +- .../asio/include/asio/execution/submit.hpp | 47 +- .../asio/include/asio/execution_context.hpp | 2 +- .../asio/include/asio/executor.hpp | 2 +- .../asio/include/asio/executor_work_guard.hpp | 180 +- .../asio/include/asio/experimental/append.hpp | 36 + .../include/asio/experimental/as_single.hpp | 136 + .../include/asio/experimental/as_tuple.hpp | 36 + .../asio/experimental/awaitable_operators.hpp | 536 + .../asio/experimental/basic_channel.hpp | 491 + .../experimental/basic_concurrent_channel.hpp | 491 + .../experimental/cancellation_condition.hpp | 155 + .../include/asio/experimental/channel.hpp | 70 + .../asio/experimental/channel_error.hpp | 84 + .../asio/experimental/channel_traits.hpp | 301 + .../include/asio/experimental/co_composed.hpp | 144 + .../include/asio/experimental/co_spawn.hpp | 187 + .../asio/experimental/concurrent_channel.hpp | 70 + .../asio/include/asio/experimental/coro.hpp | 293 + .../include/asio/experimental/coro_traits.hpp | 228 + .../include/asio/experimental/deferred.hpp | 36 + .../experimental/detail/channel_handler.hpp | 80 + .../experimental/detail/channel_message.hpp | 129 + .../experimental/detail/channel_operation.hpp | 284 + .../experimental/detail/channel_payload.hpp | 139 + .../detail/channel_receive_op.hpp | 120 + .../detail/channel_send_functions.hpp | 144 + .../experimental/detail/channel_send_op.hpp | 148 + .../experimental/detail/channel_service.hpp | 677 + .../detail/coro_completion_handler.hpp | 169 + .../detail/coro_promise_allocator.hpp | 141 + .../experimental/detail/has_signature.hpp | 54 + .../detail/impl/channel_service.hpp | 612 + .../experimental/detail/partial_promise.hpp | 197 + .../asio/experimental/impl/as_single.hpp | 239 + .../asio/experimental/impl/channel_error.ipp | 61 + .../asio/experimental/impl/co_composed.hpp | 1175 + .../include/asio/experimental/impl/coro.hpp | 1222 + .../asio/experimental/impl/parallel_group.hpp | 792 + .../asio/experimental/impl/promise.hpp | 254 + .../asio/experimental/impl/use_coro.hpp | 214 + .../asio/experimental/impl/use_promise.hpp | 66 + .../asio/experimental/parallel_group.hpp | 461 + .../include/asio/experimental/prepend.hpp | 36 + .../include/asio/experimental/promise.hpp | 224 + .../include/asio/experimental/use_coro.hpp | 195 + .../include/asio/experimental/use_promise.hpp | 111 + .../asio/include/asio/file_base.hpp | 166 + .../include/asio/generic/basic_endpoint.hpp | 2 +- .../asio/generic/datagram_protocol.hpp | 2 +- .../include/asio/generic/detail/endpoint.hpp | 2 +- .../asio/generic/detail/impl/endpoint.ipp | 2 +- .../include/asio/generic/raw_protocol.hpp | 2 +- .../asio/generic/seq_packet_protocol.hpp | 2 +- .../include/asio/generic/stream_protocol.hpp | 2 +- .../asio/include/asio/handler_alloc_hook.hpp | 2 +- .../asio/handler_continuation_hook.hpp | 2 +- .../asio/include/asio/handler_invoke_hook.hpp | 2 +- .../include/asio/high_resolution_timer.hpp | 2 +- .../asio/impl/any_completion_executor.ipp | 130 + .../include/asio/impl/any_io_executor.ipp | 141 + .../asio/include/asio/impl/append.hpp | 225 + .../asio/include/asio/impl/as_tuple.hpp | 320 + .../asio/include/asio/impl/awaitable.hpp | 811 +- .../asio/impl/buffered_read_stream.hpp | 100 +- .../asio/impl/buffered_write_stream.hpp | 100 +- .../include/asio/impl/cancellation_signal.ipp | 96 + .../asio/include/asio/impl/co_spawn.hpp | 153 +- .../asio/include/asio/impl/compose.hpp | 635 - .../asio/include/asio/impl/connect.hpp | 297 +- .../asio/include/asio/impl/connect_pipe.hpp | 73 + .../asio/include/asio/impl/connect_pipe.ipp | 149 + .../asio/include/asio/impl/consign.hpp | 202 + .../asio/include/asio/impl/deferred.hpp | 156 + .../asio/include/asio/impl/detached.hpp | 2 +- .../asio/include/asio/impl/error.ipp | 2 +- .../asio/include/asio/impl/error_code.ipp | 2 +- .../include/asio/impl/execution_context.hpp | 2 +- .../include/asio/impl/execution_context.ipp | 2 +- .../asio/include/asio/impl/executor.hpp | 3 +- .../asio/include/asio/impl/executor.ipp | 2 +- .../include/asio/impl/handler_alloc_hook.ipp | 11 +- .../asio/include/asio/impl/io_context.hpp | 104 +- .../asio/include/asio/impl/io_context.ipp | 3 +- .../include/asio/impl/multiple_exceptions.ipp | 2 +- .../asio/include/asio/impl/prepend.hpp | 225 + .../asio/include/asio/impl/read.hpp | 476 +- .../asio/include/asio/impl/read_at.hpp | 252 +- .../asio/include/asio/impl/read_until.hpp | 876 +- .../asio/include/asio/impl/redirect_error.hpp | 360 +- .../include/asio/impl/serial_port_base.hpp | 2 +- .../include/asio/impl/serial_port_base.ipp | 2 +- .../asio/include/asio/impl/spawn.hpp | 1660 +- .../asio/include/asio/impl/src.cpp | 25 - .../asio/include/asio/impl/src.hpp | 15 +- .../asio/include/asio/impl/system_context.hpp | 2 +- .../asio/include/asio/impl/system_context.ipp | 2 +- .../include/asio/impl/system_executor.hpp | 3 +- .../asio/include/asio/impl/thread_pool.hpp | 8 +- .../asio/include/asio/impl/thread_pool.ipp | 9 +- .../asio/include/asio/impl/use_awaitable.hpp | 64 +- .../asio/include/asio/impl/use_future.hpp | 31 +- .../asio/include/asio/impl/write.hpp | 421 +- .../asio/include/asio/impl/write_at.hpp | 213 +- .../asio/include/asio/io_context.hpp | 248 +- .../asio/include/asio/io_context_strand.hpp | 18 +- .../asio/include/asio/io_service.hpp | 2 +- .../asio/include/asio/io_service_strand.hpp | 2 +- .../asio/include/asio/ip/address.hpp | 24 +- .../asio/include/asio/ip/address_v4.hpp | 101 +- .../include/asio/ip/address_v4_iterator.hpp | 2 +- .../asio/include/asio/ip/address_v4_range.hpp | 2 +- .../asio/include/asio/ip/address_v6.hpp | 87 +- .../include/asio/ip/address_v6_iterator.hpp | 2 +- .../asio/include/asio/ip/address_v6_range.hpp | 2 +- .../asio/include/asio/ip/bad_address_cast.hpp | 2 +- .../asio/include/asio/ip/basic_endpoint.hpp | 37 +- .../asio/include/asio/ip/basic_resolver.hpp | 248 +- .../include/asio/ip/basic_resolver_entry.hpp | 2 +- .../asio/ip/basic_resolver_iterator.hpp | 2 +- .../include/asio/ip/basic_resolver_query.hpp | 2 +- .../asio/ip/basic_resolver_results.hpp | 2 +- .../asio/include/asio/ip/detail/endpoint.hpp | 2 +- .../include/asio/ip/detail/impl/endpoint.ipp | 2 +- .../include/asio/ip/detail/socket_option.hpp | 2 +- .../asio/include/asio/ip/host_name.hpp | 2 +- .../asio/include/asio/ip/icmp.hpp | 2 +- .../asio/include/asio/ip/impl/address.hpp | 2 +- .../asio/include/asio/ip/impl/address.ipp | 2 +- .../asio/include/asio/ip/impl/address_v4.hpp | 2 +- .../asio/include/asio/ip/impl/address_v4.ipp | 2 +- .../asio/include/asio/ip/impl/address_v6.hpp | 2 +- .../asio/include/asio/ip/impl/address_v6.ipp | 4 +- .../include/asio/ip/impl/basic_endpoint.hpp | 2 +- .../asio/include/asio/ip/impl/host_name.ipp | 2 +- .../asio/include/asio/ip/impl/network_v4.hpp | 2 +- .../asio/include/asio/ip/impl/network_v4.ipp | 6 +- .../asio/include/asio/ip/impl/network_v6.hpp | 2 +- .../asio/include/asio/ip/impl/network_v6.ipp | 6 +- .../asio/include/asio/ip/multicast.hpp | 2 +- .../asio/include/asio/ip/network_v4.hpp | 4 +- .../asio/include/asio/ip/network_v6.hpp | 2 +- .../asio/include/asio/ip/resolver_base.hpp | 2 +- .../include/asio/ip/resolver_query_base.hpp | 2 +- .../asio/include/asio/ip/tcp.hpp | 2 +- .../asio/include/asio/ip/udp.hpp | 2 +- .../asio/include/asio/ip/unicast.hpp | 2 +- .../asio/include/asio/ip/v6_only.hpp | 4 +- .../include/asio/is_applicable_property.hpp | 2 +- .../include/asio/is_contiguous_iterator.hpp | 45 + .../asio/include/asio/is_executor.hpp | 2 +- .../asio/include/asio/is_read_buffered.hpp | 2 +- .../asio/include/asio/is_write_buffered.hpp | 2 +- .../include/asio/local/basic_endpoint.hpp | 2 +- .../asio/include/asio/local/connect_pair.hpp | 2 +- .../include/asio/local/datagram_protocol.hpp | 2 +- .../include/asio/local/detail/endpoint.hpp | 2 +- .../asio/local/detail/impl/endpoint.ipp | 11 +- .../asio/local/seq_packet_protocol.hpp | 84 + .../include/asio/local/stream_protocol.hpp | 2 +- .../asio/include/asio/multiple_exceptions.hpp | 2 +- .../asio/include/asio/packaged_task.hpp | 2 +- .../asio/include/asio/placeholders.hpp | 2 +- .../include/asio/posix/basic_descriptor.hpp | 138 +- .../asio/posix/basic_stream_descriptor.hpp | 173 +- .../asio/include/asio/posix/descriptor.hpp | 2 +- .../include/asio/posix/descriptor_base.hpp | 2 +- .../include/asio/posix/stream_descriptor.hpp | 2 +- .../asio/include/asio/post.hpp | 186 +- .../asio/include/asio/prefer.hpp | 392 +- .../asio/include/asio/prepend.hpp | 78 + .../asio/include/asio/query.hpp | 130 +- .../asio/include/asio/random_access_file.hpp | 35 + .../asio/include/asio/read.hpp | 570 +- .../asio/include/asio/read_at.hpp | 207 +- .../asio/include/asio/read_until.hpp | 755 +- .../asio/include/asio/readable_pipe.hpp | 35 + .../asio/include/asio/recycling_allocator.hpp | 138 + .../asio/include/asio/redirect_error.hpp | 6 +- .../asio/include/asio/registered_buffer.hpp | 356 + .../asio/include/asio/require.hpp | 225 +- .../asio/include/asio/require_concept.hpp | 158 +- .../asio/include/asio/serial_port.hpp | 2 +- .../asio/include/asio/serial_port_base.hpp | 2 +- .../asio/include/asio/signal_set.hpp | 2 +- .../asio/include/asio/signal_set_base.hpp | 182 + .../asio/include/asio/socket_base.hpp | 2 +- .../asio/include/asio/spawn.hpp | 748 +- .../asio-standalone/asio/include/asio/ssl.hpp | 2 +- .../asio/include/asio/ssl/context.hpp | 5 +- .../asio/include/asio/ssl/context_base.hpp | 48 +- .../asio/ssl/detail/buffered_handshake_op.hpp | 4 +- .../asio/include/asio/ssl/detail/engine.hpp | 10 +- .../include/asio/ssl/detail/handshake_op.hpp | 4 +- .../include/asio/ssl/detail/impl/engine.ipp | 34 +- .../asio/ssl/detail/impl/openssl_init.ipp | 10 +- .../asio/include/asio/ssl/detail/io.hpp | 68 +- .../include/asio/ssl/detail/openssl_init.hpp | 2 +- .../include/asio/ssl/detail/openssl_types.hpp | 2 +- .../asio/ssl/detail/password_callback.hpp | 2 +- .../asio/include/asio/ssl/detail/read_op.hpp | 4 +- .../include/asio/ssl/detail/shutdown_op.hpp | 6 +- .../include/asio/ssl/detail/stream_core.hpp | 54 +- .../asio/ssl/detail/verify_callback.hpp | 2 +- .../asio/include/asio/ssl/detail/write_op.hpp | 4 +- .../asio/include/asio/ssl/error.hpp | 2 +- .../asio/ssl/host_name_verification.hpp | 2 +- .../asio/include/asio/ssl/impl/context.hpp | 2 +- .../asio/include/asio/ssl/impl/context.ipp | 225 +- .../asio/include/asio/ssl/impl/error.ipp | 28 +- .../asio/ssl/impl/host_name_verification.ipp | 2 +- .../asio/ssl/impl/rfc2818_verification.ipp | 2 +- .../asio/include/asio/ssl/impl/src.hpp | 2 +- .../include/asio/ssl/rfc2818_verification.hpp | 2 +- .../asio/include/asio/ssl/stream.hpp | 281 +- .../asio/include/asio/ssl/stream_base.hpp | 2 +- .../asio/include/asio/ssl/verify_context.hpp | 2 +- .../asio/include/asio/ssl/verify_mode.hpp | 2 +- .../asio/include/asio/static_thread_pool.hpp | 2 +- .../asio/include/asio/steady_timer.hpp | 2 +- .../asio/include/asio/strand.hpp | 107 +- .../asio/include/asio/stream_file.hpp | 35 + .../asio/include/asio/streambuf.hpp | 2 +- .../asio/include/asio/system_context.hpp | 2 +- .../asio/include/asio/system_error.hpp | 2 +- .../asio/include/asio/system_executor.hpp | 27 +- .../asio/include/asio/system_timer.hpp | 2 +- .../asio/include/asio/this_coro.hpp | 237 +- .../asio/include/asio/thread.hpp | 2 +- .../asio/include/asio/thread_pool.hpp | 62 +- .../asio/include/asio/time_traits.hpp | 2 +- .../include/asio/traits/bulk_execute_free.hpp | 2 +- .../asio/traits/bulk_execute_member.hpp | 2 +- .../asio/include/asio/traits/connect_free.hpp | 2 +- .../include/asio/traits/connect_member.hpp | 2 +- .../asio/traits/equality_comparable.hpp | 10 +- .../asio/include/asio/traits/execute_free.hpp | 2 +- .../include/asio/traits/execute_member.hpp | 2 +- .../asio/include/asio/traits/prefer_free.hpp | 2 +- .../include/asio/traits/prefer_member.hpp | 2 +- .../asio/include/asio/traits/query_free.hpp | 2 +- .../asio/include/asio/traits/query_member.hpp | 2 +- .../traits/query_static_constexpr_member.hpp | 2 +- .../asio/traits/require_concept_free.hpp | 2 +- .../asio/traits/require_concept_member.hpp | 2 +- .../asio/include/asio/traits/require_free.hpp | 2 +- .../include/asio/traits/require_member.hpp | 2 +- .../include/asio/traits/schedule_free.hpp | 2 +- .../include/asio/traits/schedule_member.hpp | 2 +- .../include/asio/traits/set_done_free.hpp | 2 +- .../include/asio/traits/set_done_member.hpp | 2 +- .../include/asio/traits/set_error_free.hpp | 2 +- .../include/asio/traits/set_error_member.hpp | 2 +- .../include/asio/traits/set_value_free.hpp | 2 +- .../include/asio/traits/set_value_member.hpp | 2 +- .../asio/include/asio/traits/start_free.hpp | 2 +- .../asio/include/asio/traits/start_member.hpp | 2 +- .../asio/include/asio/traits/static_query.hpp | 2 +- .../include/asio/traits/static_require.hpp | 2 +- .../asio/traits/static_require_concept.hpp | 5 +- .../asio/include/asio/traits/submit_free.hpp | 2 +- .../include/asio/traits/submit_member.hpp | 2 +- .../asio/include/asio/ts/buffer.hpp | 2 +- .../asio/include/asio/ts/executor.hpp | 2 +- .../asio/include/asio/ts/internet.hpp | 2 +- .../asio/include/asio/ts/io_context.hpp | 2 +- .../asio/include/asio/ts/net.hpp | 2 +- .../asio/include/asio/ts/netfwd.hpp | 14 +- .../asio/include/asio/ts/socket.hpp | 2 +- .../asio/include/asio/ts/timer.hpp | 2 +- .../asio/include/asio/unyield.hpp | 2 +- .../asio/include/asio/use_awaitable.hpp | 28 +- .../asio/include/asio/use_future.hpp | 17 +- .../asio/include/asio/uses_executor.hpp | 2 +- .../asio/include/asio/version.hpp | 4 +- .../asio/include/asio/wait_traits.hpp | 2 +- .../asio/windows/basic_object_handle.hpp | 104 +- .../asio/windows/basic_overlapped_handle.hpp | 121 +- .../windows/basic_random_access_handle.hpp | 161 +- .../asio/windows/basic_stream_handle.hpp | 157 +- .../include/asio/windows/object_handle.hpp | 2 +- .../asio/windows/overlapped_handle.hpp | 2 +- .../include/asio/windows/overlapped_ptr.hpp | 18 +- .../asio/windows/random_access_handle.hpp | 2 +- .../include/asio/windows/stream_handle.hpp | 2 +- .../asio/include/asio/writable_pipe.hpp | 35 + .../asio/include/asio/write.hpp | 564 +- .../asio/include/asio/write_at.hpp | 209 +- .../asio/include/asio/yield.hpp | 2 +- .../modules/asio-standalone/asio/release.pl | 4 +- .../asio-standalone/asio/src/Makefile.am | 20 +- .../asio-standalone/asio/src/Makefile.mgw | 1 + .../asio-standalone/asio/src/Makefile.msc | 34 + .../modules/asio-standalone/asio/src/asio.cpp | 2 +- .../asio-standalone/asio/src/asio_ssl.cpp | 2 +- .../asio-standalone/asio/src/doc/Jamfile.v2 | 21 +- .../asio-standalone/asio/src/doc/asio.qbk | 10 +- .../asio-standalone/asio/src/doc/asioref.xsl | 2 +- .../asio-standalone/asio/src/doc/doxy2qbk.pl | 2 +- .../asio-standalone/asio/src/doc/examples.qbk | 174 +- .../asio-standalone/asio/src/doc/history.qbk | 1678 +- .../asio-standalone/asio/src/doc/index.xml | 2 +- .../asio-standalone/asio/src/doc/makepdf.pl | 2 +- .../asio/src/doc/model_dox.txt | 14 + .../asio-standalone/asio/src/doc/net_ts.qbk | 2 +- .../asio-standalone/asio/src/doc/overview.qbk | 85 +- .../asio/src/doc/overview/allocation.qbk | 20 +- .../asio/src/doc/overview/async.qbk | 9 +- .../asio/src/doc/overview/basics.qbk | 2 +- .../asio/src/doc/overview/bsd_sockets.qbk | 2 +- .../asio/src/doc/overview/buffers.qbk | 24 +- .../asio/src/doc/overview/cancellation.qbk | 255 + .../asio/src/doc/overview/channels.qbk | 56 + .../asio/src/doc/overview/compose.qbk | 101 + .../src/doc/overview/concurrency_hint.qbk | 13 +- .../asio/src/doc/overview/coro.qbk | 260 + .../asio/src/doc/overview/coroutine.qbk | 4 +- .../asio/src/doc/overview/coroutines_ts.qbk | 94 - .../asio/src/doc/overview/cpp2011.qbk | 37 +- .../src/doc/overview/cpp20_coroutines.qbk | 280 + .../asio/src/doc/overview/deferred.qbk | 54 + .../asio/src/doc/overview/files.qbk | 49 + .../asio/src/doc/overview/futures.qbk | 41 + .../src/doc/overview/handler_tracking.qbk | 2 +- .../src/doc/overview/immediate_completion.qbk | 51 + .../asio/src/doc/overview/implementation.qbk | 45 +- .../asio/src/doc/overview/iostreams.qbk | 2 +- .../asio/src/doc/overview/line_based.qbk | 2 +- .../asio/src/doc/overview/model.qbk | 40 + .../src/doc/overview/model/allocators.qbk | 65 + .../src/doc/overview/model/associators.qbk | 78 + .../doc/overview/model/async_agent_chain.png | Bin 0 -> 110190 bytes .../doc/overview/model/async_agent_model.png | Bin 0 -> 170699 bytes .../src/doc/overview/model/async_agents.qbk | 35 + .../model/async_child_agent_chain.png | Bin 0 -> 156939 bytes .../overview/model/async_op_init_complete.png | Bin 0 -> 57136 bytes .../src/doc/overview/model/async_op_model.png | Bin 0 -> 59945 bytes .../doc/overview/model/async_op_phases.png | Bin 0 -> 105557 bytes .../overview/model/async_op_trivial_chain.png | Bin 0 -> 57998 bytes .../asio/src/doc/overview/model/async_ops.qbk | 81 + .../src/doc/overview/model/cancellation.qbk | 33 + .../src/doc/overview/model/child_agents.qbk | 56 + .../overview/model/completion_token_model.png | Bin 0 -> 145275 bytes .../model/completion_token_transform.png | Bin 0 -> 158291 bytes .../doc/overview/model/completion_tokens.qbk | 239 + .../asio/src/doc/overview/model/executors.qbk | 55 + .../doc/overview/model/higher_level_model.png | Bin 0 -> 291487 bytes .../src/doc/overview/model/higher_levels.qbk | 40 + .../doc/overview/model/library_elements.qbk | 102 + .../asio/src/doc/overview/other_protocols.qbk | 2 +- .../asio/src/doc/overview/parallel_group.qbk | 66 + .../asio/src/doc/overview/pipes.qbk | 38 + .../asio/src/doc/overview/posix.qbk | 2 +- .../asio/src/doc/overview/promises.qbk | 96 + .../asio/src/doc/overview/protocols.qbk | 2 +- .../asio/src/doc/overview/rationale.qbk | 2 +- .../asio/src/doc/overview/reactor.qbk | 2 +- .../asio/src/doc/overview/serial_ports.qbk | 2 +- .../asio/src/doc/overview/signals.qbk | 2 +- .../asio/src/doc/overview/spawn.qbk | 17 +- .../asio/src/doc/overview/ssl.qbk | 2 +- .../asio/src/doc/overview/strands.qbk | 2 +- .../asio/src/doc/overview/streams.qbk | 2 +- .../asio/src/doc/overview/threads.qbk | 2 +- .../asio/src/doc/overview/timers.qbk | 27 +- .../asio/src/doc/overview/token_adapters.qbk | 243 + .../asio/src/doc/overview/type_erasure.qbk | 91 + .../asio/src/doc/overview/windows.qbk | 2 +- .../asio/src/doc/platform_macros.pl | 91 + .../asio/src/doc/platform_macros.qbk | 711 + .../asio-standalone/asio/src/doc/quickref.xml | 214 +- .../asio/src/doc/reference.dox | 16 +- .../asio/src/doc/reference.qbk | 112867 ++++++++++----- .../asio/src/doc/reference.xsl | 206 +- .../src/doc/requirements/AcceptHandler.qbk | 59 +- .../asio/src/doc/requirements/AcceptToken.qbk | 99 + .../doc/requirements/AcceptableProtocol.qbk | 2 +- .../AsyncRandomAccessReadDevice.qbk | 2 +- .../AsyncRandomAccessWriteDevice.qbk | 2 +- .../src/doc/requirements/AsyncReadStream.qbk | 2 +- .../src/doc/requirements/AsyncWriteStream.qbk | 2 +- .../requirements/BufferedHandshakeHandler.qbk | 42 +- .../requirements/BufferedHandshakeToken.qbk | 111 + .../doc/requirements/CancellationHandler.qbk | 49 + .../src/doc/requirements/CancellationSlot.qbk | 63 + .../doc/requirements/CompletionCondition.qbk | 2 +- .../doc/requirements/CompletionHandler.qbk | 63 - .../src/doc/requirements/ConnectCondition.qbk | 2 +- .../src/doc/requirements/ConnectHandler.qbk | 59 +- .../src/doc/requirements/ConnectToken.qbk | 99 + .../doc/requirements/ConstBufferSequence.qbk | 2 +- .../src/doc/requirements/DynamicBuffer.qbk | 2 +- .../src/doc/requirements/DynamicBuffer_v1.qbk | 2 +- .../src/doc/requirements/DynamicBuffer_v2.qbk | 2 +- .../asio/src/doc/requirements/Endpoint.qbk | 2 +- .../src/doc/requirements/EndpointSequence.qbk | 2 +- .../src/doc/requirements/ExecutionContext.qbk | 2 +- .../asio/src/doc/requirements/Executor.qbk | 6 +- .../requirements/GettableSerialPortOption.qbk | 2 +- .../doc/requirements/GettableSocketOption.qbk | 2 +- .../asio/src/doc/requirements/Handler.qbk | 61 +- .../src/doc/requirements/HandshakeHandler.qbk | 59 +- .../src/doc/requirements/HandshakeToken.qbk | 99 + .../src/doc/requirements/InternetProtocol.qbk | 2 +- .../src/doc/requirements/IoControlCommand.qbk | 2 +- .../src/doc/requirements/IoObjectService.qbk | 2 +- .../requirements/IteratorConnectHandler.qbk | 69 +- .../doc/requirements/IteratorConnectToken.qbk | 113 + .../requirements/LegacyCompletionHandler.qbk | 2 +- .../doc/requirements/MoveAcceptHandler.qbk | 47 +- .../src/doc/requirements/MoveAcceptToken.qbk | 94 + .../requirements/MutableBufferSequence.qbk | 2 +- .../src/doc/requirements/NullaryToken.qbk | 79 + .../src/doc/requirements/OperationState.qbk | 2 +- .../src/doc/requirements/ProtoAllocator.qbk | 2 +- .../asio/src/doc/requirements/Protocol.qbk | 2 +- .../doc/requirements/RangeConnectHandler.qbk | 70 +- .../doc/requirements/RangeConnectToken.qbk | 114 + .../asio/src/doc/requirements/ReadHandler.qbk | 66 +- .../asio/src/doc/requirements/ReadToken.qbk | 110 + .../asio/src/doc/requirements/Receiver.qbk | 2 +- .../src/doc/requirements/ResolveHandler.qbk | 66 +- .../src/doc/requirements/ResolveToken.qbk | 112 + .../asio/src/doc/requirements/Scheduler.qbk | 2 +- .../asio/src/doc/requirements/Sender.qbk | 2 +- .../asio/src/doc/requirements/Service.qbk | 2 +- .../requirements/SettableSerialPortOption.qbk | 2 +- .../doc/requirements/SettableSocketOption.qbk | 2 +- .../src/doc/requirements/ShutdownHandler.qbk | 59 +- .../src/doc/requirements/ShutdownToken.qbk | 99 + .../src/doc/requirements/SignalHandler.qbk | 66 +- .../asio/src/doc/requirements/SignalToken.qbk | 109 + .../SyncRandomAccessReadDevice.qbk | 2 +- .../SyncRandomAccessWriteDevice.qbk | 2 +- .../src/doc/requirements/SyncReadStream.qbk | 2 +- .../src/doc/requirements/SyncWriteStream.qbk | 2 +- .../asio/src/doc/requirements/TimeTraits.qbk | 2 +- .../asio/src/doc/requirements/WaitHandler.qbk | 59 +- .../asio/src/doc/requirements/WaitToken.qbk | 99 + .../asio/src/doc/requirements/WaitTraits.qbk | 2 +- .../src/doc/requirements/WriteHandler.qbk | 66 +- .../asio/src/doc/requirements/WriteToken.qbk | 110 + .../requirements/asynchronous_operations.qbk | 256 +- .../asynchronous_socket_operations.qbk | 2 +- .../requirements/read_write_operations.qbk | 2 +- .../synchronous_socket_operations.qbk | 2 +- .../asio/src/doc/std_executors.qbk | 2 +- .../asio-standalone/asio/src/doc/tutorial.qbk | 102 +- .../asio-standalone/asio/src/doc/tutorial.xsl | 14 +- .../asio-standalone/asio/src/doc/using.qbk | 142 +- .../asio/src/examples/cpp03/Makefile.am | 2 +- .../src/examples/cpp03/allocation/server.cpp | 57 +- .../cpp03/buffers/reference_counted.cpp | 2 +- .../src/examples/cpp03/chat/chat_client.cpp | 2 +- .../src/examples/cpp03/chat/chat_message.hpp | 9 +- .../src/examples/cpp03/chat/chat_server.cpp | 2 +- .../examples/cpp03/chat/posix_chat_client.cpp | 2 +- .../cpp03/echo/async_tcp_echo_server.cpp | 2 +- .../cpp03/echo/async_udp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp03/echo/blocking_udp_echo_server.cpp | 2 +- .../asio/src/examples/cpp03/fork/daemon.cpp | 2 +- .../cpp03/fork/process_per_connection.cpp | 2 +- .../cpp03/http/client/async_client.cpp | 2 +- .../cpp03/http/client/sync_client.cpp | 2 +- .../examples/cpp03/http/doc_root/data_1K.html | 2 +- .../examples/cpp03/http/doc_root/data_2K.html | 2 +- .../examples/cpp03/http/doc_root/data_4K.html | 2 +- .../examples/cpp03/http/doc_root/data_8K.html | 2 +- .../examples/cpp03/http/server/connection.cpp | 2 +- .../examples/cpp03/http/server/connection.hpp | 2 +- .../cpp03/http/server/connection_manager.cpp | 2 +- .../cpp03/http/server/connection_manager.hpp | 2 +- .../src/examples/cpp03/http/server/header.hpp | 2 +- .../src/examples/cpp03/http/server/main.cpp | 2 +- .../examples/cpp03/http/server/mime_types.cpp | 2 +- .../examples/cpp03/http/server/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server/reply.cpp | 2 +- .../src/examples/cpp03/http/server/reply.hpp | 2 +- .../examples/cpp03/http/server/request.hpp | 2 +- .../cpp03/http/server/request_handler.cpp | 2 +- .../cpp03/http/server/request_handler.hpp | 2 +- .../cpp03/http/server/request_parser.cpp | 2 +- .../cpp03/http/server/request_parser.hpp | 2 +- .../src/examples/cpp03/http/server/server.cpp | 2 +- .../src/examples/cpp03/http/server/server.hpp | 2 +- .../cpp03/http/server2/connection.cpp | 2 +- .../cpp03/http/server2/connection.hpp | 2 +- .../examples/cpp03/http/server2/header.hpp | 2 +- .../cpp03/http/server2/io_context_pool.cpp | 5 +- .../cpp03/http/server2/io_context_pool.hpp | 8 +- .../src/examples/cpp03/http/server2/main.cpp | 2 +- .../cpp03/http/server2/mime_types.cpp | 2 +- .../cpp03/http/server2/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server2/reply.cpp | 2 +- .../src/examples/cpp03/http/server2/reply.hpp | 2 +- .../examples/cpp03/http/server2/request.hpp | 2 +- .../cpp03/http/server2/request_handler.cpp | 2 +- .../cpp03/http/server2/request_handler.hpp | 2 +- .../cpp03/http/server2/request_parser.cpp | 2 +- .../cpp03/http/server2/request_parser.hpp | 2 +- .../examples/cpp03/http/server2/server.cpp | 2 +- .../examples/cpp03/http/server2/server.hpp | 2 +- .../cpp03/http/server3/connection.cpp | 2 +- .../cpp03/http/server3/connection.hpp | 2 +- .../examples/cpp03/http/server3/header.hpp | 2 +- .../src/examples/cpp03/http/server3/main.cpp | 2 +- .../cpp03/http/server3/mime_types.cpp | 2 +- .../cpp03/http/server3/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server3/reply.cpp | 2 +- .../src/examples/cpp03/http/server3/reply.hpp | 2 +- .../examples/cpp03/http/server3/request.hpp | 2 +- .../cpp03/http/server3/request_handler.cpp | 2 +- .../cpp03/http/server3/request_handler.hpp | 2 +- .../cpp03/http/server3/request_parser.cpp | 2 +- .../cpp03/http/server3/request_parser.hpp | 2 +- .../examples/cpp03/http/server3/server.cpp | 2 +- .../examples/cpp03/http/server3/server.hpp | 2 +- .../cpp03/http/server4/file_handler.cpp | 2 +- .../cpp03/http/server4/file_handler.hpp | 2 +- .../examples/cpp03/http/server4/header.hpp | 2 +- .../src/examples/cpp03/http/server4/main.cpp | 2 +- .../cpp03/http/server4/mime_types.cpp | 2 +- .../cpp03/http/server4/mime_types.hpp | 2 +- .../src/examples/cpp03/http/server4/reply.cpp | 2 +- .../src/examples/cpp03/http/server4/reply.hpp | 2 +- .../examples/cpp03/http/server4/request.hpp | 2 +- .../cpp03/http/server4/request_parser.cpp | 2 +- .../cpp03/http/server4/request_parser.hpp | 2 +- .../examples/cpp03/http/server4/server.cpp | 2 +- .../examples/cpp03/http/server4/server.hpp | 2 +- .../src/examples/cpp03/icmp/icmp_header.hpp | 2 +- .../src/examples/cpp03/icmp/ipv4_header.hpp | 2 +- .../asio/src/examples/cpp03/icmp/ping.cpp | 2 +- .../cpp03/invocation/prioritised_handlers.cpp | 2 +- .../cpp03/iostreams/daytime_client.cpp | 2 +- .../cpp03/iostreams/daytime_server.cpp | 2 +- .../examples/cpp03/iostreams/http_client.cpp | 2 +- .../src/examples/cpp03/local/connect_pair.cpp | 2 +- .../examples/cpp03/local/iostream_client.cpp | 2 +- .../examples/cpp03/local/stream_client.cpp | 2 +- .../examples/cpp03/local/stream_server.cpp | 2 +- .../src/examples/cpp03/multicast/receiver.cpp | 2 +- .../src/examples/cpp03/multicast/sender.cpp | 2 +- .../cpp03/nonblocking/third_party_lib.cpp | 2 +- .../src/examples/cpp03/porthopper/client.cpp | 2 +- .../examples/cpp03/porthopper/protocol.hpp | 2 +- .../src/examples/cpp03/porthopper/server.cpp | 2 +- .../examples/cpp03/serialization/client.cpp | 2 +- .../cpp03/serialization/connection.hpp | 2 +- .../examples/cpp03/serialization/server.cpp | 2 +- .../examples/cpp03/serialization/stock.hpp | 2 +- .../examples/cpp03/services/basic_logger.hpp | 2 +- .../cpp03/services/daytime_client.cpp | 2 +- .../src/examples/cpp03/services/logger.hpp | 2 +- .../cpp03/services/logger_service.cpp | 2 +- .../cpp03/services/logger_service.hpp | 16 +- .../asio/src/examples/cpp03/socks4/socks4.hpp | 2 +- .../src/examples/cpp03/socks4/sync_client.cpp | 2 +- .../src/examples/cpp03/spawn/echo_server.cpp | 14 +- .../examples/cpp03/spawn/parallel_grep.cpp | 10 +- .../asio/src/examples/cpp03/ssl/README | 2 +- .../asio/src/examples/cpp03/ssl/ca.pem | 95 +- .../asio/src/examples/cpp03/ssl/client.cpp | 2 +- .../asio/src/examples/cpp03/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp03/ssl/dh4096.pem | 25 + .../asio/src/examples/cpp03/ssl/server.cpp | 4 +- .../asio/src/examples/cpp03/ssl/server.pem | 154 +- .../cpp03/timeouts/async_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 2 +- .../cpp03/timeouts/blocking_udp_client.cpp | 2 +- .../src/examples/cpp03/timeouts/server.cpp | 2 +- .../examples/cpp03/timers/time_t_timer.cpp | 2 +- .../cpp03/tutorial/daytime1/client.cpp | 2 +- .../cpp03/tutorial/daytime2/server.cpp | 2 +- .../cpp03/tutorial/daytime3/server.cpp | 2 +- .../cpp03/tutorial/daytime4/client.cpp | 2 +- .../cpp03/tutorial/daytime5/server.cpp | 2 +- .../cpp03/tutorial/daytime6/server.cpp | 2 +- .../cpp03/tutorial/daytime7/server.cpp | 2 +- .../examples/cpp03/tutorial/daytime_dox.txt | 2 +- .../src/examples/cpp03/tutorial/index_dox.txt | 2 +- .../examples/cpp03/tutorial/timer1/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer2/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer3/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer4/timer.cpp | 2 +- .../examples/cpp03/tutorial/timer5/timer.cpp | 2 +- .../src/examples/cpp03/tutorial/timer_dox.txt | 70 +- .../examples/cpp03/windows/transmit_file.cpp | 2 +- .../asio/src/examples/cpp11/Makefile.am | 38 +- .../src/examples/cpp11/allocation/server.cpp | 48 +- .../cpp11/buffers/reference_counted.cpp | 2 +- .../src/examples/cpp11/chat/chat_client.cpp | 2 +- .../src/examples/cpp11/chat/chat_message.hpp | 6 +- .../src/examples/cpp11/chat/chat_server.cpp | 2 +- .../src/examples/cpp11/deferred/.gitignore | 10 + .../examples/cpp11/deferred/deferred_1.cpp | 35 + .../examples/cpp11/deferred/deferred_2.cpp | 44 + .../cpp11/echo/async_tcp_echo_server.cpp | 2 +- .../cpp11/echo/async_udp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp11/echo/blocking_udp_echo_server.cpp | 2 +- .../cpp11/executors/bank_account_1.cpp | 9 +- .../cpp11/executors/bank_account_2.cpp | 12 +- .../examples/cpp11/executors/fork_join.cpp | 7 +- .../asio/src/examples/cpp11/files/.gitignore | 2 + .../examples/cpp11/files/async_file_copy.cpp | 101 + .../cpp11/files/blocking_file_copy.cpp | 65 + .../asio/src/examples/cpp11/fork/daemon.cpp | 2 +- .../cpp11/fork/process_per_connection.cpp | 2 +- .../examples/cpp11/futures/daytime_client.cpp | 5 +- .../async_tcp_echo_server.cpp | 2 +- .../handler_tracking/custom_tracking.hpp | 2 +- .../examples/cpp11/http/server/connection.cpp | 2 +- .../examples/cpp11/http/server/connection.hpp | 2 +- .../cpp11/http/server/connection_manager.cpp | 2 +- .../cpp11/http/server/connection_manager.hpp | 2 +- .../src/examples/cpp11/http/server/header.hpp | 2 +- .../src/examples/cpp11/http/server/main.cpp | 2 +- .../examples/cpp11/http/server/mime_types.cpp | 2 +- .../examples/cpp11/http/server/mime_types.hpp | 2 +- .../src/examples/cpp11/http/server/reply.cpp | 2 +- .../src/examples/cpp11/http/server/reply.hpp | 2 +- .../examples/cpp11/http/server/request.hpp | 2 +- .../cpp11/http/server/request_handler.cpp | 2 +- .../cpp11/http/server/request_handler.hpp | 2 +- .../cpp11/http/server/request_parser.cpp | 2 +- .../cpp11/http/server/request_parser.hpp | 2 +- .../src/examples/cpp11/http/server/server.cpp | 2 +- .../src/examples/cpp11/http/server/server.hpp | 2 +- .../cpp11/invocation/prioritised_handlers.cpp | 2 +- .../examples/cpp11/iostreams/http_client.cpp | 2 +- .../asio/src/examples/cpp11/local/.gitignore | 2 + .../src/examples/cpp11/local/connect_pair.cpp | 2 +- .../cpp11/local/fd_passing_stream_client.cpp | 102 + .../cpp11/local/fd_passing_stream_server.cpp | 160 + .../examples/cpp11/local/iostream_client.cpp | 2 +- .../examples/cpp11/local/stream_client.cpp | 2 +- .../examples/cpp11/local/stream_server.cpp | 2 +- .../src/examples/cpp11/multicast/receiver.cpp | 2 +- .../src/examples/cpp11/multicast/sender.cpp | 2 +- .../cpp11/nonblocking/third_party_lib.cpp | 2 +- .../examples/cpp11/operations/composed_1.cpp | 64 +- .../examples/cpp11/operations/composed_2.cpp | 162 +- .../examples/cpp11/operations/composed_3.cpp | 64 +- .../examples/cpp11/operations/composed_4.cpp | 63 +- .../examples/cpp11/operations/composed_5.cpp | 64 +- .../examples/cpp11/operations/composed_6.cpp | 75 +- .../examples/cpp11/operations/composed_7.cpp | 64 +- .../examples/cpp11/operations/composed_8.cpp | 64 +- .../examples/cpp11/parallel_group/.gitignore | 15 + .../parallel_group/ranged_wait_for_all.cpp | 70 + .../cpp11/parallel_group/wait_for_all.cpp | 62 + .../cpp11/parallel_group/wait_for_one.cpp | 62 + .../parallel_group/wait_for_one_error.cpp | 62 + .../parallel_group/wait_for_one_success.cpp | 62 + .../asio/src/examples/cpp11/socks4/socks4.hpp | 2 +- .../src/examples/cpp11/socks4/sync_client.cpp | 2 +- .../src/examples/cpp11/spawn/echo_server.cpp | 16 +- .../examples/cpp11/spawn/parallel_grep.cpp | 6 +- .../asio/src/examples/cpp11/ssl/README | 2 +- .../asio/src/examples/cpp11/ssl/ca.pem | 95 +- .../asio/src/examples/cpp11/ssl/client.cpp | 2 +- .../asio/src/examples/cpp11/ssl/dh2048.pem | 8 - .../asio/src/examples/cpp11/ssl/dh4096.pem | 25 + .../asio/src/examples/cpp11/ssl/server.cpp | 4 +- .../asio/src/examples/cpp11/ssl/server.pem | 154 +- .../cpp11/timeouts/async_tcp_client.cpp | 2 +- .../cpp11/timeouts/blocking_tcp_client.cpp | 2 +- .../timeouts/blocking_token_tcp_client.cpp | 79 +- .../cpp11/timeouts/blocking_udp_client.cpp | 2 +- .../src/examples/cpp11/timeouts/server.cpp | 2 +- .../examples/cpp11/timers/time_t_timer.cpp | 2 +- .../examples/cpp11/type_erasure/.gitignore | 10 + .../cpp11/type_erasure/line_reader.hpp | 48 + .../src/examples/cpp11/type_erasure/main.cpp | 60 + .../src/examples/cpp11/type_erasure/sleep.cpp | 22 + .../src/examples/cpp11/type_erasure/sleep.hpp | 35 + .../cpp11/type_erasure/stdin_line_reader.cpp | 44 + .../cpp11/type_erasure/stdin_line_reader.hpp | 30 + .../asio/src/examples/cpp14/Makefile.am | 33 +- .../src/examples/cpp14/deferred/.gitignore | 10 + .../examples/cpp14/deferred/deferred_1.cpp | 35 + .../examples/cpp14/deferred/deferred_2.cpp | 44 + .../examples/cpp14/deferred/deferred_3.cpp | 51 + .../examples/cpp14/deferred/deferred_4.cpp | 59 + .../examples/cpp14/deferred/deferred_5.cpp | 66 + .../examples/cpp14/deferred/deferred_6.cpp | 75 + .../examples/cpp14/deferred/deferred_7.cpp | 71 + .../cpp14/echo/async_tcp_echo_server.cpp | 2 +- .../cpp14/echo/async_udp_echo_server.cpp | 2 +- .../cpp14/echo/blocking_tcp_echo_client.cpp | 2 +- .../cpp14/echo/blocking_tcp_echo_server.cpp | 2 +- .../cpp14/echo/blocking_udp_echo_client.cpp | 2 +- .../cpp14/echo/blocking_udp_echo_server.cpp | 2 +- .../src/examples/cpp14/executors/async_1.cpp | 6 +- .../src/examples/cpp14/executors/async_2.cpp | 6 +- .../cpp14/executors/bank_account_1.cpp | 9 +- .../cpp14/executors/bank_account_2.cpp | 13 +- .../examples/cpp14/executors/fork_join.cpp | 7 +- .../src/examples/cpp14/executors/pipeline.cpp | 10 +- .../cpp14/executors/priority_scheduler.cpp | 20 +- .../examples/cpp14/iostreams/http_client.cpp | 2 +- .../src/examples/cpp14/operations/.gitignore | 2 + .../cpp14/operations/c_callback_wrapper.cpp | 230 + .../cpp14/operations/callback_wrapper.cpp | 152 + .../examples/cpp14/operations/composed_1.cpp | 56 +- .../examples/cpp14/operations/composed_2.cpp | 146 +- .../examples/cpp14/operations/composed_3.cpp | 54 +- .../examples/cpp14/operations/composed_4.cpp | 53 +- .../examples/cpp14/operations/composed_5.cpp | 54 +- .../examples/cpp14/operations/composed_6.cpp | 64 +- .../examples/cpp14/operations/composed_7.cpp | 56 +- .../examples/cpp14/operations/composed_8.cpp | 56 +- .../examples/cpp14/parallel_group/.gitignore | 15 + .../cpp14/parallel_group/parallel_sort.cpp | 133 + .../parallel_group/ranged_wait_for_all.cpp | 70 + .../cpp14/parallel_group/wait_for_all.cpp | 64 + .../cpp14/parallel_group/wait_for_one.cpp | 64 + .../parallel_group/wait_for_one_error.cpp | 64 + .../parallel_group/wait_for_one_success.cpp | 64 + .../asio/src/examples/cpp17/Makefile.am | 4 + .../examples/cpp17/coroutines_ts/.gitignore | 2 + .../cpp17/coroutines_ts/chat_server.cpp | 2 +- .../cpp17/coroutines_ts/echo_server.cpp | 2 +- .../echo_server_with_as_single_default.cpp | 71 + .../echo_server_with_as_tuple_default.cpp | 71 + .../echo_server_with_default.cpp | 2 +- .../cpp17/coroutines_ts/range_based_for.cpp | 2 +- .../coroutines_ts/refactored_echo_server.cpp | 2 +- .../asio/src/examples/cpp20/Makefile.am | 73 + .../src/examples/cpp20/channels/.gitignore | 1 + .../cpp20/channels/throttling_proxy.cpp | 135 + .../src/examples/cpp20/coroutines/.gitignore | 16 + .../examples/cpp20/coroutines/chat_server.cpp | 222 + .../examples/cpp20/coroutines/echo_server.cpp | 76 + .../echo_server_with_as_single_default.cpp | 71 + .../echo_server_with_as_tuple_default.cpp | 71 + .../coroutines/echo_server_with_default.cpp | 73 + .../coroutines/echo_server_with_deferred.cpp | 72 + .../echo_server_with_deferred_default.cpp | 74 + .../coroutines/refactored_echo_server.cpp | 80 + .../src/examples/cpp20/coroutines/timeout.cpp | 66 + .../src/examples/cpp20/operations/.gitignore | 12 + .../cpp20/operations/c_callback_wrapper.cpp | 232 + .../cpp20/operations/callback_wrapper.cpp | 154 + .../examples/cpp20/operations/composed_1.cpp | 157 + .../examples/cpp20/operations/composed_2.cpp | 225 + .../examples/cpp20/operations/composed_3.cpp | 232 + .../examples/cpp20/operations/composed_4.cpp | 247 + .../examples/cpp20/operations/composed_5.cpp | 284 + .../examples/cpp20/operations/composed_6.cpp | 345 + .../examples/cpp20/operations/composed_7.cpp | 262 + .../examples/cpp20/operations/composed_8.cpp | 255 + .../examples/cpp20/type_erasure/.gitignore | 10 + .../cpp20/type_erasure/line_reader.hpp | 39 + .../src/examples/cpp20/type_erasure/main.cpp | 35 + .../src/examples/cpp20/type_erasure/sleep.cpp | 22 + .../src/examples/cpp20/type_erasure/sleep.hpp | 32 + .../cpp20/type_erasure/stdin_line_reader.cpp | 44 + .../cpp20/type_erasure/stdin_line_reader.hpp | 30 + .../asio/src/tests/Makefile.am | 174 + .../asio/src/tests/latency/allocator.hpp | 2 +- .../asio/src/tests/latency/high_res_clock.hpp | 2 +- .../asio/src/tests/latency/tcp_client.cpp | 2 +- .../asio/src/tests/latency/tcp_server.cpp | 2 +- .../asio/src/tests/latency/udp_client.cpp | 2 +- .../asio/src/tests/latency/udp_server.cpp | 2 +- .../asio/src/tests/performance/client.cpp | 2 +- .../tests/performance/handler_allocator.hpp | 2 +- .../asio/src/tests/performance/server.cpp | 2 +- .../cpp03/can_prefer_free_prefer.cpp | 2 +- .../cpp03/can_prefer_free_require.cpp | 2 +- .../cpp03/can_prefer_member_prefer.cpp | 2 +- .../cpp03/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp03/can_prefer_static.cpp | 2 +- .../cpp03/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp03/can_query_free.cpp | 2 +- .../properties/cpp03/can_query_member.cpp | 2 +- .../cpp03/can_query_not_applicable_free.cpp | 2 +- .../cpp03/can_query_not_applicable_member.cpp | 2 +- .../cpp03/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_query_static.cpp | 2 +- .../cpp03/can_query_unsupported.cpp | 2 +- .../cpp03/can_require_concept_free.cpp | 2 +- .../cpp03/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp03/can_require_concept_static.cpp | 2 +- .../cpp03/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp03/can_require_free.cpp | 2 +- .../properties/cpp03/can_require_member.cpp | 2 +- .../cpp03/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp03/can_require_static.cpp | 2 +- .../cpp03/can_require_unsupported.cpp | 2 +- .../properties/cpp03/prefer_free_prefer.cpp | 2 +- .../properties/cpp03/prefer_free_require.cpp | 2 +- .../properties/cpp03/prefer_member_prefer.cpp | 2 +- .../cpp03/prefer_member_require.cpp | 2 +- .../tests/properties/cpp03/prefer_static.cpp | 2 +- .../properties/cpp03/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp03/query_free.cpp | 2 +- .../tests/properties/cpp03/query_member.cpp | 2 +- .../tests/properties/cpp03/query_static.cpp | 2 +- .../properties/cpp03/require_concept_free.cpp | 2 +- .../cpp03/require_concept_member.cpp | 2 +- .../cpp03/require_concept_static.cpp | 2 +- .../tests/properties/cpp03/require_free.cpp | 2 +- .../tests/properties/cpp03/require_member.cpp | 2 +- .../tests/properties/cpp03/require_static.cpp | 2 +- .../cpp11/can_prefer_free_prefer.cpp | 2 +- .../cpp11/can_prefer_free_require.cpp | 2 +- .../cpp11/can_prefer_member_prefer.cpp | 2 +- .../cpp11/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp11/can_prefer_static.cpp | 2 +- .../cpp11/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp11/can_query_free.cpp | 2 +- .../properties/cpp11/can_query_member.cpp | 2 +- .../cpp11/can_query_not_applicable_free.cpp | 2 +- .../cpp11/can_query_not_applicable_member.cpp | 2 +- .../cpp11/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_query_static.cpp | 2 +- .../cpp11/can_query_unsupported.cpp | 2 +- .../cpp11/can_require_concept_free.cpp | 2 +- .../cpp11/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp11/can_require_concept_static.cpp | 2 +- .../cpp11/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp11/can_require_free.cpp | 2 +- .../properties/cpp11/can_require_member.cpp | 2 +- .../cpp11/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp11/can_require_static.cpp | 2 +- .../cpp11/can_require_unsupported.cpp | 2 +- .../properties/cpp11/prefer_free_prefer.cpp | 2 +- .../properties/cpp11/prefer_free_require.cpp | 2 +- .../properties/cpp11/prefer_member_prefer.cpp | 2 +- .../cpp11/prefer_member_require.cpp | 2 +- .../tests/properties/cpp11/prefer_static.cpp | 2 +- .../properties/cpp11/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp11/query_free.cpp | 2 +- .../tests/properties/cpp11/query_member.cpp | 2 +- .../tests/properties/cpp11/query_static.cpp | 2 +- .../properties/cpp11/require_concept_free.cpp | 2 +- .../cpp11/require_concept_member.cpp | 2 +- .../cpp11/require_concept_static.cpp | 2 +- .../tests/properties/cpp11/require_free.cpp | 2 +- .../tests/properties/cpp11/require_member.cpp | 2 +- .../tests/properties/cpp11/require_static.cpp | 2 +- .../cpp14/can_prefer_free_prefer.cpp | 2 +- .../cpp14/can_prefer_free_require.cpp | 2 +- .../cpp14/can_prefer_member_prefer.cpp | 2 +- .../cpp14/can_prefer_member_require.cpp | 2 +- .../can_prefer_not_applicable_free_prefer.cpp | 2 +- ...can_prefer_not_applicable_free_require.cpp | 2 +- ...an_prefer_not_applicable_member_prefer.cpp | 2 +- ...n_prefer_not_applicable_member_require.cpp | 2 +- .../can_prefer_not_applicable_static.cpp | 2 +- .../can_prefer_not_applicable_unsupported.cpp | 2 +- .../can_prefer_not_preferable_free_prefer.cpp | 2 +- ...can_prefer_not_preferable_free_require.cpp | 2 +- ...an_prefer_not_preferable_member_prefer.cpp | 2 +- ...n_prefer_not_preferable_member_require.cpp | 2 +- .../can_prefer_not_preferable_static.cpp | 2 +- .../can_prefer_not_preferable_unsupported.cpp | 2 +- .../properties/cpp14/can_prefer_static.cpp | 2 +- .../cpp14/can_prefer_unsupported.cpp | 2 +- .../tests/properties/cpp14/can_query_free.cpp | 2 +- .../properties/cpp14/can_query_member.cpp | 2 +- .../cpp14/can_query_not_applicable_free.cpp | 2 +- .../cpp14/can_query_not_applicable_member.cpp | 2 +- .../cpp14/can_query_not_applicable_static.cpp | 2 +- .../can_query_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_query_static.cpp | 2 +- .../cpp14/can_query_unsupported.cpp | 2 +- .../cpp14/can_require_concept_free.cpp | 2 +- .../cpp14/can_require_concept_member.cpp | 2 +- ...an_require_concept_not_applicable_free.cpp | 2 +- ..._require_concept_not_applicable_member.cpp | 2 +- ..._require_concept_not_applicable_static.cpp | 2 +- ...ire_concept_not_applicable_unsupported.cpp | 2 +- .../cpp14/can_require_concept_static.cpp | 2 +- .../cpp14/can_require_concept_unsupported.cpp | 2 +- .../properties/cpp14/can_require_free.cpp | 2 +- .../properties/cpp14/can_require_member.cpp | 2 +- .../cpp14/can_require_not_applicable_free.cpp | 2 +- .../can_require_not_applicable_member.cpp | 2 +- .../can_require_not_applicable_static.cpp | 2 +- ...can_require_not_applicable_unsupported.cpp | 2 +- .../properties/cpp14/can_require_static.cpp | 2 +- .../cpp14/can_require_unsupported.cpp | 2 +- .../properties/cpp14/prefer_free_prefer.cpp | 2 +- .../properties/cpp14/prefer_free_require.cpp | 2 +- .../properties/cpp14/prefer_member_prefer.cpp | 2 +- .../cpp14/prefer_member_require.cpp | 2 +- .../tests/properties/cpp14/prefer_static.cpp | 2 +- .../properties/cpp14/prefer_unsupported.cpp | 2 +- .../src/tests/properties/cpp14/query_free.cpp | 2 +- .../tests/properties/cpp14/query_member.cpp | 2 +- .../tests/properties/cpp14/query_static.cpp | 2 +- .../properties/cpp14/require_concept_free.cpp | 2 +- .../cpp14/require_concept_member.cpp | 2 +- .../cpp14/require_concept_static.cpp | 2 +- .../tests/properties/cpp14/require_free.cpp | 2 +- .../tests/properties/cpp14/require_member.cpp | 2 +- .../tests/properties/cpp14/require_static.cpp | 2 +- .../asio/src/tests/unit/.gitignore | 29 + .../asio/src/tests/unit/append.cpp | 62 + .../src/tests/unit/archetypes/async_ops.hpp | 2 +- .../tests/unit/archetypes/async_result.hpp | 76 +- .../archetypes/gettable_socket_option.hpp | 2 +- .../unit/archetypes/io_control_command.hpp | 2 +- .../archetypes/settable_socket_option.hpp | 2 +- .../asio/src/tests/unit/as_tuple.cpp | 134 + .../src/tests/unit/associated_allocator.cpp | 2 +- .../unit/associated_cancellation_slot.cpp | 25 + .../src/tests/unit/associated_executor.cpp | 2 +- .../unit/associated_immediate_executor.cpp | 25 + .../asio/src/tests/unit/associator.cpp | 25 + .../asio/src/tests/unit/async_result.cpp | 2 +- .../asio/src/tests/unit/awaitable.cpp | 2 +- .../src/tests/unit/basic_datagram_socket.cpp | 2 +- .../src/tests/unit/basic_deadline_timer.cpp | 2 +- .../asio/src/tests/unit/basic_file.cpp | 25 + .../tests/unit/basic_random_access_file.cpp | 25 + .../asio/src/tests/unit/basic_raw_socket.cpp | 2 +- .../src/tests/unit/basic_readable_pipe.cpp | 25 + .../tests/unit/basic_seq_packet_socket.cpp | 2 +- .../asio/src/tests/unit/basic_serial_port.cpp | 2 +- .../asio/src/tests/unit/basic_signal_set.cpp | 2 +- .../asio/src/tests/unit/basic_socket.cpp | 2 +- .../src/tests/unit/basic_socket_acceptor.cpp | 2 +- .../asio/src/tests/unit/basic_stream_file.cpp | 25 + .../src/tests/unit/basic_stream_socket.cpp | 2 +- .../asio/src/tests/unit/basic_streambuf.cpp | 2 +- .../src/tests/unit/basic_waitable_timer.cpp | 2 +- .../src/tests/unit/basic_writable_pipe.cpp | 25 + .../asio/src/tests/unit/bind_allocator.cpp | 253 + .../src/tests/unit/bind_cancellation_slot.cpp | 221 + .../asio/src/tests/unit/bind_executor.cpp | 183 +- .../tests/unit/bind_immediate_executor.cpp | 25 + .../asio/src/tests/unit/buffer.cpp | 110 +- .../src/tests/unit/buffer_registration.cpp | 25 + .../src/tests/unit/buffered_read_stream.cpp | 4 +- .../asio/src/tests/unit/buffered_stream.cpp | 4 +- .../src/tests/unit/buffered_write_stream.cpp | 4 +- .../asio/src/tests/unit/buffers_iterator.cpp | 4 +- .../src/tests/unit/cancellation_signal.cpp | 25 + .../src/tests/unit/cancellation_state.cpp | 25 + .../asio/src/tests/unit/cancellation_type.cpp | 25 + .../asio/src/tests/unit/co_spawn.cpp | 61 +- .../src/tests/unit/completion_condition.cpp | 2 +- .../asio/src/tests/unit/compose.cpp | 314 +- .../asio/src/tests/unit/connect.cpp | 2 +- .../asio/src/tests/unit/connect_pipe.cpp | 163 + .../asio/src/tests/unit/consign.cpp | 60 + .../asio/src/tests/unit/coroutine.cpp | 2 +- .../asio/src/tests/unit/deadline_timer.cpp | 2 +- .../asio/src/tests/unit/defer.cpp | 2 +- .../asio/src/tests/unit/deferred.cpp | 25 + .../asio/src/tests/unit/detached.cpp | 2 +- .../asio/src/tests/unit/dispatch.cpp | 2 +- .../asio/src/tests/unit/error.cpp | 2 +- .../src/tests/unit/execution/any_executor.cpp | 394 +- .../src/tests/unit/execution/blocking.cpp | 2 +- .../unit/execution/blocking_adaptation.cpp | 2 +- .../src/tests/unit/execution/bulk_execute.cpp | 16 +- .../tests/unit/execution/bulk_guarantee.cpp | 14 +- .../asio/src/tests/unit/execution/connect.cpp | 14 +- .../src/tests/unit/execution/context_as.cpp | 2 +- .../asio/src/tests/unit/execution/execute.cpp | 16 +- .../src/tests/unit/execution/executor.cpp | 2 +- .../unit/execution/invocable_archetype.cpp | 2 +- .../asio/src/tests/unit/execution/mapping.cpp | 2 +- .../tests/unit/execution/operation_state.cpp | 14 +- .../tests/unit/execution/outstanding_work.cpp | 2 +- .../src/tests/unit/execution/prefer_only.cpp | 26 +- .../src/tests/unit/execution/receiver.cpp | 14 +- .../src/tests/unit/execution/relationship.cpp | 2 +- .../src/tests/unit/execution/schedule.cpp | 14 +- .../src/tests/unit/execution/scheduler.cpp | 14 +- .../asio/src/tests/unit/execution/sender.cpp | 14 +- .../src/tests/unit/execution/set_done.cpp | 14 +- .../src/tests/unit/execution/set_error.cpp | 14 +- .../src/tests/unit/execution/set_value.cpp | 14 +- .../asio/src/tests/unit/execution/start.cpp | 14 +- .../asio/src/tests/unit/execution/submit.cpp | 14 +- .../asio/src/tests/unit/execution_context.cpp | 2 +- .../asio/src/tests/unit/executor.cpp | 2 +- .../src/tests/unit/executor_work_guard.cpp | 2 +- .../src/tests/unit/experimental/.gitignore | 17 + .../unit/experimental/awaitable_operators.cpp | 297 + .../tests/unit/experimental/basic_channel.cpp | 25 + .../experimental/basic_concurrent_channel.cpp | 25 + .../src/tests/unit/experimental/channel.cpp | 679 + .../unit/experimental/channel_traits.cpp | 25 + .../tests/unit/experimental/co_composed.cpp | 518 + .../unit/experimental/concurrent_channel.cpp | 165 + .../tests/unit/experimental/coro/.gitignore | 15 + .../unit/experimental/coro/allocator.cpp | 112 + .../tests/unit/experimental/coro/cancel.cpp | 179 + .../tests/unit/experimental/coro/co_spawn.cpp | 67 + .../unit/experimental/coro/exception.cpp | 172 + .../tests/unit/experimental/coro/executor.cpp | 116 + .../tests/unit/experimental/coro/partial.cpp | 45 + .../unit/experimental/coro/simple_test.cpp | 264 + .../unit/experimental/coro/stack_test.cpp | 83 + .../tests/unit/experimental/coro/use_coro.cpp | 77 + .../src/tests/unit/experimental/promise.cpp | 226 + .../asio/src/tests/unit/file_base.cpp | 25 + .../src/tests/unit/generic/basic_endpoint.cpp | 2 +- .../tests/unit/generic/datagram_protocol.cpp | 37 +- .../src/tests/unit/generic/raw_protocol.cpp | 38 +- .../unit/generic/seq_packet_protocol.cpp | 15 +- .../tests/unit/generic/stream_protocol.cpp | 23 +- .../src/tests/unit/high_resolution_timer.cpp | 2 +- .../asio/src/tests/unit/io_context.cpp | 89 +- .../asio/src/tests/unit/io_context_strand.cpp | 2 +- .../asio/src/tests/unit/ip/address.cpp | 9 +- .../asio/src/tests/unit/ip/basic_endpoint.cpp | 2 +- .../asio/src/tests/unit/ip/basic_resolver.cpp | 2 +- .../tests/unit/ip/basic_resolver_entry.cpp | 2 +- .../tests/unit/ip/basic_resolver_iterator.cpp | 2 +- .../tests/unit/ip/basic_resolver_query.cpp | 2 +- .../asio/src/tests/unit/ip/host_name.cpp | 4 +- .../asio/src/tests/unit/ip/icmp.cpp | 51 +- .../asio/src/tests/unit/ip/multicast.cpp | 4 +- .../asio/src/tests/unit/ip/network_v4.cpp | 4 +- .../asio/src/tests/unit/ip/network_v6.cpp | 4 +- .../src/tests/unit/ip/resolver_query_base.cpp | 2 +- .../asio/src/tests/unit/ip/tcp.cpp | 59 +- .../asio/src/tests/unit/ip/udp.cpp | 52 +- .../asio/src/tests/unit/ip/unicast.cpp | 4 +- .../asio/src/tests/unit/ip/v6_only.cpp | 4 +- .../asio/src/tests/unit/is_read_buffered.cpp | 2 +- .../asio/src/tests/unit/is_write_buffered.cpp | 2 +- .../asio/src/tests/unit/local/.gitignore | 1 + .../src/tests/unit/local/basic_endpoint.cpp | 2 +- .../src/tests/unit/local/connect_pair.cpp | 4 +- .../tests/unit/local/datagram_protocol.cpp | 4 +- .../tests/unit/local/seq_packet_protocol.cpp | 213 + .../src/tests/unit/local/stream_protocol.cpp | 4 +- .../asio/src/tests/unit/packaged_task.cpp | 2 +- .../asio/src/tests/unit/placeholders.cpp | 2 +- .../src/tests/unit/posix/basic_descriptor.cpp | 2 +- .../unit/posix/basic_stream_descriptor.cpp | 2 +- .../asio/src/tests/unit/posix/descriptor.cpp | 2 +- .../src/tests/unit/posix/descriptor_base.cpp | 2 +- .../tests/unit/posix/stream_descriptor.cpp | 19 +- .../asio/src/tests/unit/post.cpp | 2 +- .../asio/src/tests/unit/prepend.cpp | 62 + .../src/tests/unit/random_access_file.cpp | 179 + .../asio/src/tests/unit/read.cpp | 2 +- .../asio/src/tests/unit/read_at.cpp | 2 +- .../asio/src/tests/unit/read_until.cpp | 2 +- .../asio/src/tests/unit/readable_pipe.cpp | 139 + .../src/tests/unit/recycling_allocator.cpp | 82 + .../asio/src/tests/unit/redirect_error.cpp | 106 +- .../asio/src/tests/unit/registered_buffer.cpp | 111 + .../asio/src/tests/unit/serial_port.cpp | 12 +- .../asio/src/tests/unit/serial_port_base.cpp | 4 +- .../asio/src/tests/unit/signal_set.cpp | 7 +- .../asio/src/tests/unit/signal_set_base.cpp | 30 + .../asio/src/tests/unit/socket_base.cpp | 4 +- .../asio/src/tests/unit/ssl/context.cpp | 2 +- .../asio/src/tests/unit/ssl/context_base.cpp | 2 +- .../asio/src/tests/unit/ssl/error.cpp | 2 +- .../tests/unit/ssl/host_name_verification.cpp | 2 +- .../tests/unit/ssl/rfc2818_verification.cpp | 2 +- .../asio/src/tests/unit/ssl/stream.cpp | 10 +- .../asio/src/tests/unit/ssl/stream_base.cpp | 2 +- .../src/tests/unit/static_thread_pool.cpp | 2 +- .../asio/src/tests/unit/steady_timer.cpp | 2 +- .../asio/src/tests/unit/strand.cpp | 80 +- .../asio/src/tests/unit/stream_file.cpp | 181 + .../asio/src/tests/unit/streambuf.cpp | 2 +- .../asio/src/tests/unit/system_context.cpp | 2 +- .../asio/src/tests/unit/system_executor.cpp | 79 +- .../asio/src/tests/unit/system_timer.cpp | 43 +- .../asio/src/tests/unit/this_coro.cpp | 2 +- .../asio/src/tests/unit/thread.cpp | 2 +- .../asio/src/tests/unit/thread_pool.cpp | 107 +- .../asio/src/tests/unit/time_traits.cpp | 2 +- .../asio/src/tests/unit/ts/buffer.cpp | 2 +- .../asio/src/tests/unit/ts/executor.cpp | 2 +- .../asio/src/tests/unit/ts/internet.cpp | 2 +- .../asio/src/tests/unit/ts/io_context.cpp | 2 +- .../asio/src/tests/unit/ts/net.cpp | 2 +- .../asio/src/tests/unit/ts/netfwd.cpp | 2 +- .../asio/src/tests/unit/ts/socket.cpp | 2 +- .../asio/src/tests/unit/ts/timer.cpp | 2 +- .../asio/src/tests/unit/unit_test.hpp | 2 +- .../asio/src/tests/unit/use_awaitable.cpp | 2 +- .../asio/src/tests/unit/use_future.cpp | 2 +- .../asio/src/tests/unit/uses_executor.cpp | 2 +- .../asio/src/tests/unit/wait_traits.cpp | 2 +- .../unit/windows/basic_object_handle.cpp | 2 +- .../unit/windows/basic_overlapped_handle.cpp | 2 +- .../windows/basic_random_access_handle.cpp | 2 +- .../unit/windows/basic_stream_handle.cpp | 2 +- .../src/tests/unit/windows/object_handle.cpp | 12 +- .../tests/unit/windows/overlapped_handle.cpp | 2 +- .../src/tests/unit/windows/overlapped_ptr.cpp | 4 +- .../unit/windows/random_access_handle.cpp | 21 +- .../src/tests/unit/windows/stream_handle.cpp | 21 +- .../asio/src/tests/unit/writable_pipe.cpp | 144 + .../asio/src/tests/unit/write.cpp | 2 +- .../asio/src/tests/unit/write_at.cpp | 2 +- .../asio/src/tools/handlerlive.pl | 2 +- .../asio/src/tools/handlertree.pl | 2 +- .../asio/src/tools/handlerviz.pl | 2 +- .../modules/asio-standalone/asio/tsify.pl | 0 tidal-link/link/src/CMakeLists.txt | 7 +- .../discovery/tst_InterfaceScanner.cpp | 6 +- .../ableton/discovery/tst_PeerGateways.cpp | 10 +- .../ableton/discovery/tst_UdpMessenger.cpp | 7 +- .../link/src/ableton/link/tst_Beats.cpp | 4 +- .../link/src/ableton/link/tst_Controller.cpp | 10 +- .../src/ableton/link/tst_LinearRegression.cpp | 22 +- .../link/src/ableton/link/tst_Measurement.cpp | 6 +- .../link/src/ableton/link/tst_Median.cpp | 9 +- .../link/src/ableton/link/tst_PeerState.cpp | 71 + .../link/src/ableton/link/tst_Peers.cpp | 4 +- .../src/ableton/link/tst_PingResponder.cpp | 10 +- .../link/src/ableton/link/tst_Tempo.cpp | 4 +- .../src/ableton/link/tst_TripleBuffer.cpp | 4 +- tidal-link/link/src/ableton/tst_Link.cpp | 51 + 1625 files changed, 159422 insertions(+), 49642 deletions(-) create mode 100644 tidal-link/link/Ableton Link Guidelines.pdf mode change 100644 => 100755 tidal-link/link/ci/build.py mode change 100644 => 100755 tidal-link/link/ci/check-formatting.py mode change 100644 => 100755 tidal-link/link/ci/configure.py mode change 100644 => 100755 tidal-link/link/ci/run-tests.py mode change 100644 => 100755 tidal-link/link/ci/run_valgrind_tests.sh create mode 100644 tidal-link/link/examples/esp32/main/idf_component.yml rename tidal-link/link/include/ableton/{platforms/asio/Util.hpp => discovery/AsioTypes.hpp} (61%) rename tidal-link/link/include/ableton/discovery/{IpV4Interface.hpp => IpInterface.hpp} (73%) create mode 100644 tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp create mode 100644 tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml delete mode 100644 tidal-link/link/modules/asio-standalone/.travis.yml create mode 100644 tidal-link/link/modules/asio-standalone/asio/asio.pc.in mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/autogen.sh mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/boostify.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_random_access_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_readable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_stream_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/basic_writable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_cancellation_slot.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/bind_immediate_executor.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/buffer_registration.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_signal.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_state.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/cancellation_type.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/connect_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/consign.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/base_from_cancellation_state.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/composed_work.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/exception.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_descriptor_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_file_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_service.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/io_uring_socket_service_base.ipp rename tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/{reactive_serial_port_service.ipp => posix_serial_port_service.ipp} (68%) create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/thread_context.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/impl/win_iocp_file_service.ipp rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/defer.hpp => detail/initiate_defer.hpp} (74%) rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/dispatch.hpp => detail/initiate_dispatch.hpp} (72%) rename tidal-link/link/modules/asio-standalone/asio/include/asio/{impl/post.hpp => detail/initiate_post.hpp} (74%) create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_read_at_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_read_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_write_at_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_descriptor_write_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_file_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_null_buffers_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_operation.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_accept_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_connect_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recv_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recvfrom_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_recvmsg_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_send_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_sendto_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_socket_service_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/io_uring_wait_op.hpp rename tidal-link/link/modules/asio-standalone/asio/include/asio/detail/{reactive_serial_port_service.hpp => posix_serial_port_service.hpp} (81%) delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/reactor_fwd.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/scheduler_task.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/utility.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/detail/win_iocp_file_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/as_single.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/awaitable_operators.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/basic_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/basic_concurrent_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/cancellation_condition.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel_error.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/channel_traits.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/co_composed.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/co_spawn.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/concurrent_channel.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/coro_traits.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_message.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_operation.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_payload.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_receive_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_send_functions.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_send_op.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/channel_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/coro_completion_handler.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/coro_promise_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/has_signature.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/impl/channel_service.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/detail/partial_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/as_single.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/channel_error.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/co_composed.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/parallel_group.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/use_coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/impl/use_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/parallel_group.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/prepend.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/use_coro.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/experimental/use_promise.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/file_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/any_completion_executor.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/any_io_executor.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/append.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/as_tuple.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/cancellation_signal.ipp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/compose.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/connect_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/connect_pipe.ipp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/consign.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/deferred.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/prepend.hpp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/impl/src.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/is_contiguous_iterator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/local/seq_packet_protocol.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/prepend.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/random_access_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/readable_pipe.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/recycling_allocator.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/registered_buffer.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/signal_set_base.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/stream_file.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/include/asio/writable_pipe.hpp mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/release.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/doc/makepdf.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/model_dox.txt create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/cancellation.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/channels.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/compose.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/coro.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/coroutines_ts.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/cpp20_coroutines.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/deferred.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/files.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/futures.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/immediate_completion.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/allocators.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/associators.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agent_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agent_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_agents.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_child_agent_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_init_complete.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_phases.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_op_trivial_chain.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/async_ops.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/cancellation.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/child_agents.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_token_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_token_transform.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/completion_tokens.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/executors.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/higher_level_model.png create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/higher_levels.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/model/library_elements.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/parallel_group.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/pipes.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/promises.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/token_adapters.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/overview/type_erasure.qbk create mode 100755 tidal-link/link/modules/asio-standalone/asio/src/doc/platform_macros.pl create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/platform_macros.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/AcceptToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/BufferedHandshakeToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CancellationHandler.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CancellationSlot.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/CompletionHandler.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/HandshakeToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/IteratorConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/MoveAcceptToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/NullaryToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/RangeConnectToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ReadToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ResolveToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/ShutdownToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/SignalToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/WaitToken.qbk create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/doc/requirements/WriteToken.qbk delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp03/ssl/dh2048.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp03/ssl/dh4096.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/deferred_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/deferred/deferred_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/async_file_copy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/files/blocking_file_copy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/local/fd_passing_stream_client.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/local/fd_passing_stream_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/ranged_wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one_error.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/parallel_group/wait_for_one_success.cpp delete mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/ssl/dh2048.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/ssl/dh4096.pem create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/main.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/sleep.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/sleep.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/stdin_line_reader.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp11/type_erasure/stdin_line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_3.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_4.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_5.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_6.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/deferred/deferred_7.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/operations/c_callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/operations/callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/parallel_sort.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/ranged_wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_all.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one_error.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp14/parallel_group/wait_for_one_success.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/Makefile.am create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/channels/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/channels/throttling_proxy.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/chat_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_as_single_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_as_tuple_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_deferred.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/echo_server_with_deferred_default.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/refactored_echo_server.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/coroutines/timeout.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/c_callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/callback_wrapper.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_1.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_2.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_3.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_4.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_5.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_6.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_7.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/operations/composed_8.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/main.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/sleep.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/sleep.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/stdin_line_reader.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/examples/cpp20/type_erasure/stdin_line_reader.hpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/append.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/as_tuple.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associated_cancellation_slot.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associated_immediate_executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/associator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_random_access_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_readable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_stream_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/basic_writable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_cancellation_slot.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/bind_immediate_executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/buffer_registration.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_signal.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_state.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/cancellation_type.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/connect_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/consign.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/deferred.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/awaitable_operators.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/basic_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/channel_traits.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/co_composed.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/concurrent_channel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/.gitignore create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/cancel.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/co_spawn.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/exception.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/executor.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/partial.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/simple_test.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/stack_test.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/coro/use_coro.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/experimental/promise.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/file_base.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/local/seq_packet_protocol.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/prepend.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/random_access_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/readable_pipe.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/recycling_allocator.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/registered_buffer.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/signal_set_base.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/stream_file.cpp create mode 100644 tidal-link/link/modules/asio-standalone/asio/src/tests/unit/writable_pipe.cpp mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlerlive.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlertree.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/src/tools/handlerviz.pl mode change 100644 => 100755 tidal-link/link/modules/asio-standalone/asio/tsify.pl create mode 100644 tidal-link/link/src/ableton/link/tst_PeerState.cpp create mode 100644 tidal-link/link/src/ableton/tst_Link.cpp diff --git a/tidal-link/link/.appveyor.yml b/tidal-link/link/.appveyor.yml index 27214e28d..aff8de98c 100644 --- a/tidal-link/link/.appveyor.yml +++ b/tidal-link/link/.appveyor.yml @@ -12,15 +12,15 @@ environment: - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina CONFIGURATION: Release XCODE_VERSION: 11.7 - - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina + - APPVEYOR_BUILD_WORKER_IMAGE: macos-bigsur CONFIGURATION: Debug - XCODE_VERSION: 12.3 + XCODE_VERSION: 12.5.1 - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey CONFIGURATION: Release - XCODE_VERSION: 12.5.1 + XCODE_VERSION: 13.4.1 - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey CONFIGURATION: Release - XCODE_VERSION: 13.2.1 + XCODE_VERSION: 14.1 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 AUDIO_DRIVER: Jack CONFIGURATION: Debug @@ -52,20 +52,10 @@ environment: GENERATOR: Ninja CXX: g++-7 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio - THREAD_DESCRIPTION: OFF - CONFIGURATION: Release - GENERATOR: Visual Studio 14 2015 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio + AUDIO_DRIVER: Wasapi THREAD_DESCRIPTION: OFF CONFIGURATION: Debug GENERATOR: Visual Studio 14 2015 Win64 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - AUDIO_DRIVER: Asio - THREAD_DESCRIPTION: OFF - CONFIGURATION: Release - GENERATOR: Visual Studio 14 2015 Win64 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 AUDIO_DRIVER: Wasapi THREAD_DESCRIPTION: OFF @@ -88,7 +78,7 @@ environment: GENERATOR: Visual Studio 17 2022 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 ESP_IDF: true - IDF_RELEASE: v4.3.1 + IDF_RELEASE: v5.1.1 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 FORMATTING: true @@ -100,6 +90,7 @@ for: only: - APPVEYOR_BUILD_WORKER_IMAGE: macos-mojave - APPVEYOR_BUILD_WORKER_IMAGE: macos-catalina + - APPVEYOR_BUILD_WORKER_IMAGE: macos-bigsur - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey build_script: - sudo xcode-select -s /Applications/Xcode-$XCODE_VERSION.app @@ -114,7 +105,6 @@ for: - GENERATOR: Ninja install: - git submodule update --init --recursive - - sudo apt-get update - sudo apt-get install -y libjack-dev portaudio19-dev valgrind build_script: - python3 ci/configure.py --audio-driver $AUDIO_DRIVER --generator "$GENERATOR" --configuration $CONFIGURATION @@ -129,6 +119,7 @@ for: - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 build_script: + - py -3 -m pip install setuptools - py -3 ci/configure.py --audio-driver %AUDIO_DRIVER% --thread-description %THREAD_DESCRIPTION% --generator "%GENERATOR%" --flags="-DCMAKE_SYSTEM_VERSION=10.0.18362.0" - py -3 ci/build.py --configuration %CONFIGURATION% test_script: diff --git a/tidal-link/link/Ableton Link Guidelines.pdf b/tidal-link/link/Ableton Link Guidelines.pdf new file mode 100644 index 0000000000000000000000000000000000000000..09cf86ae377adecb1a874321288a04e71831c3ea GIT binary patch literal 291991 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

BbUaVIA91buBy0Hc`P|g= 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%0DtomVqWtQk7>e&C@D# zrD#W%GZVnGLb)2IMzcV6z%q4c%lYQL=H?cr)ird>$Yr((>i2RpK%Khs$3U#BkinTz zHz(L$ZnG8K&X4&e#U()cCQcS5bgvIrEle$=n$(7c)mA#|mY9;Cu5h2pd(M$J6QC{Z zf9k+yF$$F08H*)>)a7=kVsuU%ac30)awmxkTF^*}vnyB+@n(v~m$-1#$3W((3-JVM z=f@6gqLyuI*Qu7xo5WF=(_E(a1e*yxO9HStPu95FU21OLs4R|$?9@#~;c{n&gT&?+ z$JS5?yQ>!=>Wg(O2i4zna6dJJfLY1^dWiU!4vzWXJGfMp?w1CvkFU_L_#{5db2ng0 zeqg=V*fQZo9Sf4g_-Fun^wd33VZF!&BW4@B##n*|FTpusu-1Hg+IgW4TLxj!pWYZp z0i=ebhgsVTh4$PQibXi?(R6eGOa)&6T7?HQK4zogJGsf&Xe9G)y}4M~UB|HT#9EWh zz5%8$eG>?#Tv;*guPnaoy=G<|_mWA`4y`|vpHGN?Z6G$#Ted0l* z;8A)^$Njzsxruv((jGzJe;KZdZhMRlU6`%j;Y-#wVj zXrR78ix$#@@A1XnzgzrGCO&=?nb0-X@D6o&M(&94uh4=;pMOMb;8DK3G&!&rj; z2FV=ugFXs2uc3(_??b^iUsVJULlnJmiCJ@WmLH=rNKjGc=wO7$q4)T5Fe-`Z#-R5+ zSOPY_2v}ft-X&>R7h z%e&3cz4WVgAx2f zc%ON3W{1w5AkppYw6DAOD(K{-_N031U{8_dDLA#RkCX~$f1|@&{~=S}3}RDn3+(w? z{z_kahWEn3-q68bH$f2H&GXl;X+ey}W?vV+)rs=F#ZTB1mw`SntR>(J;=Ccg;&MG@ z#)li9MDiM{unEU>pK>s2%=6X^Ge4m*rM?N9LzV9qr6RfF*k^v(O@75B-)9}4g1?lx zQkD&kl;yw3V52EwI2>M@p2G~z6|)(}W#kN>nD2QMgliON_eCk+n6ZS%iBmEPK2|nM zp!88G$8dN5NIqY^J@e9;94qsNtaFC42CHJGDO`wxV|>#B8h*wun^(EKBh`1OM!v(e z7S6gN%1e|ppvP#j_LI$ z<9WNGaP{?jrkYWl!(cDrP&0(iwqP@ad0PRiBldJo+O@Gn_9{qe9|2iguVHzbkJxD{ zaEZ$tkuqx&rMTOlExG|-tO)FR!iQ(6_PHi_YfNS4B=Q)JyLKRm;cA;HSK};FxpZm7 zQdOWETWz!-u!b<7Ks;W54^D&$@g?@K>!`|eQ)>0DqBQ@y?j!}h#qbk9WkKRfe+_VI zc!-*?8Wvy@n?rTw?qHW_K5<%9NQ!^_SjbuNz})0S$!W3mxx)n2)~4l_nf%p6MVUp- z;Fpi)n-gsxHSL}Kw=LN1otNM~s!y!A+xDN2+Owzm4>Jtrk;us959P;S?PLzI*>cSx zE4fX7$^GoAUAs9?O#;-GU&qaT%sZ}&(rBhM*Wt3W~ zc!-aXgz3HP2t&jT@>=9k)vA{vO7QcXCb|8)eYI96eJ{p&ha6v%A=-U&p%K5H@QroH zZ;hSm)w^4*)tyr|b zfgfga0v5XGV?0cBEABnRBN!q|xFt+b93xe9FVH33n}i`=)o+5UJc5N1!~!32Wb2Sz z2k0>p`KcwPTQI{N`F^$6Tfjt%uhQ?Q5bWU1(P#AFlPtl$E0i&U{9t(m<$ zhuYQj*FNIhRrp-Dw~v>5d)EN1SY@Ky?tUVEzvR2-leNQL=x;eQ3v2B>iS9f+-0_Kh z+8_J0-CbPIR@M%-w$z7MqD*e0O}w%aH^A@OKDGe7<{s#1}2Zo!=Rs9@q8B2}ra_eDl^UtJ0s5G^MWI{4!l|c?S(j?!F-MVb*85^25-R)>+r(tCgSh>frW7GXz#^0Upr{lHO#p6t zM}uTTXr;$>IqAdJjjDv%hNu@iqxYyK4(Qfq4|ap_=c=OG8+S zQy3>rI5Eya{l#Zq7Wo)L3khQ1|L1BLJ4NS+ie>K?)Iv4O1(dc<>ZhrksXs&!AC^si zk22+VTyDF0^LPT+>n<}|W)d$VG^P6n?>7q8g?eblXKnsI^!j=|j`w>iX8VFDN~CC2 z@40CuXn3RoDS|JtnhZ$|i4|7EW*_W`5!&~)^}jzj*byT9g=F!lX(W631`c#b6ET(S zH$CMq3yl8zp7NKeF5CaqQ%29d)DS^v(*}S1#Cgsbiv{yQ;Uyewu8H##=R&lw`-4w0 zAI6sNkR|MK^cw^nH$4$9uC6~zB{5;DF8iE@k)2E4tbzqM1Yg(~$gkh@rHQ{a6Jz_X zgivOqO~|NjTE~46wP8ZfK5V;y944LQYSdI?hnI%iT|gao^{S&qD{;CnyeMZ(9$&FyveBiBSy? z>ynqhNy06J4JTpqu(3Q9O`3kq=`h$pCD3Jz036lgV=R?~oAi^_V9CRq(bI;@i_hsBECN!)(CZ{}c>$wO-|&N^s0*5%X_}1DHjLkY zz*0r!n?#_wyRl=8EF_o9O8uZ_!6dD4=dBH+chV-JAzs%<*kEAp#g4vkT8EU-tOf8hY33^SfOFu24%*r>%a?ecqdR@t0mBwJ|voTpKM>EG|8@gmv;=HSO3D?DLMYywqzHu`X=5Mt4(d z>a*kFYU)#%IpREWpK$4s$`EZkB)a2vsL$yn?VdmD4$Q!}uclrhRgAec zrCEB{{Z^SpMdsPa`&d&hm;eB6CJz)H41CNSIXIX7mslp@Vh&QV%L%{}6016y^+ z-n)ifUR5bd6EUUCOxuCWmbVDEQ^f%+s4RR~K#lb3AW9Vs`m~>busmajr zeF_u#Ap?o9$Y(CGxT-}K_ABoUrNT;N@;Fnt5szYP8QFaM+35X7?|WaeurRz54wz={ z?MQ6fbXYwJ+$l5BC|au$l9W5M&vll(OqjMbuu~|uU4(0q_EdA>U>_J&>g#Tg#x|7> zbifvQx#kotG&6wRFF@;X$l#{RWjL>zykW`_dti4-PwfNhwwgiQg9@zx3T5p zlbH=VBrkKA*d~-zN>6HN^RJwvaE#SNZ&c4urw83A=oObx(@}M=7n!T7m(g)XYC4x3 z8m|ourlg5T1V!T0aH}~V_HuebmA~rcv!0&zR1=o7CQ8FEHs|9^5dd#XdHVU z*~UQF(W=qLULvs9M_AV&|2Mtj&*gpptNAg*9{?bT9rQnsAA$MtCDr*ulB~3C3`|eh zJup!;TX}Hvzj{%qfxalqPAZ;#yf^9aN$3Y6d?w!IgFn4L|FXPvnw$y)P`kzstJyRxR|=XlxDz zWkGS-B7>}pjs6JJ{rHzAm{gbG%c1o|^qV zH=lIo6O`WwuGQS9)ke#Ge}u+-m)y2>^pn}>oll!yce-X_KXDbnYe-=w-09MP%yt~g zg3TJi!r@R#4pmk0(`T}_&?n_9HJSK=E3Vqn3_n+!A#T5&;G{o;HXQJ z)vJgdD!dkjcjDpuBw2j^J4?FvBcBc-IVdq)t%}NnUN_gLeHz(S7JPF@^>JBq7)*e! zX{xoyXqX+5NC+xIFG5$BlP;(!8mo-PAZa5-WW*PqKp{A??X*3pIJ@a zVY1{x+&8p4Dq9tw0a97i7iSWaweChwb5Ps*CEs??bBD%WSiN0nuZt+iUINo}Tp!UT z2j`2595$7>KKDht^Kp<~vN+e=H7BnLC~Uv?+XxJzmd0%S=$OgU>#q?^pP8~u!fjp()5X`~&TXgW4HYb4@i znH-TX=$`C-6%zJWwhdO+s~O_$!q06r<`y2p?A2om8W8qZvI$mxTT|5y9M68>oxVjx z)M$C#ReF%|S>hYmH<71%X&(vh1_pGe`-9f)I$>MD*qg37r1OHPDgZk!|7)EEpr()n zTNv3H1KS88!#LmoW{5qje=axm@8N@M;zfY&&t7~W#!)7fgw~QK`(Wk1s;K4*8UfbX zSxI9}ii&fh%bRzPcnMz!tWsmIQu<-A-Isuhd~l90<7mJo;5AU!i1EZ9wSWM2C^<-X zS8aHZD)?2;gv0{loPA)deOJ}=;CXERREN1k^{n}PK1U@jLBe%^_j?UX_ccpES5ra8 zJMo*Y`sYe%psNAfq1B>keoi}6^?T;&D$*%klD|E8DMqt}NHzeMM z{h{&sPKEh95w_cfz5tb58W7l2p73^O0^#=+*mSbGfT26U=;7_p@8$P5+TRoKJL0#d z*8tkL+b{@k_xAz6AhHLz{4eN3689JSKS}^NV*o__WiU}6LPVJJaGO7eR#NP+Ei4Rq~v|6I4s#p4JVel!K!5$b`B zOf0yGcdF}&2~7;RiIth9KvGr$U}Fv$Nu$ zqkHx0740iVT1y)vI(l|?b_f{;1{xp)jjfY~ovtH|g)PZe zZ^unc40+KXe?RhNZuQ5DENp3S^GFNW!=!W6wW6b^1=0P7NK#V&9?jhRw=r$)&u(cC%0J8L>i2e&gLJk1S{Fan~{vUL#>}||$3)%qK zD{Tfg2cp;lr9l7NyjcBGM}J8G@BoO!NcTsj0APxTA^)tjTN*!G_cDjHG zPcgyg_Vy+Q9AG9ULk1Q`b{ck8b`Xso3loTj4cNs@qsPPmHl)`F42d!8-je-m+<(xO z0qm!mSm>GwTI$I~SeoDV2v)i_wzoTI zxQTyq+OMq@(qL~{mBZxE8iACU36LkCT0wg3%=$D2AOn3GCOu|d8a-W*9*sT|o1Pwn z9^3zG?`nG7wt?uqfd4}fAV~JmnxZI?T(}0-m5mf=(E#Z!xwy8R8Zg$W)@eR|ecnjs z$}`*zQuI2$?T8#w!{{a;bjf8Z3 zxjfr;xBhTAB_oKZqk^=07pv1Jg8`!{+~LAjQS@h%_1 z7yT_HA12VZl1gS%TEWAfFW?~M>zbS-_k-DXbG;+h<f5-RCDo^%K$$Ya}}V*y}FwIe%wB!j#BBMF4^p?PulDXmtXdFnf7)WEBsGgyPMD<+c+`zKU~LE zp*r48e&|I-;fOkueot=iWuDkdxU2*VStbiLDr4TRa�@$UJQ}xU4n~+czN#bOf5q zaO^RgUx>s?&D%vwN3EI6f+GeS04~D|%W|=CVj!D!g6r`54gz zY;SnG7=xTkX;2A>c4ZYaJA>o|^w3;i>8s3Er4MDMFTgUQuPYp#$7S=w<#6D;6SB&K zO=am&;;-JsOuqkeSQ*;hH|W zF7UE%VV%eEYAK5{rok=lXsgfr`YbLjSP!M`Ey(?GQ6TG!f1)?Ex4zT|nU}F;OH{jA zJHSRR3v{C**B8LelgYeX59v9jj4f~+#mrU}*o!lLWli5>*n8kAMB>sHGMCF>18LK$wz!~C z^aYk=?-mM)O|}X>%Rd{pHYR&ta6k~zvuIb*-2g&{1e?n;UjqY$^k)!K7~;m@`j7&o zuhkBDQMSXRrN7{sN|_gI9b9I6tOk9GV&nRvpfmhjW=okrEQZMD=dnkWbN1HLcP^oi zZak2(nEAcOg$QEJ`%WO|V)enGNo8smc!K(d+JFE-{XlJ?en1vbKTsR=ZlIW`vCun$ z=0?Rt#YDx#!2%i!8Vec=8Vkt+iU*1ZiU%ngv{qI;P&`mPP&`N$P&`mPP&`P{p!I>` zf#QMUf#N~3fZ~DTf#N}m2CWYi4-^j+4-^lQ1r!ey4-^klG-!RGc%XQoc%XQYETDLx zc%XQYqT$>1!KqvC4{bLA%hv1tmzK`aPk(LR%o?1!v#aK&u59BLHZB?$7CtPNWoT@* zs^+s$xJ9#AndQ literal 0 HcmV?d00001 diff --git a/tidal-link/link/AbletonLinkConfig.cmake b/tidal-link/link/AbletonLinkConfig.cmake index 43b66e7d3..b036deb17 100644 --- a/tidal-link/link/AbletonLinkConfig.cmake +++ b/tidal-link/link/AbletonLinkConfig.cmake @@ -36,6 +36,11 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") INTERFACE_COMPILE_DEFINITIONS LINK_PLATFORM_LINUX=1 ) + set_property(TARGET Ableton::Link APPEND PROPERTY + INTERFACE_LINK_LIBRARIES + atomic + pthread + ) endif() include(${CMAKE_CURRENT_LIST_DIR}/cmake_include/AsioStandaloneConfig.cmake) diff --git a/tidal-link/link/CMakeLists.txt b/tidal-link/link/CMakeLists.txt index 5924722da..52187f572 100644 --- a/tidal-link/link/CMakeLists.txt +++ b/tidal-link/link/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(Link) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -22,6 +22,8 @@ if(WIN32) option(LINK_BUILD_VLD "Build with VLD support (VLD must be installed separately)" OFF) endif() +option(LINK_BUILD_TESTS "Build unit test binaries" ON) + # ____ _ _ # | _ \ __ _| |_| |__ ___ # | |_) / _` | __| '_ \/ __| @@ -36,7 +38,9 @@ include(AbletonLinkConfig.cmake) include(extensions/abl_link/abl_link.cmake) add_subdirectory(include) +if(LINK_BUILD_TESTS) add_subdirectory(src) +endif() add_subdirectory(examples) add_subdirectory(extensions/abl_link) diff --git a/tidal-link/link/README.md b/tidal-link/link/README.md index ee2c6b1d9..094c2f997 100644 --- a/tidal-link/link/README.md +++ b/tidal-link/link/README.md @@ -108,7 +108,7 @@ implementations. Please see: [platforms/darwin/Clock.hpp](include/ableton/platforms/darwin/Clock.hpp) - Windows clock implementation in [platforms/windows/Clock.hpp](include/ableton/platforms/windows/Clock.hpp) -- C++ standard library `std::chrono::high_resolution_clock`-based implementation in +- C++ standard library `std::chrono::steady_clock`-based implementation in [platforms/stl/Clock.hpp](include/ableton/platforms/stl/Clock.hpp) Using the system time correctly in the context of an audio callback gets a little diff --git a/tidal-link/link/ci/build.py b/tidal-link/link/ci/build.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/check-formatting.py b/tidal-link/link/ci/check-formatting.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/configure.py b/tidal-link/link/ci/configure.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/run-tests.py b/tidal-link/link/ci/run-tests.py old mode 100644 new mode 100755 diff --git a/tidal-link/link/ci/run_valgrind_tests.sh b/tidal-link/link/ci/run_valgrind_tests.sh old mode 100644 new mode 100755 diff --git a/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake b/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake index 63bdfec57..ec6cd55e3 100644 --- a/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake +++ b/tidal-link/link/cmake_include/ConfigureCompileFlags.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) set(build_flags_COMMON_LIST) set(build_flags_DEBUG_LIST) @@ -128,6 +128,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC) "/wd4868" # Compiler may not enforce left-to-right evaluation order in braced initializer list "/wd5026" # Move constructor was implicitly defined as deleted "/wd5027" # Move assignment operator was implicitly defined as deleted + "/wd5262" # implicit fall-through + "/wd5264" # 'variable-name': 'const' variable is not used ) endif() diff --git a/tidal-link/link/examples/CMakeLists.txt b/tidal-link/link/examples/CMakeLists.txt index f75b00b1b..775b1dfd0 100644 --- a/tidal-link/link/examples/CMakeLists.txt +++ b/tidal-link/link/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(LinkExamples) # _ ____ ___ ___ @@ -11,7 +11,7 @@ project(LinkExamples) if(WIN32) function(configure_asio asio_sdk_path_OUT) # ASIO-related path/file variables - set(asio_download_root "https:/download.steinberg.net/sdk_downloads") + set(asio_download_root "https://download.steinberg.net/sdk_downloads") set(asio_file_name "asiosdk_2.3.3_2019-06-14.zip") set(asio_dir_name "asiosdk_2.3.3_2019-06-14") set(asio_working_dir "${CMAKE_BINARY_DIR}/modules") @@ -96,10 +96,6 @@ source_group("Audio Sources" FILES ${linkhut_audio_SOURCES}) # function(configure_linkhut_executable target) - if(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") - target_link_libraries(${target} atomic pthread) - endif() - target_link_libraries(${target} Ableton::Link) endfunction() diff --git a/tidal-link/link/examples/esp32/.gitignore b/tidal-link/link/examples/esp32/.gitignore index d054d8439..38c3a5f9e 100644 --- a/tidal-link/link/examples/esp32/.gitignore +++ b/tidal-link/link/examples/esp32/.gitignore @@ -1,3 +1,4 @@ build sdkconfig sdkconfig.old +managed_components diff --git a/tidal-link/link/examples/esp32/main/idf_component.yml b/tidal-link/link/examples/esp32/main/idf_component.yml new file mode 100644 index 000000000..75eccbfe8 --- /dev/null +++ b/tidal-link/link/examples/esp32/main/idf_component.yml @@ -0,0 +1,17 @@ +## IDF Component Manager Manifest File +dependencies: + espressif/asio: "*" + ## Required IDF version + idf: + version: ">=4.1.0" + # # Put list of dependencies here + # # For components maintained by Espressif: + # component: "~1.0.0" + # # For 3rd party components: + # username/component: ">=1.0.0,<2.0.0" + # username2/component2: + # version: "~1.0.0" + # # For transient dependencies `public` flag can be set. + # # `public` flag doesn't have an effect dependencies of the `main` component. + # # All dependencies of `main` are public by default. + # public: true diff --git a/tidal-link/link/examples/esp32/main/main.cpp b/tidal-link/link/examples/esp32/main/main.cpp index b44f45923..0a5c56ba2 100644 --- a/tidal-link/link/examples/esp32/main/main.cpp +++ b/tidal-link/link/examples/esp32/main/main.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include @@ -21,38 +21,6 @@ char* if_indextoname(unsigned int ifIndex, char* ifName) return nullptr; } -void IRAM_ATTR timer_group0_isr(void* userParam) -{ - static BaseType_t xHigherPriorityTaskWoken = pdFALSE; - - TIMERG0.int_clr_timers.t0 = 1; - TIMERG0.hw_timer[0].config.alarm_en = 1; - - xSemaphoreGiveFromISR(userParam, &xHigherPriorityTaskWoken); - if (xHigherPriorityTaskWoken) - { - portYIELD_FROM_ISR(); - } -} - -void timerGroup0Init(int timerPeriodUS, void* userParam) -{ - timer_config_t config = {.alarm_en = TIMER_ALARM_EN, - .counter_en = TIMER_PAUSE, - .intr_type = TIMER_INTR_LEVEL, - .counter_dir = TIMER_COUNT_UP, - .auto_reload = TIMER_AUTORELOAD_EN, - .divider = 80}; - - timer_init(TIMER_GROUP_0, TIMER_0, &config); - timer_set_counter_value(TIMER_GROUP_0, TIMER_0, 0); - timer_set_alarm_value(TIMER_GROUP_0, TIMER_0, timerPeriodUS); - timer_enable_intr(TIMER_GROUP_0, TIMER_0); - timer_isr_register(TIMER_GROUP_0, TIMER_0, &timer_group0_isr, userParam, 0, nullptr); - - timer_start(TIMER_GROUP_0, TIMER_0); -} - void printTask(void* userParam) { auto link = static_cast(userParam); @@ -73,7 +41,6 @@ void printTask(void* userParam) void tickTask(void* userParam) { - SemaphoreHandle_t handle = static_cast(userParam); ableton::Link link(120.0f); link.enable(true); @@ -86,12 +53,10 @@ void tickTask(void* userParam) while (true) { - xSemaphoreTake(handle, portMAX_DELAY); - const auto state = link.captureAudioSessionState(); const auto phase = state.phaseAtTime(link.clock().micros(), 1.); gpio_set_level(LED, fmodf(phase, 1.) < 0.1); - portYIELD(); + vTaskDelay(1); } } @@ -102,8 +67,5 @@ extern "C" void app_main() ESP_ERROR_CHECK(esp_event_loop_create_default()); ESP_ERROR_CHECK(example_connect()); - SemaphoreHandle_t tickSemphr = xSemaphoreCreateBinary(); - timerGroup0Init(100, tickSemphr); - - xTaskCreate(tickTask, "tick", 8192, tickSemphr, configMAX_PRIORITIES - 1, nullptr); + xTaskCreate(tickTask, "tick", 8192, nullptr, configMAX_PRIORITIES - 1, nullptr); } diff --git a/tidal-link/link/examples/esp32/sdkconfig.defaults b/tidal-link/link/examples/esp32/sdkconfig.defaults index 75ebeae1c..33b93f576 100644 --- a/tidal-link/link/examples/esp32/sdkconfig.defaults +++ b/tidal-link/link/examples/esp32/sdkconfig.defaults @@ -1 +1,3 @@ CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y + diff --git a/tidal-link/link/extensions/abl_link/abl_link.cmake b/tidal-link/link/extensions/abl_link/abl_link.cmake index 00efd1ee2..8e52a063b 100644 --- a/tidal-link/link/extensions/abl_link/abl_link.cmake +++ b/tidal-link/link/extensions/abl_link/abl_link.cmake @@ -13,7 +13,3 @@ target_include_directories(abl_link PUBLIC set_property(TARGET abl_link PROPERTY C_STANDARD 11) target_link_libraries(abl_link Ableton::Link) - -if(CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD|GNU") - target_link_libraries(abl_link atomic pthread) -endif() diff --git a/tidal-link/link/include/CMakeLists.txt b/tidal-link/link/include/CMakeLists.txt index 1c7b5ed96..2cf37b8f0 100644 --- a/tidal-link/link/include/CMakeLists.txt +++ b/tidal-link/link/include/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.5) project(LinkCore) # ____ @@ -19,6 +19,7 @@ set(link_core_HEADERS ${link_core_DIR}/LinearRegression.hpp ${link_core_DIR}/Measurement.hpp ${link_core_DIR}/MeasurementEndpointV4.hpp + ${link_core_DIR}/MeasurementEndpointV6.hpp ${link_core_DIR}/MeasurementService.hpp ${link_core_DIR}/Median.hpp ${link_core_DIR}/NodeId.hpp @@ -49,8 +50,9 @@ set(link_core_HEADERS set(link_discovery_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ableton/discovery) set(link_discovery_HEADERS + ${link_discovery_DIR}/AsioTypes.hpp ${link_discovery_DIR}/InterfaceScanner.hpp - ${link_discovery_DIR}/IpV4Interface.hpp + ${link_discovery_DIR}/IpInterface.hpp ${link_discovery_DIR}/MessageTypes.hpp ${link_discovery_DIR}/NetworkByteStreamSerializable.hpp ${link_discovery_DIR}/Payload.hpp @@ -77,7 +79,6 @@ set(link_platform_HEADERS ${link_platform_DIR}/asio/Context.hpp ${link_platform_DIR}/asio/LockFreeCallbackDispatcher.hpp ${link_platform_DIR}/asio/Socket.hpp - ${link_platform_DIR}/asio/Util.hpp ) if(ESP_PLATFORM) diff --git a/tidal-link/link/include/ableton/Link.ipp b/tidal-link/link/include/ableton/Link.ipp index f8cbce832..28fb1e471 100644 --- a/tidal-link/link/include/ableton/Link.ipp +++ b/tidal-link/link/include/ableton/Link.ipp @@ -225,19 +225,33 @@ inline void BasicLink::SessionState::requestBeatAtTime( forceBeatAtTime(beat, time, quantum); } -template -inline void BasicLink::SessionState::forceBeatAtTime( - const double beat, const std::chrono::microseconds time, const double quantum) +inline void forceBeatAtTimeImpl(link::Timeline& timeline, + const link::Beats beat, + const std::chrono::microseconds time, + const link::Beats quantum) { // There are two components to the beat adjustment: a phase shift // and a beat magnitude adjustment. - const auto curBeatAtTime = link::Beats{beatAtTime(time, quantum)}; - const auto closestInPhase = - link::closestPhaseMatch(curBeatAtTime, link::Beats{beat}, link::Beats{quantum}); - mState.timeline = shiftClientTimeline(mState.timeline, closestInPhase - curBeatAtTime); + const auto curBeatAtTime = link::toPhaseEncodedBeats(timeline, time, quantum); + const auto closestInPhase = link::closestPhaseMatch(curBeatAtTime, beat, quantum); + timeline = shiftClientTimeline(timeline, closestInPhase - curBeatAtTime); // Now adjust the magnitude - mState.timeline.beatOrigin = - mState.timeline.beatOrigin + (link::Beats{beat} - closestInPhase); + timeline.beatOrigin = timeline.beatOrigin + beat - closestInPhase; +} + +template +inline void BasicLink::SessionState::forceBeatAtTime( + const double beat, std::chrono::microseconds time, const double quantum) +{ + forceBeatAtTimeImpl(mState.timeline, link::Beats{beat}, time, link::Beats{quantum}); + + // Due to quantization errors the resulting BeatTime at 'time' after forcing can be + // bigger than 'beat' which then violates intended behavior of the API and can lead + // i.e. to missing a downbeat. Thus we have to shift the timeline forwards. + if (beatAtTime(time, quantum) > beat) + { + forceBeatAtTimeImpl(mState.timeline, link::Beats{beat}, ++time, link::Beats{quantum}); + } } template diff --git a/tidal-link/link/include/ableton/platforms/asio/Util.hpp b/tidal-link/link/include/ableton/discovery/AsioTypes.hpp similarity index 61% rename from tidal-link/link/include/ableton/platforms/asio/Util.hpp rename to tidal-link/link/include/ableton/discovery/AsioTypes.hpp index b974c10cc..fe0e9a7a3 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Util.hpp +++ b/tidal-link/link/include/ableton/discovery/AsioTypes.hpp @@ -1,4 +1,4 @@ -/* Copyright 2016, Ableton AG, Berlin. All rights reserved. +/* Copyright 2023, Ableton AG, Berlin. All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,16 +19,19 @@ #pragma once -#include +#include namespace ableton { -namespace platforms -{ -namespace asio +namespace discovery { -// Utility for making v4 or v6 ip addresses from raw bytes in network byte-order +using IpAddress = LINK_ASIO_NAMESPACE::ip::address; +using IpAddressV4 = LINK_ASIO_NAMESPACE::ip::address_v4; +using IpAddressV6 = LINK_ASIO_NAMESPACE::ip::address_v6; +using UdpSocket = LINK_ASIO_NAMESPACE::ip::udp::socket; +using UdpEndpoint = LINK_ASIO_NAMESPACE::ip::udp::endpoint; + template AsioAddrType makeAddress(const char* pAddr) { @@ -38,6 +41,14 @@ AsioAddrType makeAddress(const char* pAddr) return AsioAddrType{bytes}; } -} // namespace asio -} // namespace platforms +template +AsioAddrType makeAddress(const char* pAddr, uint32_t scopeId) +{ + using namespace std; + typename AsioAddrType::bytes_type bytes; + copy(pAddr, pAddr + bytes.size(), begin(bytes)); + return AsioAddrType{bytes, scopeId}; +} + +} // namespace discovery } // namespace ableton diff --git a/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp b/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp index cb3adad56..c3a37f2b9 100644 --- a/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp +++ b/tidal-link/link/include/ableton/discovery/InterfaceScanner.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -29,7 +29,7 @@ namespace ableton namespace discovery { -// Callback takes a range of asio::ip:address which is +// Callback takes a range of IpAddress which is // guaranteed to be sorted and unique template class InterfaceScanner @@ -64,7 +64,7 @@ class InterfaceScanner using namespace std; debug(mIo->log()) << "Scanning network interfaces"; // Rescan the hardware for available network interface addresses - vector addrs = mIo->scanNetworkInterfaces(); + vector addrs = mIo->scanNetworkInterfaces(); // Sort and unique them to guarantee consistent comparison sort(begin(addrs), end(addrs)); addrs.erase(unique(begin(addrs), end(addrs)), end(addrs)); diff --git a/tidal-link/link/include/ableton/discovery/IpV4Interface.hpp b/tidal-link/link/include/ableton/discovery/IpInterface.hpp similarity index 73% rename from tidal-link/link/include/ableton/discovery/IpV4Interface.hpp rename to tidal-link/link/include/ableton/discovery/IpInterface.hpp index 9967f5125..00a59db4c 100644 --- a/tidal-link/link/include/ableton/discovery/IpV4Interface.hpp +++ b/tidal-link/link/include/ableton/discovery/IpInterface.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include namespace ableton @@ -27,9 +27,17 @@ namespace ableton namespace discovery { -inline asio::ip::udp::endpoint multicastEndpoint() +inline UdpEndpoint multicastEndpointV4() { - return {asio::ip::address_v4::from_string("224.76.78.75"), 20808}; + return {IpAddressV4::from_string("224.76.78.75"), 20808}; +} + +inline UdpEndpoint multicastEndpointV6(uint64_t scopeId) +{ + // This is a non-permanently-assigned link-local multicast address (RFC4291) + return { + ::LINK_ASIO_NAMESPACE::ip::make_address("ff12::8080%" + std::to_string(scopeId)), + 20808}; } // Type tags for dispatching between unicast and multicast packets @@ -41,22 +49,22 @@ struct UnicastTag }; template -class IpV4Interface +class IpInterface { public: using Socket = typename util::Injected::type::template Socket; - IpV4Interface(util::Injected io, const asio::ip::address_v4& addr) + IpInterface(util::Injected io, const IpAddress& addr) : mIo(std::move(io)) , mMulticastReceiveSocket(mIo->template openMulticastSocket(addr)) , mSendSocket(mIo->template openUnicastSocket(addr)) { } - IpV4Interface(const IpV4Interface&) = delete; - IpV4Interface& operator=(const IpV4Interface&) = delete; + IpInterface(const IpInterface&) = delete; + IpInterface& operator=(const IpInterface&) = delete; - IpV4Interface(IpV4Interface&& rhs) + IpInterface(IpInterface&& rhs) : mIo(std::move(rhs.mIo)) , mMulticastReceiveSocket(std::move(rhs.mMulticastReceiveSocket)) , mSendSocket(std::move(rhs.mSendSocket)) @@ -65,7 +73,7 @@ class IpV4Interface std::size_t send( - const uint8_t* const pData, const size_t numBytes, const asio::ip::udp::endpoint& to) + const uint8_t* const pData, const size_t numBytes, const UdpEndpoint& to) { return mSendSocket.send(pData, numBytes, to); } @@ -83,7 +91,7 @@ class IpV4Interface SocketReceiver(std::move(handler))); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { return mSendSocket.endpoint(); } @@ -98,8 +106,7 @@ class IpV4Interface } template - void operator()( - const asio::ip::udp::endpoint& from, const It messageBegin, const It messageEnd) + void operator()(const UdpEndpoint& from, const It messageBegin, const It messageEnd) { mHandler(Tag{}, from, messageBegin, messageEnd); } @@ -113,8 +120,8 @@ class IpV4Interface }; template -IpV4Interface makeIpV4Interface( - util::Injected io, const asio::ip::address_v4& addr) +IpInterface makeIpInterface( + util::Injected io, const IpAddress& addr) { return {std::move(io), addr}; } diff --git a/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp b/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp index 49a119530..6a39bba92 100644 --- a/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp +++ b/tidal-link/link/include/ableton/discovery/NetworkByteStreamSerializable.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #if defined(LINK_PLATFORM_MACOSX) #include #elif defined(LINK_PLATFORM_LINUX) diff --git a/tidal-link/link/include/ableton/discovery/Payload.hpp b/tidal-link/link/include/ableton/discovery/Payload.hpp index 1d48caa7e..f29467288 100644 --- a/tidal-link/link/include/ableton/discovery/Payload.hpp +++ b/tidal-link/link/include/ableton/discovery/Payload.hpp @@ -82,6 +82,11 @@ struct PayloadEntry template friend It toNetworkByteStream(const PayloadEntry& entry, It out) { + // Don't serialize Entry if its value is of size zero + if (sizeInByteStream(entry.value) == 0) + { + return out; + } return toNetworkByteStream( entry.value, toNetworkByteStream(entry.header, std::move(out))); } diff --git a/tidal-link/link/include/ableton/discovery/PeerGateway.hpp b/tidal-link/link/include/ableton/discovery/PeerGateway.hpp index db434394c..6b4db27c1 100644 --- a/tidal-link/link/include/ableton/discovery/PeerGateway.hpp +++ b/tidal-link/link/include/ableton/discovery/PeerGateway.hpp @@ -216,7 +216,7 @@ PeerGateway makePeerGateway( // IpV4 gateway types template using IpV4Messenger = UdpMessenger< - IpV4Interface::type&, v1::kMaxMessageSize>, + IpInterface::type&, v1::kMaxMessageSize>, StateQuery, IoContext>; @@ -226,11 +226,11 @@ using IpV4Gateway = PeerObserver, IoContext>; -// Factory function to bind a PeerGateway to an IpV4Interface with the given address. +// Factory function to bind a PeerGateway to an IpInterface with the given address. template IpV4Gateway makeIpV4Gateway( util::Injected io, - const asio::ip::address_v4& addr, + const IpAddress& addr, util::Injected observer, NodeState state) { @@ -240,7 +240,7 @@ IpV4Gateway makeIpV4Gateway( const uint8_t ttl = 5; const uint8_t ttlRatio = 20; - auto iface = makeIpV4Interface(injectRef(*io), addr); + auto iface = makeIpInterface(injectRef(*io), addr); auto messenger = makeUdpMessenger( injectVal(std::move(iface)), std::move(state), injectRef(*io), ttl, ttlRatio); diff --git a/tidal-link/link/include/ableton/discovery/PeerGateways.hpp b/tidal-link/link/include/ableton/discovery/PeerGateways.hpp index bdefbaef2..959d7fd29 100644 --- a/tidal-link/link/include/ableton/discovery/PeerGateways.hpp +++ b/tidal-link/link/include/ableton/discovery/PeerGateways.hpp @@ -19,8 +19,8 @@ #pragma once +#include #include -#include #include namespace ableton @@ -28,16 +28,17 @@ namespace ableton namespace discovery { -// GatewayFactory must have an operator()(NodeState, IoRef, asio::ip::address) +// GatewayFactory must have an operator()(NodeState, IoRef, IpAddress) // that constructs a new PeerGateway on a given interface address. template class PeerGateways { public: using IoType = typename util::Injected::type; - using Gateway = typename std::result_of, asio::ip::address)>::type; - using GatewayMap = std::map; + using Gateway = decltype(std::declval()(std::declval(), + std::declval>(), + std::declval())); + using GatewayMap = std::map; PeerGateways(const std::chrono::seconds rescanPeriod, NodeState state, @@ -86,7 +87,7 @@ class PeerGateways // If a gateway has become non-responsive or is throwing exceptions, // this method can be invoked to either fix it or discard it. - void repairGateway(const asio::ip::address& gatewayAddr) + void repairGateway(const IpAddress& gatewayAddr) { if (mpScannerCallback->mGateways.erase(gatewayAddr)) { @@ -111,18 +112,18 @@ class PeerGateways { using namespace std; // Get the set of current addresses. - vector curAddrs; + vector curAddrs; curAddrs.reserve(mGateways.size()); transform(std::begin(mGateways), std::end(mGateways), back_inserter(curAddrs), [](const typename GatewayMap::value_type& vt) { return vt.first; }); // Now use set_difference to determine the set of addresses that // are new and the set of cur addresses that are no longer there - vector newAddrs; + vector newAddrs; set_difference(std::begin(range), std::end(range), std::begin(curAddrs), std::end(curAddrs), back_inserter(newAddrs)); - vector staleAddrs; + vector staleAddrs; set_difference(std::begin(curAddrs), std::end(curAddrs), std::begin(range), std::end(range), back_inserter(staleAddrs)); @@ -137,12 +138,8 @@ class PeerGateways { try { - // Only handle v4 for now - if (addr.is_v4()) - { - info(mIo.log()) << "initializing peer gateway on interface " << addr; - mGateways.emplace(addr, mFactory(mState, util::injectRef(mIo), addr.to_v4())); - } + info(mIo.log()) << "initializing peer gateway on interface " << addr; + mGateways.emplace(addr, mFactory(mState, util::injectRef(mIo), addr)); } catch (const runtime_error& e) { diff --git a/tidal-link/link/include/ableton/discovery/Service.hpp b/tidal-link/link/include/ableton/discovery/Service.hpp index 8898fce43..678811d96 100644 --- a/tidal-link/link/include/ableton/discovery/Service.hpp +++ b/tidal-link/link/include/ableton/discovery/Service.hpp @@ -59,7 +59,7 @@ class Service // Repair the gateway with the given address if possible. Its // sockets may have been closed, for example, and the gateway needs // to be regenerated. - void repairGateway(const asio::ip::address& gatewayAddr) + void repairGateway(const IpAddress& gatewayAddr) { mGateways.repairGateway(gatewayAddr); } diff --git a/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp b/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp index c15c6943a..cca36ae4c 100644 --- a/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp +++ b/tidal-link/link/include/ableton/discovery/UdpMessenger.hpp @@ -19,10 +19,10 @@ #pragma once -#include +#include +#include #include #include -#include #include #include #include @@ -37,15 +37,23 @@ namespace discovery // interface through which the sending failed. struct UdpSendException : std::runtime_error { - UdpSendException(const std::runtime_error& e, asio::ip::address ifAddr) + UdpSendException(const std::runtime_error& e, IpAddress ifAddr) : std::runtime_error(e.what()) , interfaceAddr(std::move(ifAddr)) { } - asio::ip::address interfaceAddr; + IpAddress interfaceAddr; }; +template +UdpEndpoint ipV6Endpoint(Interface& iface, const UdpEndpoint& endpoint) +{ + auto v6Address = endpoint.address().to_v6(); + v6Address.scope_id(iface.endpoint().address().to_v6().scope_id()); + return {v6Address, endpoint.port()}; +} + // Throws UdpSendException template void sendUdpMessage(Interface& iface, @@ -53,7 +61,7 @@ void sendUdpMessage(Interface& iface, const uint8_t ttl, const v1::MessageType messageType, const Payload& payload, - const asio::ip::udp::endpoint& to) + const UdpEndpoint& to) { using namespace std; v1::MessageBuffer buffer; @@ -176,8 +184,16 @@ class UdpMessenger void sendByeBye() { - sendUdpMessage( - *mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), multicastEndpoint()); + if (mInterface->endpoint().address().is_v4()) + { + sendUdpMessage(*mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), + multicastEndpointV4()); + } + if (mInterface->endpoint().address().is_v6()) + { + sendUdpMessage(*mInterface, mState.ident(), 0, v1::kByeBye, makePayload(), + multicastEndpointV6(mInterface->endpoint().address().to_v6().scope_id())); + } } void updateState(NodeState state) @@ -213,21 +229,29 @@ class UdpMessenger if (delay < milliseconds{1}) { debug(mIo->log()) << "Broadcasting state"; - sendPeerState(v1::kAlive, multicastEndpoint()); + if (mInterface->endpoint().address().is_v4()) + { + sendPeerState(v1::kAlive, multicastEndpointV4()); + } + if (mInterface->endpoint().address().is_v6()) + { + sendPeerState(v1::kAlive, + multicastEndpointV6(mInterface->endpoint().address().to_v6().scope_id())); + } } } - void sendPeerState( - const v1::MessageType messageType, const asio::ip::udp::endpoint& to) + void sendPeerState(const v1::MessageType messageType, const UdpEndpoint& to) { sendUdpMessage( *mInterface, mState.ident(), mTtl, messageType, toPayload(mState), to); mLastBroadcastTime = mTimer.now(); } - void sendResponse(const asio::ip::udp::endpoint& to) + void sendResponse(const UdpEndpoint& to) { - sendPeerState(v1::kResponse, to); + const auto endpoint = to.address().is_v4() ? to : ipV6Endpoint(*mInterface, to); + sendPeerState(v1::kResponse, endpoint); } template @@ -237,10 +261,8 @@ class UdpMessenger } template - void operator()(Tag tag, - const asio::ip::udp::endpoint& from, - const It messageBegin, - const It messageEnd) + void operator()( + Tag tag, const UdpEndpoint& from, const It messageBegin, const It messageEnd) { auto result = v1::parseMessageHeader(messageBegin, messageEnd); diff --git a/tidal-link/link/include/ableton/discovery/test/Interface.hpp b/tidal-link/link/include/ableton/discovery/test/Interface.hpp index f538856ff..9f11b7527 100644 --- a/tidal-link/link/include/ableton/discovery/test/Interface.hpp +++ b/tidal-link/link/include/ableton/discovery/test/Interface.hpp @@ -31,9 +31,8 @@ namespace test class Interface { public: - void send(const uint8_t* const bytes, - const size_t numBytes, - const asio::ip::udp::endpoint& endpoint) + void send( + const uint8_t* const bytes, const size_t numBytes, const UdpEndpoint& endpoint) { sentMessages.push_back( std::make_pair(std::vector{bytes, bytes + numBytes}, endpoint)); @@ -42,31 +41,30 @@ class Interface template void receive(Callback callback, Tag tag) { - mCallback = [callback, tag](const asio::ip::udp::endpoint& from, - const std::vector& buffer) { + mCallback = [callback, tag]( + const UdpEndpoint& from, const std::vector& buffer) { callback(tag, from, begin(buffer), end(buffer)); }; } template - void incomingMessage( - const asio::ip::udp::endpoint& from, It messageBegin, It messageEnd) + void incomingMessage(const UdpEndpoint& from, It messageBegin, It messageEnd) { std::vector buffer{messageBegin, messageEnd}; mCallback(from, buffer); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { - return asio::ip::udp::endpoint({}, 0); + return UdpEndpoint({}, 0); } - using SentMessage = std::pair, asio::ip::udp::endpoint>; + using SentMessage = std::pair, UdpEndpoint>; std::vector sentMessages; private: using ReceiveCallback = - std::function&)>; + std::function&)>; ReceiveCallback mCallback; }; diff --git a/tidal-link/link/include/ableton/discovery/test/Socket.hpp b/tidal-link/link/include/ableton/discovery/test/Socket.hpp index 2983bcefb..513d1a043 100644 --- a/tidal-link/link/include/ableton/discovery/test/Socket.hpp +++ b/tidal-link/link/include/ableton/discovery/test/Socket.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include @@ -37,12 +37,12 @@ class Socket { } - friend void configureUnicastSocket(Socket&, const asio::ip::address_v4&) + friend void configureUnicastSocket(Socket&, const IpAddressV4&) { } std::size_t send( - const uint8_t* const pData, const size_t numBytes, const asio::ip::udp::endpoint& to) + const uint8_t* const pData, const size_t numBytes, const discovery::UdpEndpoint& to) { sentMessages.push_back( std::make_pair(std::vector{pData, pData + numBytes}, to)); @@ -52,31 +52,29 @@ class Socket template void receive(Handler handler) { - mCallback = [handler](const asio::ip::udp::endpoint& from, - const std::vector& buffer) { + mCallback = [handler](const UdpEndpoint& from, const std::vector& buffer) { handler(from, begin(buffer), end(buffer)); }; } template - void incomingMessage( - const asio::ip::udp::endpoint& from, It messageBegin, It messageEnd) + void incomingMessage(const UdpEndpoint& from, It messageBegin, It messageEnd) { std::vector buffer{messageBegin, messageEnd}; mCallback(from, buffer); } - asio::ip::udp::endpoint endpoint() const + UdpEndpoint endpoint() const { - return asio::ip::udp::endpoint({}, 0); + return UdpEndpoint({}, 0); } - using SentMessage = std::pair, asio::ip::udp::endpoint>; + using SentMessage = std::pair, UdpEndpoint>; std::vector sentMessages; private: using ReceiveCallback = - std::function&)>; + std::function&)>; ReceiveCallback mCallback; }; diff --git a/tidal-link/link/include/ableton/link/Controller.hpp b/tidal-link/link/include/ableton/link/Controller.hpp index 2922f46f0..a0a3c1454 100644 --- a/tidal-link/link/include/ableton/link/Controller.hpp +++ b/tidal-link/link/include/ableton/link/Controller.hpp @@ -717,18 +717,11 @@ class Controller { GatewayPtr operator()(std::pair state, util::Injected io, - const asio::ip::address& addr) + const discovery::IpAddress& addr) { - if (addr.is_v4()) - { - return GatewayPtr{new ControllerGateway{std::move(io), addr.to_v4(), - util::injectVal(makeGatewayObserver(mController.mPeers, addr)), - std::move(state.first), std::move(state.second), mController.mClock}}; - } - else - { - throw std::runtime_error("Could not create peer gateway on non-ipV4 address"); - } + return GatewayPtr{new ControllerGateway{std::move(io), addr, + util::injectVal(makeGatewayObserver(mController.mPeers, addr)), + std::move(state.first), std::move(state.second), mController.mClock}}; } Controller& mController; diff --git a/tidal-link/link/include/ableton/link/Gateway.hpp b/tidal-link/link/include/ableton/link/Gateway.hpp index 16d6abdea..635227285 100644 --- a/tidal-link/link/include/ableton/link/Gateway.hpp +++ b/tidal-link/link/include/ableton/link/Gateway.hpp @@ -33,7 +33,7 @@ class Gateway { public: Gateway(util::Injected io, - asio::ip::address_v4 addr, + discovery::IpAddress addr, util::Injected observer, NodeState nodeState, GhostXForm ghostXForm, diff --git a/tidal-link/link/include/ableton/link/Measurement.hpp b/tidal-link/link/include/ableton/link/Measurement.hpp index 299ca24b6..6867360ae 100644 --- a/tidal-link/link/include/ableton/link/Measurement.hpp +++ b/tidal-link/link/include/ableton/link/Measurement.hpp @@ -45,7 +45,7 @@ struct Measurement Measurement(const PeerState& state, Callback callback, - asio::ip::address_v4 address, + discovery::IpAddress address, Clock clock, util::Injected io) : mIo(std::move(io)) @@ -69,12 +69,11 @@ struct Measurement Impl(const PeerState& state, Callback callback, - asio::ip::address_v4 address, + discovery::IpAddress address, Clock clock, util::Injected io) : mSocket(io->template openUnicastSocket(address)) , mSessionId(state.nodeState.sessionId) - , mEndpoint(state.endpoint) , mCallback(std::move(callback)) , mClock(std::move(clock)) , mTimer(io->makeTimer()) @@ -82,6 +81,17 @@ struct Measurement , mLog(channel(io->log(), "Measurement on gateway@" + address.to_string())) , mSuccess(false) { + if (state.endpoint.address().is_v4()) + { + mEndpoint = state.endpoint; + } + else + { + auto v6Address = state.endpoint.address().to_v6(); + v6Address.scope_id(address.to_v6().scope_id()); + mEndpoint = {v6Address, state.endpoint.port()}; + } + const auto ht = HostTime{mClock.micros()}; sendPing(mEndpoint, discovery::makePayload(ht)); resetTimer(); @@ -117,7 +127,7 @@ struct Measurement // Operator to handle incoming messages on the interface template void operator()( - const asio::ip::udp::endpoint& from, const It messageBegin, const It messageEnd) + const discovery::UdpEndpoint& from, const It messageBegin, const It messageEnd) { using namespace std; const auto result = v1::parseMessageHeader(messageBegin, messageEnd); @@ -197,7 +207,7 @@ struct Measurement } template - void sendPing(asio::ip::udp::endpoint to, const Payload& payload) + void sendPing(discovery::UdpEndpoint to, const Payload& payload) { v1::MessageBuffer buffer; const auto msgBegin = std::begin(buffer); @@ -232,7 +242,7 @@ struct Measurement Socket mSocket; SessionId mSessionId; - asio::ip::udp::endpoint mEndpoint; + discovery::UdpEndpoint mEndpoint; std::vector mData; Callback mCallback; Clock mClock; diff --git a/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp b/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp index 958aad958..fbec55f3c 100644 --- a/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp +++ b/tidal-link/link/include/ableton/link/MeasurementEndpointV4.hpp @@ -19,8 +19,9 @@ #pragma once +#include #include -#include +#include namespace ableton { @@ -35,6 +36,10 @@ struct MeasurementEndpointV4 // Model the NetworkByteStreamSerializable concept friend std::uint32_t sizeInByteStream(const MeasurementEndpointV4 mep) { + if (mep.ep.address().is_v6()) + { + return 0; + } return discovery::sizeInByteStream( static_cast(mep.ep.address().to_v4().to_ulong())) + discovery::sizeInByteStream(mep.ep.port()); @@ -43,6 +48,7 @@ struct MeasurementEndpointV4 template friend It toNetworkByteStream(const MeasurementEndpointV4 mep, It out) { + assert(mep.ep.address().is_v4()); return discovery::toNetworkByteStream(mep.ep.port(), discovery::toNetworkByteStream( static_cast(mep.ep.address().to_v4().to_ulong()), std::move(out))); @@ -58,11 +64,11 @@ struct MeasurementEndpointV4 std::move(addrRes.second), end); return make_pair( MeasurementEndpointV4{ - {asio::ip::address_v4{std::move(addrRes.first)}, std::move(portRes.first)}}, + {discovery::IpAddressV4{std::move(addrRes.first)}, std::move(portRes.first)}}, std::move(portRes.second)); } - asio::ip::udp::endpoint ep; + discovery::UdpEndpoint ep; }; } // namespace link diff --git a/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp b/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp new file mode 100644 index 000000000..6c319ed1f --- /dev/null +++ b/tidal-link/link/include/ableton/link/MeasurementEndpointV6.hpp @@ -0,0 +1,75 @@ +/* Copyright 2023, Ableton AG, Berlin. All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * If you would like to incorporate Link into a proprietary software application, + * please contact . + */ + +#pragma once + +#include +#include +#include + +namespace ableton +{ +namespace link +{ + +struct MeasurementEndpointV6 +{ + static const std::int32_t key = 'mep6'; + static_assert(key == 0x6d657036, "Unexpected byte order"); + + // Model the NetworkByteStreamSerializable concept + friend std::uint32_t sizeInByteStream(const MeasurementEndpointV6 mep) + { + if (mep.ep.address().is_v4()) + { + return 0; + } + return discovery::sizeInByteStream(mep.ep.address().to_v6().to_bytes()) + + discovery::sizeInByteStream(mep.ep.port()); + } + + template + friend It toNetworkByteStream(const MeasurementEndpointV6 mep, It out) + { + assert(mep.ep.address().is_v6()); + return discovery::toNetworkByteStream( + mep.ep.port(), discovery::toNetworkByteStream( + mep.ep.address().to_v6().to_bytes(), std::move(out))); + } + + template + static std::pair fromNetworkByteStream(It begin, It end) + { + using namespace std; + auto addrRes = + discovery::Deserialize::fromNetworkByteStream( + std::move(begin), end); + auto portRes = discovery::Deserialize::fromNetworkByteStream( + std::move(addrRes.second), end); + return make_pair( + MeasurementEndpointV6{ + {discovery::IpAddressV6{std::move(addrRes.first)}, std::move(portRes.first)}}, + std::move(portRes.second)); + } + + discovery::UdpEndpoint ep; +}; + +} // namespace link +} // namespace ableton diff --git a/tidal-link/link/include/ableton/link/MeasurementService.hpp b/tidal-link/link/include/ableton/link/MeasurementService.hpp index 22bf46d52..5ed77ba5f 100644 --- a/tidal-link/link/include/ableton/link/MeasurementService.hpp +++ b/tidal-link/link/include/ableton/link/MeasurementService.hpp @@ -42,7 +42,7 @@ class MeasurementService using IoType = util::Injected; using MeasurementInstance = Measurement; - MeasurementService(asio::ip::address_v4 address, + MeasurementService(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -65,7 +65,7 @@ class MeasurementService mPingResponder.updateNodeState(sessionId, xform); } - asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mPingResponder.endpoint(); } @@ -77,7 +77,7 @@ class MeasurementService using namespace std; const auto nodeId = state.nodeState.nodeId; - auto addr = mPingResponder.endpoint().address().to_v4(); + auto addr = mPingResponder.endpoint().address(); auto callback = CompletionCallback{*this, nodeId, handler}; try diff --git a/tidal-link/link/include/ableton/link/PeerState.hpp b/tidal-link/link/include/ableton/link/PeerState.hpp index 291c27891..1cad18dcf 100644 --- a/tidal-link/link/include/ableton/link/PeerState.hpp +++ b/tidal-link/link/include/ableton/link/PeerState.hpp @@ -21,6 +21,7 @@ #include #include +#include #include namespace ableton @@ -61,12 +62,16 @@ struct PeerState return lhs.nodeState == rhs.nodeState && lhs.endpoint == rhs.endpoint; } - friend auto toPayload(const PeerState& state) - -> decltype(std::declval() - + discovery::makePayload(MeasurementEndpointV4{{}})) + friend auto toPayload(const PeerState& state) -> decltype( + std::declval() + discovery::makePayload(MeasurementEndpointV4{{}}) + + discovery::makePayload(MeasurementEndpointV6{{}})) { + // This implements a switch if either an IPv4 or IPv6 endpoint is serialized. + // MeasurementEndpoints that contain an endpoint that does not match the IP protocol + // version return a sizeInByteStream() of zero and won't be serialized. return toPayload(state.nodeState) - + discovery::makePayload(MeasurementEndpointV4{state.endpoint}); + + discovery::makePayload(MeasurementEndpointV4{state.endpoint}) + + discovery::makePayload(MeasurementEndpointV6{state.endpoint}); } template @@ -75,15 +80,16 @@ struct PeerState using namespace std; auto peerState = PeerState{NodeState::fromPayload(std::move(id), begin, end), {}}; - discovery::parsePayload( - std::move(begin), std::move(end), [&peerState](MeasurementEndpointV4 me4) { - peerState.endpoint = std::move(me4.ep); - }); + discovery::parsePayload( + std::move(begin), std::move(end), + [&peerState](MeasurementEndpointV4 me4) { peerState.endpoint = std::move(me4.ep); }, + [&peerState]( + MeasurementEndpointV6 me6) { peerState.endpoint = std::move(me6.ep); }); return peerState; } NodeState nodeState; - asio::ip::udp::endpoint endpoint; + discovery::UdpEndpoint endpoint; }; } // namespace link diff --git a/tidal-link/link/include/ableton/link/Peers.hpp b/tidal-link/link/include/ableton/link/Peers.hpp index b633ec363..e35670021 100644 --- a/tidal-link/link/include/ableton/link/Peers.hpp +++ b/tidal-link/link/include/ableton/link/Peers.hpp @@ -47,7 +47,7 @@ class Peers struct Impl; public: - using Peer = std::pair; + using Peer = std::pair; Peers(util::Injected io, SessionMembershipCallback membership, @@ -119,7 +119,7 @@ class Peers using GatewayObserverNodeState = PeerState; using GatewayObserverNodeId = NodeId; - GatewayObserver(std::shared_ptr pImpl, asio::ip::address addr) + GatewayObserver(std::shared_ptr pImpl, discovery::IpAddress addr) : mpImpl(std::move(pImpl)) , mAddr(std::move(addr)) { @@ -165,11 +165,11 @@ class Peers } std::shared_ptr mpImpl; - asio::ip::address mAddr; + discovery::IpAddress mAddr; }; // Factory function for the gateway observer - friend GatewayObserver makeGatewayObserver(Peers& peers, asio::ip::address addr) + friend GatewayObserver makeGatewayObserver(Peers& peers, discovery::IpAddress addr) { return GatewayObserver{peers.mpImpl, std::move(addr)}; } @@ -188,7 +188,7 @@ class Peers { } - void sawPeerOnGateway(PeerState peerState, asio::ip::address gatewayAddr) + void sawPeerOnGateway(PeerState peerState, discovery::IpAddress gatewayAddr) { using namespace std; @@ -255,7 +255,7 @@ class Peers } } - void peerLeftGateway(const NodeId& nodeId, const asio::ip::address& gatewayAddr) + void peerLeftGateway(const NodeId& nodeId, const discovery::IpAddress& gatewayAddr) { using namespace std; @@ -276,7 +276,7 @@ class Peers } } - void gatewayClosed(const asio::ip::address& gatewayAddr) + void gatewayClosed(const discovery::IpAddress& gatewayAddr) { using namespace std; diff --git a/tidal-link/link/include/ableton/link/PingResponder.hpp b/tidal-link/link/include/ableton/link/PingResponder.hpp index a8f455fe5..4d107bd8a 100644 --- a/tidal-link/link/include/ableton/link/PingResponder.hpp +++ b/tidal-link/link/include/ableton/link/PingResponder.hpp @@ -40,7 +40,7 @@ class PingResponder using Socket = typename IoType::type::template Socket; public: - PingResponder(asio::ip::address_v4 address, + PingResponder(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -64,12 +64,12 @@ class PingResponder mpImpl->mGhostXForm = std::move(xform); } - asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mpImpl->mSocket.endpoint(); } - asio::ip::address address() const + discovery::IpAddress address() const { return endpoint().address(); } @@ -82,7 +82,7 @@ class PingResponder private: struct Impl : std::enable_shared_from_this { - Impl(asio::ip::address_v4 address, + Impl(discovery::IpAddress address, SessionId sessionId, GhostXForm ghostXForm, Clock clock, @@ -102,7 +102,7 @@ class PingResponder // Operator to handle incoming messages on the interface template - void operator()(const asio::ip::udp::endpoint& from, const It begin, const It end) + void operator()(const discovery::UdpEndpoint& from, const It begin, const It end) { using namespace discovery; @@ -136,7 +136,7 @@ class PingResponder } template - void reply(It begin, It end, const asio::ip::udp::endpoint& to) + void reply(It begin, It end, const discovery::UdpEndpoint& to) { using namespace discovery; diff --git a/tidal-link/link/include/ableton/link/SessionState.hpp b/tidal-link/link/include/ableton/link/SessionState.hpp index 183c8a9c6..616a5b40c 100644 --- a/tidal-link/link/include/ableton/link/SessionState.hpp +++ b/tidal-link/link/include/ableton/link/SessionState.hpp @@ -23,6 +23,7 @@ #include #include #include +#include namespace ableton { diff --git a/tidal-link/link/include/ableton/platforms/Config.hpp b/tidal-link/link/include/ableton/platforms/Config.hpp index 9deba58bd..22f4bd30e 100644 --- a/tidal-link/link/include/ableton/platforms/Config.hpp +++ b/tidal-link/link/include/ableton/platforms/Config.hpp @@ -62,31 +62,33 @@ namespace platform using Clock = platforms::windows::Clock; using Random = platforms::stl::Random; #if defined(LINK_WINDOWS_SETTHREADDESCRIPTION) -using IoContext = platforms::asio::Context; +using IoContext = + platforms::LINK_ASIO_NAMESPACE::Context; #else using IoContext = - platforms::asio::Context; + platforms::LINK_ASIO_NAMESPACE::Context; #endif #elif defined(LINK_PLATFORM_MACOSX) using Clock = platforms::darwin::Clock; -using IoContext = platforms::asio::Context; using Random = platforms::stl::Random; #elif defined(LINK_PLATFORM_LINUX) -using Clock = platforms::linux::ClockMonotonicRaw; +using Clock = platforms::linux_::ClockMonotonicRaw; using Random = platforms::stl::Random; #ifdef __linux__ -using IoContext = platforms::asio::Context; + platforms::linux_::ThreadFactory>; #else using IoContext = - platforms::asio::Context; + platforms::LINK_ASIO_NAMESPACE::Context; #endif #elif defined(ESP_PLATFORM) diff --git a/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp b/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp index e2c71b011..76bca025b 100644 --- a/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/AsioTimer.hpp @@ -27,7 +27,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { // This implementation is based on the boost::asio::system_timer concept. @@ -41,11 +41,14 @@ namespace asio class AsioTimer { public: - using ErrorCode = ::asio::error_code; + using ErrorCode = ::LINK_ASIO_NAMESPACE::error_code; using TimePoint = std::chrono::system_clock::time_point; + using IoService = ::LINK_ASIO_NAMESPACE::io_service; + using SystemTimer = ::LINK_ASIO_NAMESPACE::system_timer; - AsioTimer(::asio::io_service& io) - : mpTimer(new ::asio::system_timer(io)) + + AsioTimer(IoService& io) + : mpTimer(new SystemTimer(io)) , mpAsyncHandler(std::make_shared()) { } @@ -123,10 +126,10 @@ class AsioTimer std::function mpHandler; }; - std::unique_ptr<::asio::system_timer> mpTimer; + std::unique_ptr mpTimer; std::shared_ptr mpAsyncHandler; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp b/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp index 1f3dc4d4e..2ea362a5e 100644 --- a/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/AsioWrapper.hpp @@ -26,12 +26,19 @@ * by Link. */ -#if !defined(ESP_PLATFORM) +#if defined(ESP_PLATFORM) + +#define LINK_ASIO_NAMESPACE asio + +#else + #pragma push_macro("ASIO_STANDALONE") -#define ASIO_STANDALONE 1 #pragma push_macro("ASIO_NO_TYPEID") #define ASIO_NO_TYPEID 1 +#define asio link_asio_1_28_0 +#define LINK_ASIO_NAMESPACE link_asio_1_28_0 +#define ASIO_STANDALONE 1 #endif #if defined(LINK_PLATFORM_WINDOWS) @@ -75,11 +82,6 @@ #pragma pop_macro("INCL_EXTRA_HTON_FUNCTIONS") #endif -#if !defined(ESP_PLATFORM) -#pragma pop_macro("ASIO_STANDALONE") -#pragma pop_macro("ASIO_NO_TYPEID") -#endif - #if defined(_MSC_VER) #pragma warning(pop) #undef _SCL_SECURE_NO_WARNINGS @@ -88,3 +90,5 @@ #if defined(__clang__) #pragma clang diagnostic pop #endif + +#undef asio diff --git a/tidal-link/link/include/ableton/platforms/asio/Context.hpp b/tidal-link/link/include/ableton/platforms/asio/Context.hpp index 7c10a4bc5..f0909df1f 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Context.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/Context.hpp @@ -19,9 +19,8 @@ #pragma once -#include +#include #include -#include #include #include #include @@ -31,7 +30,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { namespace { @@ -51,7 +50,7 @@ template @@ -59,7 +58,9 @@ class Context LockFreeCallbackDispatcher; template - using Socket = asio::Socket; + using Socket = Socket; + using IoService = ::LINK_ASIO_NAMESPACE::io_service; + using Work = IoService::work; Context() : Context(DefaultHandler{}) @@ -68,11 +69,11 @@ class Context template explicit Context(ExceptionHandler exceptHandler) - : mpService(new ::asio::io_service()) - , mpWork(new ::asio::io_service::work(*mpService)) + : mpService(new IoService()) + , mpWork(new Work(*mpService)) { mThread = ThreadFactoryT::makeThread("Link Main", - [](::asio::io_service& service, ExceptionHandler handler) { + [](IoService& service, ExceptionHandler handler) { for (;;) { try @@ -121,34 +122,79 @@ class Context template - Socket openUnicastSocket(const ::asio::ip::address_v4& addr) + Socket openUnicastSocket(const discovery::IpAddress addr) { - auto socket = Socket{*mpService}; + auto socket = + addr.is_v4() ? Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v4()} + : Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v6()}; socket.mpImpl->mSocket.set_option( - ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind(::asio::ip::udp::endpoint{addr, 0}); + ::LINK_ASIO_NAMESPACE::ip::multicast::enable_loopback(addr.is_loopback())); + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v4(), 0}); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface( + static_cast(scopeId))); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v6(), 0}); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } template - Socket openMulticastSocket(const ::asio::ip::address_v4& addr) + Socket openMulticastSocket(const discovery::IpAddress& addr) { - auto socket = Socket{*mpService}; - socket.mpImpl->mSocket.set_option(::asio::ip::udp::socket::reuse_address(true)); + auto socket = + addr.is_v4() ? Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v4()} + : Socket{*mpService, ::LINK_ASIO_NAMESPACE::ip::udp::v6()}; + + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::udp::socket::reuse_address(true)); socket.mpImpl->mSocket.set_option( - ::asio::socket_base::broadcast(!addr.is_loopback())); + ::LINK_ASIO_NAMESPACE::socket_base::broadcast(!addr.is_loopback())); socket.mpImpl->mSocket.set_option( - ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind({::asio::ip::address::from_string("0.0.0.0"), - discovery::multicastEndpoint().port()}); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( - discovery::multicastEndpoint().address().to_v4(), addr)); + ::LINK_ASIO_NAMESPACE::ip::multicast::enable_loopback(addr.is_loopback())); + + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind({::LINK_ASIO_NAMESPACE::ip::address_v4::any(), + discovery::multicastEndpointV4().port()}); + socket.mpImpl->mSocket.set_option(::LINK_ASIO_NAMESPACE::ip::multicast::join_group( + discovery::multicastEndpointV4().address().to_v4(), addr.to_v4())); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::LINK_ASIO_NAMESPACE::ip::multicast::outbound_interface( + static_cast(scopeId))); + const auto multicastEndpoint = discovery::multicastEndpointV6(scopeId); + socket.mpImpl->mSocket.bind( + {::LINK_ASIO_NAMESPACE::ip::address_v6::any(), multicastEndpoint.port()}); + socket.mpImpl->mSocket.set_option(::LINK_ASIO_NAMESPACE::ip::multicast::join_group( + multicastEndpoint.address().to_v6(), scopeId)); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } - std::vector<::asio::ip::address> scanNetworkInterfaces() + std::vector scanNetworkInterfaces() { return mScanIpIfAddrs(); } @@ -184,13 +230,13 @@ class Context } }; - std::unique_ptr<::asio::io_service> mpService; - std::unique_ptr<::asio::io_service::work> mpWork; + std::unique_ptr<::LINK_ASIO_NAMESPACE::io_service> mpService; + std::unique_ptr<::LINK_ASIO_NAMESPACE::io_service::work> mpWork; std::thread mThread; Log mLog; ScanIpIfAddrs mScanIpIfAddrs; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp b/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp index 189a6f7ce..e23574713 100644 --- a/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/LockFreeCallbackDispatcher.hpp @@ -27,7 +27,7 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { // Utility to signal invocation of a callback on another thread in a lock free manner. @@ -83,6 +83,6 @@ class LockFreeCallbackDispatcher std::thread mThread; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/asio/Socket.hpp b/tidal-link/link/include/ableton/platforms/asio/Socket.hpp index 8992f6d00..4fa469230 100644 --- a/tidal-link/link/include/ableton/platforms/asio/Socket.hpp +++ b/tidal-link/link/include/ableton/platforms/asio/Socket.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -28,14 +28,14 @@ namespace ableton { namespace platforms { -namespace asio +namespace LINK_ASIO_NAMESPACE { template struct Socket { - Socket(::asio::io_service& io) - : mpImpl(std::make_shared(io)) + Socket(::LINK_ASIO_NAMESPACE::io_service& io, ::LINK_ASIO_NAMESPACE::ip::udp protocol) + : mpImpl(std::make_shared(io, protocol)) { } @@ -47,12 +47,11 @@ struct Socket { } - std::size_t send(const uint8_t* const pData, - const size_t numBytes, - const ::asio::ip::udp::endpoint& to) + std::size_t send( + const uint8_t* const pData, const size_t numBytes, const discovery::UdpEndpoint& to) { assert(numBytes < MaxPacketSize); - return mpImpl->mSocket.send_to(::asio::buffer(pData, numBytes), to); + return mpImpl->mSocket.send_to(::LINK_ASIO_NAMESPACE::buffer(pData, numBytes), to); } template @@ -60,19 +59,19 @@ struct Socket { mpImpl->mHandler = std::move(handler); mpImpl->mSocket.async_receive_from( - ::asio::buffer(mpImpl->mReceiveBuffer, MaxPacketSize), mpImpl->mSenderEndpoint, - util::makeAsyncSafe(mpImpl)); + ::LINK_ASIO_NAMESPACE::buffer(mpImpl->mReceiveBuffer, MaxPacketSize), + mpImpl->mSenderEndpoint, util::makeAsyncSafe(mpImpl)); } - ::asio::ip::udp::endpoint endpoint() const + discovery::UdpEndpoint endpoint() const { return mpImpl->mSocket.local_endpoint(); } struct Impl { - Impl(::asio::io_service& io) - : mSocket(io, ::asio::ip::udp::v4()) + Impl(::LINK_ASIO_NAMESPACE::io_service& io, ::LINK_ASIO_NAMESPACE::ip::udp protocol) + : mSocket(io, protocol) { } @@ -80,12 +79,13 @@ struct Socket { // Ignore error codes in shutdown and close as the socket may // have already been forcibly closed - ::asio::error_code ec; - mSocket.shutdown(::asio::ip::udp::socket::shutdown_both, ec); + ::LINK_ASIO_NAMESPACE::error_code ec; + mSocket.shutdown(::LINK_ASIO_NAMESPACE::ip::udp::socket::shutdown_both, ec); mSocket.close(ec); } - void operator()(const ::asio::error_code& error, const std::size_t numBytes) + void operator()( + const ::LINK_ASIO_NAMESPACE::error_code& error, const std::size_t numBytes) { if (!error && numBytes > 0 && numBytes <= MaxPacketSize) { @@ -94,17 +94,17 @@ struct Socket } } - ::asio::ip::udp::socket mSocket; - ::asio::ip::udp::endpoint mSenderEndpoint; + discovery::UdpSocket mSocket; + discovery::UdpEndpoint mSenderEndpoint; using Buffer = std::array; Buffer mReceiveBuffer; using ByteIt = typename Buffer::const_iterator; - std::function mHandler; + std::function mHandler; }; std::shared_ptr mpImpl; }; -} // namespace asio +} // namespace LINK_ASIO_NAMESPACE } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp b/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp index dd40ff4b2..3164e68c9 100644 --- a/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp +++ b/tidal-link/link/include/ableton/platforms/darwin/Clock.hpp @@ -19,6 +19,7 @@ #pragma once +#include #include #include @@ -49,6 +50,8 @@ struct Clock Ticks microsToTicks(const Micros micros) const { + // Negative Micros can not be represented in Ticks + assert(micros.count() >= 0); return static_cast(micros.count() / mTicksToMicros); } diff --git a/tidal-link/link/include/ableton/platforms/esp32/Context.hpp b/tidal-link/link/include/ableton/platforms/esp32/Context.hpp index 0c1cd00b5..ccf02fe5f 100644 --- a/tidal-link/link/include/ableton/platforms/esp32/Context.hpp +++ b/tidal-link/link/include/ableton/platforms/esp32/Context.hpp @@ -19,12 +19,12 @@ #pragma once -#include +#include +#include #include -#include #include #include -#include +#include #include #include @@ -40,7 +40,6 @@ class Context { class ServiceRunner { - static void run(void* userParams) { auto runner = static_cast(userParams); @@ -60,11 +59,7 @@ class Context static void IRAM_ATTR timerIsr(void* userParam) { static BaseType_t xHigherPriorityTaskWoken = pdFALSE; - - timer_group_clr_intr_status_in_isr(TIMER_GROUP_0, TIMER_1); - timer_group_enable_alarm_in_isr(TIMER_GROUP_0, TIMER_1); - - vTaskNotifyGiveFromISR(userParam, &xHigherPriorityTaskWoken); + vTaskNotifyGiveFromISR(*((TaskHandle_t*)userParam), &xHigherPriorityTaskWoken); if (xHigherPriorityTaskWoken) { portYIELD_FROM_ISR(); @@ -79,24 +74,21 @@ class Context xTaskCreatePinnedToCore(run, "link", 8192, this, 2 | portPRIVILEGE_BIT, &mTaskHandle, LINK_ESP_TASK_CORE_ID); - timer_config_t config = {.alarm_en = TIMER_ALARM_EN, - .counter_en = TIMER_PAUSE, - .intr_type = TIMER_INTR_LEVEL, - .counter_dir = TIMER_COUNT_UP, - .auto_reload = TIMER_AUTORELOAD_EN, - .divider = 80}; + const esp_timer_create_args_t timerArgs = { + .callback = &timerIsr, + .arg = (void*)&mTaskHandle, + .dispatch_method = ESP_TIMER_TASK, + .name = "link", + .skip_unhandled_events = true, + }; - timer_init(TIMER_GROUP_0, TIMER_1, &config); - timer_set_counter_value(TIMER_GROUP_0, TIMER_1, 0); - timer_set_alarm_value(TIMER_GROUP_0, TIMER_1, 100); - timer_enable_intr(TIMER_GROUP_0, TIMER_1); - timer_isr_register(TIMER_GROUP_0, TIMER_1, &timerIsr, mTaskHandle, 0, nullptr); - - timer_start(TIMER_GROUP_0, TIMER_1); + ESP_ERROR_CHECK(esp_timer_create(&timerArgs, &mTimer)); + ESP_ERROR_CHECK(esp_timer_start_periodic(mTimer, 100)); } ~ServiceRunner() { + esp_timer_delete(mTimer); vTaskDelete(mTaskHandle); } @@ -113,6 +105,7 @@ class Context private: TaskHandle_t mTaskHandle; + esp_timer_handle_t mTimer; std::unique_ptr<::asio::io_service> mpService; std::unique_ptr<::asio::io_service::work> mpWork; }; @@ -150,30 +143,72 @@ class Context } template - Socket openUnicastSocket(const ::asio::ip::address_v4& addr) + Socket openUnicastSocket(const ::asio::ip::address& addr) { - auto socket = Socket{serviceRunner().service()}; + auto socket = + addr.is_v4() ? Socket{serviceRunner().service(), ::asio::ip::udp::v4()} + : Socket{serviceRunner().service(), ::asio::ip::udp::v6()}; socket.mpImpl->mSocket.set_option( ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind(::asio::ip::udp::endpoint{addr, 0}); + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v4(), 0}); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(static_cast(scopeId))); + socket.mpImpl->mSocket.bind( + ::LINK_ASIO_NAMESPACE::ip::udp::endpoint{addr.to_v6(), 0}); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } template - Socket openMulticastSocket(const ::asio::ip::address_v4& addr) + Socket openMulticastSocket(const ::asio::ip::address& addr) { - auto socket = Socket{serviceRunner().service()}; + auto socket = + addr.is_v4() ? Socket{serviceRunner().service(), ::asio::ip::udp::v4()} + : Socket{serviceRunner().service(), ::asio::ip::udp::v6()}; + socket.mpImpl->mSocket.set_option(::asio::ip::udp::socket::reuse_address(true)); socket.mpImpl->mSocket.set_option( ::asio::socket_base::broadcast(!addr.is_loopback())); socket.mpImpl->mSocket.set_option( ::asio::ip::multicast::enable_loopback(addr.is_loopback())); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::outbound_interface(addr)); - socket.mpImpl->mSocket.bind({::asio::ip::address::from_string("0.0.0.0"), - discovery::multicastEndpoint().port()}); - socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( - discovery::multicastEndpoint().address().to_v4(), addr)); + + if (addr.is_v4()) + { + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(addr.to_v4())); + socket.mpImpl->mSocket.bind( + {::asio::ip::address_v4::any(), discovery::multicastEndpointV4().port()}); + socket.mpImpl->mSocket.set_option(::asio::ip::multicast::join_group( + discovery::multicastEndpointV4().address().to_v4(), addr.to_v4())); + } + else if (addr.is_v6()) + { + const auto scopeId = addr.to_v6().scope_id(); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::outbound_interface(static_cast(scopeId))); + const auto multicastEndpoint = discovery::multicastEndpointV6(scopeId); + socket.mpImpl->mSocket.bind( + {::asio::ip::address_v6::any(), multicastEndpoint.port()}); + socket.mpImpl->mSocket.set_option( + ::asio::ip::multicast::join_group(multicastEndpoint.address().to_v6(), scopeId)); + } + else + { + throw(std::runtime_error("Unknown Protocol")); + } return socket; } diff --git a/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp index 527d080a5..a9e5c9a4b 100644 --- a/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/esp32/ScanIpIfAddrs.hpp @@ -17,7 +17,7 @@ #pragma once -#include +#include #include #include #include @@ -33,9 +33,9 @@ namespace esp32 // ESP32 implementation of ip interface address scanner struct ScanIpIfAddrs { - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; // Get first network interface esp_netif_t* esp_netif = esp_netif_next(NULL); while (esp_netif) diff --git a/tidal-link/link/include/ableton/platforms/linux/Clock.hpp b/tidal-link/link/include/ableton/platforms/linux/Clock.hpp index accfe4720..5ea60ed87 100644 --- a/tidal-link/link/include/ableton/platforms/linux/Clock.hpp +++ b/tidal-link/link/include/ableton/platforms/linux/Clock.hpp @@ -28,15 +28,11 @@ namespace ableton namespace platforms { -#ifdef linux -#undef linux -#endif - #if defined(__FreeBSD_kernel__) #define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC #endif -namespace linux +namespace linux_ { template @@ -55,6 +51,6 @@ class Clock using ClockMonotonic = Clock; using ClockMonotonicRaw = Clock; -} // namespace linux +} // namespace linux_ } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp b/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp index 81988f90b..4d8679aa5 100644 --- a/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp +++ b/tidal-link/link/include/ableton/platforms/linux/ThreadFactory.hpp @@ -26,7 +26,7 @@ namespace ableton { namespace platforms { -namespace linux +namespace linux_ { struct ThreadFactory @@ -40,6 +40,6 @@ struct ThreadFactory } }; -} // namespace linux +} // namespace linux_ } // namespace platforms } // namespace ableton diff --git a/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp index 8d24bc2f4..ba07dc5f0 100644 --- a/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/posix/ScanIpIfAddrs.hpp @@ -19,11 +19,12 @@ #pragma once -#include -#include +#include #include #include +#include #include +#include #include namespace ableton @@ -75,34 +76,49 @@ struct ScanIpIfAddrs { // Scan active network interfaces and return corresponding addresses // for all ip-based interfaces. - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; + std::map IpInterfaceNames; detail::GetIfAddrs getIfAddrs; - getIfAddrs.withIfAddrs([&addrs](const struct ifaddrs& interfaces) { + getIfAddrs.withIfAddrs([&addrs, &IpInterfaceNames](const struct ifaddrs& interfaces) { const struct ifaddrs* interface; for (interface = &interfaces; interface; interface = interface->ifa_next) { auto addr = reinterpret_cast(interface->ifa_addr); - if (addr && interface->ifa_flags & IFF_UP) + if (addr && interface->ifa_flags & IFF_RUNNING && addr->sin_family == AF_INET) { - if (addr->sin_family == AF_INET) - { - auto bytes = reinterpret_cast(&addr->sin_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v4>(bytes)); - } - else if (addr->sin_family == AF_INET6) + auto bytes = reinterpret_cast(&addr->sin_addr); + auto address = discovery::makeAddress(bytes); + addrs.emplace_back(std::move(address)); + IpInterfaceNames.insert(std::make_pair(interface->ifa_name, address)); + } + } + }); + + getIfAddrs.withIfAddrs([&addrs, &IpInterfaceNames](const struct ifaddrs& interfaces) { + const struct ifaddrs* interface; + for (interface = &interfaces; interface; interface = interface->ifa_next) + { + auto addr = reinterpret_cast(interface->ifa_addr); + if (addr && interface->ifa_flags & IFF_RUNNING && addr->sin_family == AF_INET6) + { + auto addr6 = reinterpret_cast(addr); + auto bytes = reinterpret_cast(&addr6->sin6_addr); + auto scopeId = addr6->sin6_scope_id; + auto address = discovery::makeAddress(bytes, scopeId); + if (IpInterfaceNames.find(interface->ifa_name) != IpInterfaceNames.end() + && !address.is_loopback() && address.is_link_local()) { - auto addr6 = reinterpret_cast(addr); - auto bytes = reinterpret_cast(&addr6->sin6_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v6>(bytes)); + addrs.emplace_back(std::move(address)); } } } }); + return addrs; - } + }; }; } // namespace posix diff --git a/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp b/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp index e2b6f8459..229486e9a 100644 --- a/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp +++ b/tidal-link/link/include/ableton/platforms/windows/ScanIpIfAddrs.hpp @@ -19,10 +19,11 @@ #pragma once -#include -#include +#include #include +#include #include +#include #include #include #include @@ -99,12 +100,13 @@ struct ScanIpIfAddrs { // Scan active network interfaces and return corresponding addresses // for all ip-based interfaces. - std::vector<::asio::ip::address> operator()() + std::vector operator()() { - std::vector<::asio::ip::address> addrs; + std::vector addrs; + std::map IpInterfaceNames; detail::GetIfAddrs getIfAddrs; - getIfAddrs.withIfAddrs([&addrs](const IP_ADAPTER_ADDRESSES& interfaces) { + getIfAddrs.withIfAddrs([&](const IP_ADAPTER_ADDRESSES& interfaces) { const IP_ADAPTER_ADDRESSES* networkInterface; for (networkInterface = &interfaces; networkInterface; networkInterface = networkInterface->Next) @@ -119,18 +121,41 @@ struct ScanIpIfAddrs SOCKADDR_IN* addr4 = reinterpret_cast(address->Address.lpSockaddr); auto bytes = reinterpret_cast(&addr4->sin_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v4>(bytes)); + auto ipv4address = discovery::makeAddress(bytes); + addrs.emplace_back(ipv4address); + IpInterfaceNames.insert( + std::make_pair(networkInterface->AdapterName, ipv4address)); } - else if (AF_INET6 == family) + } + } + }); + + getIfAddrs.withIfAddrs([&](const IP_ADAPTER_ADDRESSES& interfaces) { + const IP_ADAPTER_ADDRESSES* networkInterface; + for (networkInterface = &interfaces; networkInterface; + networkInterface = networkInterface->Next) + { + for (IP_ADAPTER_UNICAST_ADDRESS* address = networkInterface->FirstUnicastAddress; + NULL != address; address = address->Next) + { + auto family = address->Address.lpSockaddr->sa_family; + if (AF_INET6 == family + && IpInterfaceNames.find(networkInterface->AdapterName) + != IpInterfaceNames.end()) { - SOCKADDR_IN6* addr6 = + SOCKADDR_IN6* sockAddr = reinterpret_cast(address->Address.lpSockaddr); - auto bytes = reinterpret_cast(&addr6->sin6_addr); - addrs.emplace_back(asio::makeAddress<::asio::ip::address_v6>(bytes)); + auto bytes = reinterpret_cast(&sockAddr->sin6_addr); + auto addr6 = discovery::makeAddress(bytes); + if (!addr6.is_loopback() && addr6.is_link_local()) + { + addrs.emplace_back(addr6); + } } } } }); + return addrs; } }; diff --git a/tidal-link/link/include/ableton/test/serial_io/Context.hpp b/tidal-link/link/include/ableton/test/serial_io/Context.hpp index f450fbb79..f8f19bf20 100644 --- a/tidal-link/link/include/ableton/test/serial_io/Context.hpp +++ b/tidal-link/link/include/ableton/test/serial_io/Context.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -37,7 +37,7 @@ class Context { public: Context(const SchedulerTree::TimePoint& now, - const std::vector<::asio::ip::address>& ifAddrs, + const std::vector& ifAddrs, std::shared_ptr pScheduler) : mNow(now) , mIfAddrs(ifAddrs) @@ -91,14 +91,14 @@ class Context return mLog; } - std::vector<::asio::ip::address> scanNetworkInterfaces() + std::vector scanNetworkInterfaces() { return mIfAddrs; } private: const SchedulerTree::TimePoint& mNow; - const std::vector<::asio::ip::address>& mIfAddrs; + const std::vector& mIfAddrs; std::shared_ptr mpScheduler; Log mLog; SchedulerTree::TimerId mNextTimerId; diff --git a/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp b/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp index 316c44d0c..5983899a5 100644 --- a/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp +++ b/tidal-link/link/include/ableton/test/serial_io/Fixture.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include #include #include @@ -50,7 +50,7 @@ class Fixture Fixture(Fixture&&) = delete; Fixture& operator=(Fixture&&) = delete; - void setNetworkInterfaces(std::vector<::asio::ip::address> ifAddrs) + void setNetworkInterfaces(std::vector ifAddrs) { mIfAddrs = std::move(ifAddrs); } @@ -84,7 +84,7 @@ class Fixture private: std::shared_ptr mpScheduler; SchedulerTree::TimePoint mNow; - std::vector<::asio::ip::address> mIfAddrs; + std::vector mIfAddrs; }; } // namespace serial_io diff --git a/tidal-link/link/modules/asio-standalone/.appveyor.yml b/tidal-link/link/modules/asio-standalone/.appveyor.yml index d7865c5a2..db7b09b3f 100644 --- a/tidal-link/link/modules/asio-standalone/.appveyor.yml +++ b/tidal-link/link/modules/asio-standalone/.appveyor.yml @@ -17,7 +17,6 @@ environment: SEPARATE_COMPILATION: 1 MSVC: 1 - STANDALONE: 1 - SEPARATE_COMPILATION: 1 MINGW: 1 - STANDALONE: 1 CXXLATEST: 1 @@ -37,7 +36,6 @@ environment: SEPARATE_COMPILATION: 1 MSVC: 1 - USING_BOOST: 1 - SEPARATE_COMPILATION: 1 MINGW: 1 for: diff --git a/tidal-link/link/modules/asio-standalone/.cirrus.yml b/tidal-link/link/modules/asio-standalone/.cirrus.yml index 3a7dafc39..9ace7fc90 100644 --- a/tidal-link/link/modules/asio-standalone/.cirrus.yml +++ b/tidal-link/link/modules/asio-standalone/.cirrus.yml @@ -1,5 +1,5 @@ freebsd_instance: - image_family: freebsd-12-1 + image_family: freebsd-13-0 cpu: 1 env: @@ -7,7 +7,7 @@ env: task: install_script: - - pkg install -y autoconf automake + - pkg install -y autoconf automake pkgconf build_script: - cd asio - ./autogen.sh diff --git a/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml b/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml new file mode 100644 index 000000000..3fa02cf7b --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/.github/workflows/ci.yml @@ -0,0 +1,380 @@ +name: asio CI + +on: + push: + branches: [ master, citest-* ] + +jobs: + build: + strategy: + fail-fast: false + matrix: + build-type: ['sanity'] + runs-on: [ubuntu-20.04, ubuntu-22.04, macos-latest] + compiler: [g++-7, g++-8, g++-9, g++-10, g++-11, g++-12, clang++-10, clang++-14, g++] + cxx-std: ['c++03', 'c++11', 'c++14', 'c++17', 'c++2a', 'c++20'] + separate-compilation: ['', '--enable-separate-compilation'] + optim-level: ['-O0'] + no-deprecated: [''] + select-reactor: ['', '-DASIO_DISABLE_EPOLL', '-DASIO_DISABLE_KQUEUE'] + handler-tracking: [''] + boost: [''] + boost-url: [''] + exclude: + # New compilers don't run on ubuntu 20.04 + - runs-on: ubuntu-20.04 + compiler: g++-12 + - runs-on: ubuntu-20.04 + compiler: clang++-14 + # Older compilers don't run on ubuntu 22.04 + - runs-on: ubuntu-22.04 + compiler: g++-7 + - runs-on: ubuntu-22.04 + compiler: g++-8 + - runs-on: ubuntu-22.04 + compiler: clang++-10 + # Unversioned g++ doesn't run on ubuntu + - runs-on: ubuntu-20.04 + compiler: g++ + - runs-on: ubuntu-22.04 + compiler: g++ + # Versioned g++ and clang++ don't run on macOS + - runs-on: macos-latest + compiler: g++-7 + - runs-on: macos-latest + compiler: g++-8 + - runs-on: macos-latest + compiler: g++-9 + - runs-on: macos-latest + compiler: g++-10 + - runs-on: macos-latest + compiler: g++-11 + - runs-on: macos-latest + compiler: g++-12 + - runs-on: macos-latest + compiler: clang++-10 + - runs-on: macos-latest + compiler: clang++-14 + # Older compilers don't support newer std variants + - compiler: g++-7 + cxx-std: c++2a + - compiler: g++-7 + cxx-std: c++20 + - compiler: g++-8 + cxx-std: c++20 + - compiler: g++-9 + cxx-std: c++20 + - compiler: g++-10 + cxx-std: c++2a + - compiler: g++-11 + cxx-std: c++2a + - compiler: g++-12 + cxx-std: c++2a + - compiler: clang++-10 + cxx-std: c++20 + - compiler: clang++-14 + cxx-std: c++2a + - runs-on: macos-latest + cxx-std: c++20 + # Specifying the select reactor is OS-specific + - runs-on: ubuntu-20.04 + select-reactor: -DASIO_DISABLE_KQUEUE + - runs-on: ubuntu-22.04 + select-reactor: -DASIO_DISABLE_KQUEUE + - runs-on: macos-latest + select-reactor: -DASIO_DISABLE_EPOLL + # Trim builds that use separate compilation + - compiler: g++-7 + separate-compilation: --enable-separate-compilation + - compiler: g++-8 + separate-compilation: --enable-separate-compilation + - compiler: g++-9 + separate-compilation: --enable-separate-compilation + - compiler: g++-10 + separate-compilation: --enable-separate-compilation + - compiler: g++-11 + separate-compilation: --enable-separate-compilation + - runs-on: macos-latest + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + - runs-on: macos-latest + cxx-std: c++17 + separate-compilation: --enable-separate-compilation + # Trim builds that use select reactor + - compiler: g++-7 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-8 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-9 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-10 + select-reactor: -DASIO_DISABLE_EPOLL + - compiler: g++-11 + select-reactor: -DASIO_DISABLE_EPOLL + # C++03 builds are always explicitly included + - cxx-std: c++03 + include: + # + # Linux / g++-12 -std=c++20 -fcoroutines / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-12 + cxx-std: c++20 -fcoroutines + optim-level: -O2 + # + # Linux / g++-12 -std=c++17 / -O2 / boost 1.73 + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-12 + cxx-std: c++17 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_73_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.bz2 + # + # Linux / g++-11 -std=c++14 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: g++-11 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / g++-10 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O2 + # + # Linux / g++-10 / -O0 / standalone / handler tracking + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING + # + # Linux / g++-10 / -O0 / standalone / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O0 / standalone / separate compilation / handler tracking + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + handler-tracking: -DASIO_ENABLE_HANDLER_TRACKING + # + # Linux / g++-10 / -O0 / standalone / separate compilation / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-10 / -O0 / boost 1.80 / epoll disabled + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + select-reactor: -DASIO_DISABLE_EPOLL + # + # Linux / g++-10 / -O0 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-10 + cxx-std: c++14 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-7 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + optim-level: -O2 + # + # Linux / g++-7 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / g++-7 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / g++-7 -std=c++11 / -O2 / boost 1.80 + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: g++-7 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # Linux / clang++-14 -std=c++2a / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: clang++-14 + cxx-std: c++2a + optim-level: -O2 + # + # Linux / clang++-14 -std=c++11 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: ubuntu-22.04 + compiler: clang++-14 + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # Linux / clang++-10 -std=c++11 / -O2 / standalone + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: clang++-10 + cxx-std: c++11 + optim-level: -O2 + # + # Linux / clang++-10 -std=c++11 / -O0 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: ubuntu-20.04 + compiler: clang++-10 + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # macOS / c++2a -fcoroutines-ts / -O2 / standalone + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++2a -fcoroutines-ts + optim-level: -O2 + # + # macOS / c++11 / -O2 / standalone + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + optim-level: -O2 + # + # macOS / c++11 / -O0 / standalone / kqueue disabled + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + optim-level: -O0 + select-reactor: -DASIO_DISABLE_KQUEUE + # + # macOS / c++11 / -O0 / standalone / separate compilation + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++11 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + # + # macOS / c++03 / -O2 / boost 1.80 + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++03 + optim-level: -O2 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + # + # macOS / c++03 / -O2 / boost 1.80 / separate compilation + # + - build-type: full + runs-on: macos-latest + compiler: g++ + cxx-std: c++03 + separate-compilation: --enable-separate-compilation + optim-level: -O0 + with-boost: --with-boost=$GITHUB_WORKSPACE/boost_1_80_0 + boost-url: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2 + runs-on: ${{ matrix.runs-on }} + env: + CXX: ${{ matrix.compiler }} + CXXFLAGS: -std=${{ matrix.cxx-std }} ${{ matrix.optim-level }} -Wall -Wextra ${{ matrix.no-deprecated }} ${{ matrix.select-reactor }} ${{ matrix.handler-tracking }} + steps: + - uses: actions/checkout@v2 + - name: Install autotools + if: startsWith(matrix.runs-on, 'macos') + run: brew install automake + - name: Install compiler + if: startsWith(matrix.runs-on, 'ubuntu') + run: sudo apt-get install -y ${{ matrix.compiler }} + - name: Install boost + if: startsWith(matrix.with-boost, '--with-boost=$GITHUB_WORKSPACE') + run: | + wget --quiet -O - ${{ matrix.boost-url }} | tar -xj + - name: Configure + working-directory: asio + run: | + ./autogen.sh + ./configure ${{ matrix.separate-compilation }} ${{ matrix.with-boost }} + - name: Sanity check + if: startsWith(matrix.build-type, 'sanity') + working-directory: asio/src/tests + run: make unit/io_context.log unit/ip/tcp.log unit/ts/net.log + - name: Build + if: startsWith(matrix.build-type, 'full') + working-directory: asio + run: make && make check diff --git a/tidal-link/link/modules/asio-standalone/.travis.yml b/tidal-link/link/modules/asio-standalone/.travis.yml deleted file mode 100644 index 06fb4b9a7..000000000 --- a/tidal-link/link/modules/asio-standalone/.travis.yml +++ /dev/null @@ -1,372 +0,0 @@ -language: cpp -os: linux -dist: xenial - -cache: - directories: - - ${TRAVIS_BUILD_DIR}/boost_1_64_0 - - ${TRAVIS_BUILD_DIR}/boost_1_73_0 - -matrix: - include: - # - #--------------------------------------------------------------------------- - # Linux / g++-9 - #--------------------------------------------------------------------------- - # - # Linux / g++-9 -std=c++2a / -O2 / standalone - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - CXXFLAGS="-std=c++2a -fconcepts -Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - # Linux / g++-9 -std=c++17 / -O2 / boost 1.73 - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - BOOST_DIR="boost_1_73_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.bz2/download" - - CXXFLAGS="-std=c++17 -Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=$PWD/$BOOST_DIR" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - # Linux / g++-9 -std=c++14 / -O0 / standalone / separate compilation - # - - os: linux - dist: bionic - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-9 - env: - - CXXFLAGS="-std=c++14 -Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-9 CXX=g++-9" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / g++-6 - #--------------------------------------------------------------------------- - # - # Linux / g++-6 / -O2 / standalone - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / handler tracking - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_ENABLE_HANDLER_TRACKING" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / separate compilation / handler tracking - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_ENABLE_HANDLER_TRACKING" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / standalone / separate compilation / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / boost 1.64 / epoll disabled - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_EPOLL" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - # Linux / g++-6 / -O0 / boost 1.64 / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / g++-4.8 - #--------------------------------------------------------------------------- - # - # Linux / g++-4.8 / -O2 / standalone - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 / -O0 / standalone / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - # Linux / g++-4.8 -std=c++11 / -O2 / boost 1.64 - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-std=c++11 -Wall -Wextra -O2" - - CONFIGFLAGS="" - - MATRIX_EVAL="CC=gcc-4.8 CXX=g++-4.8" - compiler: gcc - # - #--------------------------------------------------------------------------- - # Linux / clang-3.8 - #--------------------------------------------------------------------------- - # - # Linux / clang-3.8 / -O2 / standalone" - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - env: - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="--with-boost=no" - - MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8" - compiler: clang - # - # Linux / clang-3.8 / -O0 / standalone / separate compilation - # - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - - MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8" - compiler: clang - # - #--------------------------------------------------------------------------- - # macOS / xcode10.1 - #--------------------------------------------------------------------------- - # - # macOS / xcode10.1 / -std=c++2a -fcoroutines-ts -O2 / standalone - # - - os: osx - env: - - CXXFLAGS="-std=c++2a -fcoroutines-ts -Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O2 / standalone - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / standalone / kqueue disabled - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline -DASIO_DISABLE_KQUEUE" - - CONFIGFLAGS="--with-boost=no" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / standalone / separate compilation - # - - os: osx - env: - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--with-boost=no --enable-separate-compilation" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O2 / boost 1.64 - # - - os: osx - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O2" - - CONFIGFLAGS="" - osx_image: xcode10.1 - # - # macOS / xcode10.1 / -O0 / boost 1.64 / separate compilation - # - - os: osx - env: - - BOOST_DIR="boost_1_64_0" - - BOOST_URL="https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download" - - CXXFLAGS="-Wall -Wextra -O0 -fno-inline" - - CONFIGFLAGS="--enable-separate-compilation" - osx_image: xcode10.1 - -before_install: - - eval "${MATRIX_EVAL}" - -install: - - | - if [[ "${BOOST_URL}" != "" ]]; then - if [[ -z "$(ls -A ${BOOST_DIR})" ]]; then - { travis_retry wget --quiet -O - ${BOOST_URL} | tar -xj; } || exit 1 - fi - fi - -script: - - cd asio && ./autogen.sh && ./configure $CONFIGFLAGS && make && make check - -notifications: - email: false diff --git a/tidal-link/link/modules/asio-standalone/asio/.gitignore b/tidal-link/link/modules/asio-standalone/asio/.gitignore index 55db11878..39252178e 100644 --- a/tidal-link/link/modules/asio-standalone/asio/.gitignore +++ b/tidal-link/link/modules/asio-standalone/asio/.gitignore @@ -1,6 +1,7 @@ Makefile Makefile.in aclocal.m4 +asio.pc autom4te.cache compile config.guess diff --git a/tidal-link/link/modules/asio-standalone/asio/COPYING b/tidal-link/link/modules/asio-standalone/asio/COPYING index 2bb5eb20d..4540e01fc 100644 --- a/tidal-link/link/modules/asio-standalone/asio/COPYING +++ b/tidal-link/link/modules/asio-standalone/asio/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/tidal-link/link/modules/asio-standalone/asio/INSTALL b/tidal-link/link/modules/asio-standalone/asio/INSTALL index f045678c4..1dd78db18 100644 --- a/tidal-link/link/modules/asio-standalone/asio/INSTALL +++ b/tidal-link/link/modules/asio-standalone/asio/INSTALL @@ -1,5 +1,5 @@ See doc/index.html for information on: - External dependencies - - Using asio + - Using, building, and configuring Asio - Supported platforms - How to build the tests and examples diff --git a/tidal-link/link/modules/asio-standalone/asio/Makefile.am b/tidal-link/link/modules/asio-standalone/asio/Makefile.am index 0acdc02d9..b7760851b 100644 --- a/tidal-link/link/modules/asio-standalone/asio/Makefile.am +++ b/tidal-link/link/modules/asio-standalone/asio/Makefile.am @@ -1,5 +1,7 @@ AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip +pkgconfig_DATA = asio.pc + SUBDIRS = include src MAINTAINERCLEANFILES = \ diff --git a/tidal-link/link/modules/asio-standalone/asio/README b/tidal-link/link/modules/asio-standalone/asio/README index 92472f52e..6ef60c29a 100644 --- a/tidal-link/link/modules/asio-standalone/asio/README +++ b/tidal-link/link/modules/asio-standalone/asio/README @@ -1,4 +1,4 @@ -asio version 1.17.0 -Released Friday, 10 July 2020. +asio version 1.28.0 +Released Wednesday, 26 April 2023. See doc/index.html for API documentation and a tutorial. diff --git a/tidal-link/link/modules/asio-standalone/asio/asio.manifest b/tidal-link/link/modules/asio-standalone/asio/asio.manifest index 440b974eb..ae98bebb7 100644 --- a/tidal-link/link/modules/asio-standalone/asio/asio.manifest +++ b/tidal-link/link/modules/asio-standalone/asio/asio.manifest @@ -1,5 +1,6 @@ / /aclocal.m4 +/asio.pc.in /compile /config.guess /config.sub @@ -8,30 +9,52 @@ /COPYING /depcomp /doc/ +/doc/1.png +/doc/2.png +/doc/3.png +/doc/4.png +/doc/5.png +/doc/6.png +/doc/7.png +/doc/8.png /doc/asio/ /doc/asio/examples/ /doc/asio/examples/cpp03_examples.html /doc/asio/examples/cpp11_examples.html /doc/asio/examples/cpp14_examples.html /doc/asio/examples/cpp17_examples.html +/doc/asio/examples/cpp20_examples.html /doc/asio/examples.html /doc/asio/history.html /doc/asio/index.html /doc/asio/net_ts.html /doc/asio/overview/ +/doc/asio/overview/basics.html +/doc/asio/overview/channels.html +/doc/asio/overview/composition/ +/doc/asio/overview/composition/compose.html +/doc/asio/overview/composition/coro.html +/doc/asio/overview/composition/coroutine.html +/doc/asio/overview/composition/cpp20_coroutines.html +/doc/asio/overview/composition/deferred.html +/doc/asio/overview/composition/futures.html +/doc/asio/overview/composition.html +/doc/asio/overview/composition/immediate_completion.html +/doc/asio/overview/composition/parallel_group.html +/doc/asio/overview/composition/promises.html +/doc/asio/overview/composition/spawn.html +/doc/asio/overview/composition/token_adapters.html +/doc/asio/overview/composition/type_erasure.html /doc/asio/overview/core/ /doc/asio/overview/core/allocation.html /doc/asio/overview/core/async.html -/doc/asio/overview/core/basics.html /doc/asio/overview/core/buffers.html +/doc/asio/overview/core/cancellation.html /doc/asio/overview/core/concurrency_hint.html -/doc/asio/overview/core/coroutine.html -/doc/asio/overview/core/coroutines_ts.html /doc/asio/overview/core/handler_tracking.html /doc/asio/overview/core.html /doc/asio/overview/core/line_based.html /doc/asio/overview/core/reactor.html -/doc/asio/overview/core/spawn.html /doc/asio/overview/core/strands.html /doc/asio/overview/core/streams.html /doc/asio/overview/core/threads.html @@ -39,21 +62,34 @@ /doc/asio/overview/cpp2011/array.html /doc/asio/overview/cpp2011/atomic.html /doc/asio/overview/cpp2011/chrono.html -/doc/asio/overview/cpp2011/futures.html /doc/asio/overview/cpp2011.html /doc/asio/overview/cpp2011/move_handlers.html /doc/asio/overview/cpp2011/move_objects.html /doc/asio/overview/cpp2011/shared_ptr.html /doc/asio/overview/cpp2011/system_error.html /doc/asio/overview/cpp2011/variadic.html +/doc/asio/overview/files.html /doc/asio/overview.html /doc/asio/overview/implementation.html +/doc/asio/overview/model/ +/doc/asio/overview/model/allocators.html +/doc/asio/overview/model/associators.html +/doc/asio/overview/model/async_agents.html +/doc/asio/overview/model/async_ops.html +/doc/asio/overview/model/cancellation.html +/doc/asio/overview/model/child_agents.html +/doc/asio/overview/model/completion_tokens.html +/doc/asio/overview/model/executors.html +/doc/asio/overview/model/higher_levels.html +/doc/asio/overview/model.html +/doc/asio/overview/model/library_elements.html /doc/asio/overview/networking/ /doc/asio/overview/networking/bsd_sockets.html /doc/asio/overview/networking.html /doc/asio/overview/networking/iostreams.html /doc/asio/overview/networking/other_protocols.html /doc/asio/overview/networking/protocols.html +/doc/asio/overview/pipes.html /doc/asio/overview/posix/ /doc/asio/overview/posix/fork.html /doc/asio/overview/posix.html @@ -73,7 +109,201 @@ /doc/asio/reference/ /doc/asio/reference/AcceptableProtocol.html /doc/asio/reference/AcceptHandler.html +/doc/asio/reference/AcceptToken.html +/doc/asio/reference/allocator_binder/ +/doc/asio/reference/allocator_binder/allocator_binder/ +/doc/asio/reference/allocator_binder/_allocator_binder.html +/doc/asio/reference/allocator_binder/allocator_binder.html +/doc/asio/reference/allocator_binder/allocator_binder/overload1.html +/doc/asio/reference/allocator_binder/allocator_binder/overload2.html +/doc/asio/reference/allocator_binder/allocator_binder/overload3.html +/doc/asio/reference/allocator_binder/allocator_binder/overload4.html +/doc/asio/reference/allocator_binder/allocator_binder/overload5.html +/doc/asio/reference/allocator_binder/allocator_binder/overload6.html +/doc/asio/reference/allocator_binder/allocator_binder/overload7.html +/doc/asio/reference/allocator_binder/allocator_binder/overload8.html +/doc/asio/reference/allocator_binder/allocator_binder/overload9.html +/doc/asio/reference/allocator_binder/allocator_type.html +/doc/asio/reference/allocator_binder/argument_type.html +/doc/asio/reference/allocator_binder/first_argument_type.html +/doc/asio/reference/allocator_binder/get/ +/doc/asio/reference/allocator_binder/get_allocator.html +/doc/asio/reference/allocator_binder/get.html +/doc/asio/reference/allocator_binder/get/overload1.html +/doc/asio/reference/allocator_binder/get/overload2.html +/doc/asio/reference/allocator_binder.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/ +/doc/asio/reference/allocator_binder/operator_lp__rp_.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/allocator_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/allocator_binder/result_type.html +/doc/asio/reference/allocator_binder/second_argument_type.html +/doc/asio/reference/allocator_binder/target_type.html +/doc/asio/reference/any_completion_executor/ +/doc/asio/reference/any_completion_executor/any_completion_executor/ +/doc/asio/reference/any_completion_executor/_any_completion_executor.html +/doc/asio/reference/any_completion_executor/any_completion_executor.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload10.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload1.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload2.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload3.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload4.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload5.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload6.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload7.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload8.html +/doc/asio/reference/any_completion_executor/any_completion_executor/overload9.html +/doc/asio/reference/any_completion_executor/context.html +/doc/asio/reference/any_completion_executor/execute.html +/doc/asio/reference/any_completion_executor.html +/doc/asio/reference/any_completion_executor/operator_bool.html +/doc/asio/reference/any_completion_executor/operator_eq_/ +/doc/asio/reference/any_completion_executor/operator_eq__eq_/ +/doc/asio/reference/any_completion_executor/operator_eq__eq_.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_eq__eq_/overload3.html +/doc/asio/reference/any_completion_executor/operator_eq_.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_eq_/overload3.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/ +/doc/asio/reference/any_completion_executor/operator_not__eq_.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload1.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload2.html +/doc/asio/reference/any_completion_executor/operator_not__eq_/overload3.html +/doc/asio/reference/any_completion_executor/prefer/ +/doc/asio/reference/any_completion_executor/prefer.html +/doc/asio/reference/any_completion_executor/prefer/overload1.html +/doc/asio/reference/any_completion_executor/prefer/overload2.html +/doc/asio/reference/any_completion_executor/prefer/overload3.html +/doc/asio/reference/any_completion_executor/prefer/overload4.html +/doc/asio/reference/any_completion_executor/prefer/overload5.html +/doc/asio/reference/any_completion_executor/prefer/overload6.html +/doc/asio/reference/any_completion_executor/query.html +/doc/asio/reference/any_completion_executor/require/ +/doc/asio/reference/any_completion_executor/require.html +/doc/asio/reference/any_completion_executor/require/overload1.html +/doc/asio/reference/any_completion_executor/require/overload2.html +/doc/asio/reference/any_completion_executor/swap/ +/doc/asio/reference/any_completion_executor/swap.html +/doc/asio/reference/any_completion_executor/swap/overload1.html +/doc/asio/reference/any_completion_executor/swap/overload2.html +/doc/asio/reference/any_completion_executor/target/ +/doc/asio/reference/any_completion_executor/target.html +/doc/asio/reference/any_completion_executor/target/overload1.html +/doc/asio/reference/any_completion_executor/target/overload2.html +/doc/asio/reference/any_completion_executor/target_type.html +/doc/asio/reference/any_completion_handler/ +/doc/asio/reference/any_completion_handler_allocator/ +/doc/asio/reference/any_completion_handler_allocator/allocate.html +/doc/asio/reference/any_completion_handler_allocator/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator/deallocate.html +/doc/asio/reference/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/ +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/any_completion_handler_allocator.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_not__eq_.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/ +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/other.html +/doc/asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/value_type.html +/doc/asio/reference/any_completion_handler_allocator/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler_allocator/operator_not__eq_.html +/doc/asio/reference/any_completion_handler_allocator__rebind/ +/doc/asio/reference/any_completion_handler_allocator__rebind.html +/doc/asio/reference/any_completion_handler_allocator__rebind/other.html +/doc/asio/reference/any_completion_handler_allocator/value_type.html +/doc/asio/reference/any_completion_handler/any_completion_handler/ +/doc/asio/reference/any_completion_handler/_any_completion_handler.html +/doc/asio/reference/any_completion_handler/any_completion_handler.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload1.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload2.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload3.html +/doc/asio/reference/any_completion_handler/any_completion_handler/overload4.html +/doc/asio/reference/any_completion_handler/get_allocator.html +/doc/asio/reference/any_completion_handler/get_cancellation_slot.html +/doc/asio/reference/any_completion_handler.html +/doc/asio/reference/any_completion_handler/operator_bool.html +/doc/asio/reference/any_completion_handler/operator_eq_/ +/doc/asio/reference/any_completion_handler/operator_eq__eq_/ +/doc/asio/reference/any_completion_handler/operator_eq__eq_.html +/doc/asio/reference/any_completion_handler/operator_eq__eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_eq__eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_eq_.html +/doc/asio/reference/any_completion_handler/operator_eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_lp__rp_.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/ +/doc/asio/reference/any_completion_handler/operator_not__eq_.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/overload1.html +/doc/asio/reference/any_completion_handler/operator_not__eq_/overload2.html +/doc/asio/reference/any_completion_handler/operator_not_.html +/doc/asio/reference/any_completion_handler/swap.html +/doc/asio/reference/any_io_executor/ +/doc/asio/reference/any_io_executor/any_io_executor/ +/doc/asio/reference/any_io_executor/_any_io_executor.html +/doc/asio/reference/any_io_executor/any_io_executor.html +/doc/asio/reference/any_io_executor/any_io_executor/overload10.html +/doc/asio/reference/any_io_executor/any_io_executor/overload1.html +/doc/asio/reference/any_io_executor/any_io_executor/overload2.html +/doc/asio/reference/any_io_executor/any_io_executor/overload3.html +/doc/asio/reference/any_io_executor/any_io_executor/overload4.html +/doc/asio/reference/any_io_executor/any_io_executor/overload5.html +/doc/asio/reference/any_io_executor/any_io_executor/overload6.html +/doc/asio/reference/any_io_executor/any_io_executor/overload7.html +/doc/asio/reference/any_io_executor/any_io_executor/overload8.html +/doc/asio/reference/any_io_executor/any_io_executor/overload9.html +/doc/asio/reference/any_io_executor/context.html +/doc/asio/reference/any_io_executor/execute.html /doc/asio/reference/any_io_executor.html +/doc/asio/reference/any_io_executor/operator_bool.html +/doc/asio/reference/any_io_executor/operator_eq_/ +/doc/asio/reference/any_io_executor/operator_eq__eq_/ +/doc/asio/reference/any_io_executor/operator_eq__eq_.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_eq__eq_/overload3.html +/doc/asio/reference/any_io_executor/operator_eq_.html +/doc/asio/reference/any_io_executor/operator_eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_eq_/overload3.html +/doc/asio/reference/any_io_executor/operator_not__eq_/ +/doc/asio/reference/any_io_executor/operator_not__eq_.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload1.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload2.html +/doc/asio/reference/any_io_executor/operator_not__eq_/overload3.html +/doc/asio/reference/any_io_executor/prefer/ +/doc/asio/reference/any_io_executor/prefer.html +/doc/asio/reference/any_io_executor/prefer/overload1.html +/doc/asio/reference/any_io_executor/prefer/overload2.html +/doc/asio/reference/any_io_executor/prefer/overload3.html +/doc/asio/reference/any_io_executor/prefer/overload4.html +/doc/asio/reference/any_io_executor/prefer/overload5.html +/doc/asio/reference/any_io_executor/prefer/overload6.html +/doc/asio/reference/any_io_executor/prefer/overload7.html +/doc/asio/reference/any_io_executor/query.html +/doc/asio/reference/any_io_executor/require/ +/doc/asio/reference/any_io_executor/require.html +/doc/asio/reference/any_io_executor/require/overload1.html +/doc/asio/reference/any_io_executor/require/overload2.html +/doc/asio/reference/any_io_executor/require/overload3.html +/doc/asio/reference/any_io_executor/swap/ +/doc/asio/reference/any_io_executor/swap.html +/doc/asio/reference/any_io_executor/swap/overload1.html +/doc/asio/reference/any_io_executor/swap/overload2.html +/doc/asio/reference/any_io_executor/target/ +/doc/asio/reference/any_io_executor/target.html +/doc/asio/reference/any_io_executor/target/overload1.html +/doc/asio/reference/any_io_executor/target/overload2.html +/doc/asio/reference/any_io_executor/target_type.html +/doc/asio/reference/append.html +/doc/asio/reference/append_t/ +/doc/asio/reference/append_t/append_t.html +/doc/asio/reference/append_t.html +/doc/asio/reference/append_t/token_.html +/doc/asio/reference/append_t/values_.html /doc/asio/reference/asio_handler_allocate.html /doc/asio/reference/asio_handler_deallocate.html /doc/asio/reference/asio_handler_invoke/ @@ -82,13 +312,74 @@ /doc/asio/reference/asio_handler_invoke/overload2.html /doc/asio/reference/asio_handler_is_continuation.html /doc/asio/reference/associated_allocator/ -/doc/asio/reference/associated_allocator/get.html +/doc/asio/reference/associated_allocator/decltype/ +/doc/asio/reference/associated_allocator/decltype.html +/doc/asio/reference/associated_allocator/decltype/overload1.html +/doc/asio/reference/associated_allocator/decltype/overload2.html /doc/asio/reference/associated_allocator.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/ +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload1.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload2.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html +/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html +/doc/asio/reference/associated_allocator/noexcept.html /doc/asio/reference/associated_allocator/type.html +/doc/asio/reference/associated_cancellation_slot/ +/doc/asio/reference/associated_cancellation_slot/decltype/ +/doc/asio/reference/associated_cancellation_slot/decltype.html +/doc/asio/reference/associated_cancellation_slot/decltype/overload1.html +/doc/asio/reference/associated_cancellation_slot/decltype/overload2.html +/doc/asio/reference/associated_cancellation_slot.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/ +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/ +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload1.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload2.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_.html +/doc/asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/type.html +/doc/asio/reference/associated_cancellation_slot/noexcept.html +/doc/asio/reference/associated_cancellation_slot/type.html /doc/asio/reference/associated_executor/ -/doc/asio/reference/associated_executor/get.html +/doc/asio/reference/associated_executor/decltype/ +/doc/asio/reference/associated_executor/decltype.html +/doc/asio/reference/associated_executor/decltype/overload1.html +/doc/asio/reference/associated_executor/decltype/overload2.html /doc/asio/reference/associated_executor.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/ +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload1.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload2.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/asio/reference/associated_executor/noexcept.html /doc/asio/reference/associated_executor/type.html +/doc/asio/reference/associated_immediate_executor/ +/doc/asio/reference/associated_immediate_executor/decltype.html +/doc/asio/reference/associated_immediate_executor.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/asio/reference/associated_immediate_executor/noexcept.html +/doc/asio/reference/associated_immediate_executor/type.html +/doc/asio/reference/associator.html +/doc/asio/reference/as_tuple.html +/doc/asio/reference/as_tuple_t/ +/doc/asio/reference/as_tuple_t/as_default_on.html +/doc/asio/reference/as_tuple_t/as_tuple_t/ +/doc/asio/reference/as_tuple_t/as_tuple_t.html +/doc/asio/reference/as_tuple_t/as_tuple_t/overload1.html +/doc/asio/reference/as_tuple_t/as_tuple_t/overload2.html +/doc/asio/reference/as_tuple_t__default_constructor_tag.html +/doc/asio/reference/as_tuple_t__executor_with_default/ +/doc/asio/reference/as_tuple_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/as_tuple_t__executor_with_default/executor_with_default.html +/doc/asio/reference/as_tuple_t__executor_with_default.html +/doc/asio/reference/as_tuple_t.html +/doc/asio/reference/as_tuple_t/token_.html /doc/asio/reference/async_completion/ /doc/asio/reference/async_completion/async_completion.html /doc/asio/reference/async_completion/completion_handler.html @@ -146,6 +437,11 @@ /doc/asio/reference/async_result/get.html /doc/asio/reference/async_result.html /doc/asio/reference/async_result/initiate.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/ +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/handler_type.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/initiate.html +/doc/asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/return_type.html /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html /doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html @@ -178,6 +474,7 @@ /doc/asio/reference/awaitable/awaitable/overload2.html /doc/asio/reference/awaitable/executor_type.html /doc/asio/reference/awaitable.html +/doc/asio/reference/awaitable/operator_eq_.html /doc/asio/reference/awaitable/valid.html /doc/asio/reference/awaitable/value_type.html /doc/asio/reference/bad_executor/ @@ -257,7 +554,6 @@ /doc/asio/reference/basic_datagram_socket/get_option/overload1.html /doc/asio/reference/basic_datagram_socket/get_option/overload2.html /doc/asio/reference/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/impl_.html /doc/asio/reference/basic_datagram_socket/io_control/ /doc/asio/reference/basic_datagram_socket/io_control.html /doc/asio/reference/basic_datagram_socket/io_control/overload1.html @@ -397,6 +693,81 @@ /doc/asio/reference/basic_deadline_timer/wait.html /doc/asio/reference/basic_deadline_timer/wait/overload1.html /doc/asio/reference/basic_deadline_timer/wait/overload2.html +/doc/asio/reference/basic_file/ +/doc/asio/reference/basic_file/append.html +/doc/asio/reference/basic_file/assign/ +/doc/asio/reference/basic_file/assign.html +/doc/asio/reference/basic_file/assign/overload1.html +/doc/asio/reference/basic_file/assign/overload2.html +/doc/asio/reference/basic_file/basic_file/ +/doc/asio/reference/basic_file/_basic_file.html +/doc/asio/reference/basic_file/basic_file.html +/doc/asio/reference/basic_file/basic_file/overload10.html +/doc/asio/reference/basic_file/basic_file/overload1.html +/doc/asio/reference/basic_file/basic_file/overload2.html +/doc/asio/reference/basic_file/basic_file/overload3.html +/doc/asio/reference/basic_file/basic_file/overload4.html +/doc/asio/reference/basic_file/basic_file/overload5.html +/doc/asio/reference/basic_file/basic_file/overload6.html +/doc/asio/reference/basic_file/basic_file/overload7.html +/doc/asio/reference/basic_file/basic_file/overload8.html +/doc/asio/reference/basic_file/basic_file/overload9.html +/doc/asio/reference/basic_file/cancel/ +/doc/asio/reference/basic_file/cancel.html +/doc/asio/reference/basic_file/cancel/overload1.html +/doc/asio/reference/basic_file/cancel/overload2.html +/doc/asio/reference/basic_file/close/ +/doc/asio/reference/basic_file/close.html +/doc/asio/reference/basic_file/close/overload1.html +/doc/asio/reference/basic_file/close/overload2.html +/doc/asio/reference/basic_file/create.html +/doc/asio/reference/basic_file/exclusive.html +/doc/asio/reference/basic_file/executor_type.html +/doc/asio/reference/basic_file/flags.html +/doc/asio/reference/basic_file/get_executor.html +/doc/asio/reference/basic_file.html +/doc/asio/reference/basic_file/is_open.html +/doc/asio/reference/basic_file/native_handle.html +/doc/asio/reference/basic_file/native_handle_type.html +/doc/asio/reference/basic_file/open/ +/doc/asio/reference/basic_file/open.html +/doc/asio/reference/basic_file/open/overload1.html +/doc/asio/reference/basic_file/open/overload2.html +/doc/asio/reference/basic_file/open/overload3.html +/doc/asio/reference/basic_file/open/overload4.html +/doc/asio/reference/basic_file/operator_eq_/ +/doc/asio/reference/basic_file/operator_eq_.html +/doc/asio/reference/basic_file/operator_eq_/overload1.html +/doc/asio/reference/basic_file/operator_eq_/overload2.html +/doc/asio/reference/basic_file/read_only.html +/doc/asio/reference/basic_file/read_write.html +/doc/asio/reference/basic_file__rebind_executor/ +/doc/asio/reference/basic_file__rebind_executor.html +/doc/asio/reference/basic_file__rebind_executor/other.html +/doc/asio/reference/basic_file/release/ +/doc/asio/reference/basic_file/release.html +/doc/asio/reference/basic_file/release/overload1.html +/doc/asio/reference/basic_file/release/overload2.html +/doc/asio/reference/basic_file/resize/ +/doc/asio/reference/basic_file/resize.html +/doc/asio/reference/basic_file/resize/overload1.html +/doc/asio/reference/basic_file/resize/overload2.html +/doc/asio/reference/basic_file/seek_basis.html +/doc/asio/reference/basic_file/size/ +/doc/asio/reference/basic_file/size.html +/doc/asio/reference/basic_file/size/overload1.html +/doc/asio/reference/basic_file/size/overload2.html +/doc/asio/reference/basic_file/sync_all/ +/doc/asio/reference/basic_file/sync_all.html +/doc/asio/reference/basic_file/sync_all_on_write.html +/doc/asio/reference/basic_file/sync_all/overload1.html +/doc/asio/reference/basic_file/sync_all/overload2.html +/doc/asio/reference/basic_file/sync_data/ +/doc/asio/reference/basic_file/sync_data.html +/doc/asio/reference/basic_file/sync_data/overload1.html +/doc/asio/reference/basic_file/sync_data/overload2.html +/doc/asio/reference/basic_file/truncate.html +/doc/asio/reference/basic_file/write_only.html /doc/asio/reference/basic_io_object/ /doc/asio/reference/basic_io_object/basic_io_object/ /doc/asio/reference/basic_io_object/_basic_io_object.html @@ -420,6 +791,91 @@ /doc/asio/reference/basic_io_object/implementation_type.html /doc/asio/reference/basic_io_object/operator_eq_.html /doc/asio/reference/basic_io_object/service_type.html +/doc/asio/reference/basic_random_access_file/ +/doc/asio/reference/basic_random_access_file/append.html +/doc/asio/reference/basic_random_access_file/assign/ +/doc/asio/reference/basic_random_access_file/assign.html +/doc/asio/reference/basic_random_access_file/assign/overload1.html +/doc/asio/reference/basic_random_access_file/assign/overload2.html +/doc/asio/reference/basic_random_access_file/async_read_some_at.html +/doc/asio/reference/basic_random_access_file/async_write_some_at.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/ +/doc/asio/reference/basic_random_access_file/_basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload10.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload1.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload2.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload3.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload4.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload5.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload6.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload7.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload8.html +/doc/asio/reference/basic_random_access_file/basic_random_access_file/overload9.html +/doc/asio/reference/basic_random_access_file/cancel/ +/doc/asio/reference/basic_random_access_file/cancel.html +/doc/asio/reference/basic_random_access_file/cancel/overload1.html +/doc/asio/reference/basic_random_access_file/cancel/overload2.html +/doc/asio/reference/basic_random_access_file/close/ +/doc/asio/reference/basic_random_access_file/close.html +/doc/asio/reference/basic_random_access_file/close/overload1.html +/doc/asio/reference/basic_random_access_file/close/overload2.html +/doc/asio/reference/basic_random_access_file/create.html +/doc/asio/reference/basic_random_access_file/exclusive.html +/doc/asio/reference/basic_random_access_file/executor_type.html +/doc/asio/reference/basic_random_access_file/flags.html +/doc/asio/reference/basic_random_access_file/get_executor.html +/doc/asio/reference/basic_random_access_file.html +/doc/asio/reference/basic_random_access_file/is_open.html +/doc/asio/reference/basic_random_access_file/native_handle.html +/doc/asio/reference/basic_random_access_file/native_handle_type.html +/doc/asio/reference/basic_random_access_file/open/ +/doc/asio/reference/basic_random_access_file/open.html +/doc/asio/reference/basic_random_access_file/open/overload1.html +/doc/asio/reference/basic_random_access_file/open/overload2.html +/doc/asio/reference/basic_random_access_file/open/overload3.html +/doc/asio/reference/basic_random_access_file/open/overload4.html +/doc/asio/reference/basic_random_access_file/operator_eq_/ +/doc/asio/reference/basic_random_access_file/operator_eq_.html +/doc/asio/reference/basic_random_access_file/operator_eq_/overload1.html +/doc/asio/reference/basic_random_access_file/operator_eq_/overload2.html +/doc/asio/reference/basic_random_access_file/read_only.html +/doc/asio/reference/basic_random_access_file/read_some_at/ +/doc/asio/reference/basic_random_access_file/read_some_at.html +/doc/asio/reference/basic_random_access_file/read_some_at/overload1.html +/doc/asio/reference/basic_random_access_file/read_some_at/overload2.html +/doc/asio/reference/basic_random_access_file/read_write.html +/doc/asio/reference/basic_random_access_file__rebind_executor/ +/doc/asio/reference/basic_random_access_file__rebind_executor.html +/doc/asio/reference/basic_random_access_file__rebind_executor/other.html +/doc/asio/reference/basic_random_access_file/release/ +/doc/asio/reference/basic_random_access_file/release.html +/doc/asio/reference/basic_random_access_file/release/overload1.html +/doc/asio/reference/basic_random_access_file/release/overload2.html +/doc/asio/reference/basic_random_access_file/resize/ +/doc/asio/reference/basic_random_access_file/resize.html +/doc/asio/reference/basic_random_access_file/resize/overload1.html +/doc/asio/reference/basic_random_access_file/resize/overload2.html +/doc/asio/reference/basic_random_access_file/seek_basis.html +/doc/asio/reference/basic_random_access_file/size/ +/doc/asio/reference/basic_random_access_file/size.html +/doc/asio/reference/basic_random_access_file/size/overload1.html +/doc/asio/reference/basic_random_access_file/size/overload2.html +/doc/asio/reference/basic_random_access_file/sync_all/ +/doc/asio/reference/basic_random_access_file/sync_all.html +/doc/asio/reference/basic_random_access_file/sync_all_on_write.html +/doc/asio/reference/basic_random_access_file/sync_all/overload1.html +/doc/asio/reference/basic_random_access_file/sync_all/overload2.html +/doc/asio/reference/basic_random_access_file/sync_data/ +/doc/asio/reference/basic_random_access_file/sync_data.html +/doc/asio/reference/basic_random_access_file/sync_data/overload1.html +/doc/asio/reference/basic_random_access_file/sync_data/overload2.html +/doc/asio/reference/basic_random_access_file/truncate.html +/doc/asio/reference/basic_random_access_file/write_only.html +/doc/asio/reference/basic_random_access_file/write_some_at/ +/doc/asio/reference/basic_random_access_file/write_some_at.html +/doc/asio/reference/basic_random_access_file/write_some_at/overload1.html +/doc/asio/reference/basic_random_access_file/write_some_at/overload2.html /doc/asio/reference/basic_raw_socket/ /doc/asio/reference/basic_raw_socket/assign/ /doc/asio/reference/basic_raw_socket/assign.html @@ -493,7 +949,6 @@ /doc/asio/reference/basic_raw_socket/get_option/overload1.html /doc/asio/reference/basic_raw_socket/get_option/overload2.html /doc/asio/reference/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/impl_.html /doc/asio/reference/basic_raw_socket/io_control/ /doc/asio/reference/basic_raw_socket/io_control.html /doc/asio/reference/basic_raw_socket/io_control/overload1.html @@ -589,6 +1044,55 @@ /doc/asio/reference/basic_raw_socket/wait/overload1.html /doc/asio/reference/basic_raw_socket/wait/overload2.html /doc/asio/reference/basic_raw_socket/wait_type.html +/doc/asio/reference/basic_readable_pipe/ +/doc/asio/reference/basic_readable_pipe/assign/ +/doc/asio/reference/basic_readable_pipe/assign.html +/doc/asio/reference/basic_readable_pipe/assign/overload1.html +/doc/asio/reference/basic_readable_pipe/assign/overload2.html +/doc/asio/reference/basic_readable_pipe/async_read_some.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/ +/doc/asio/reference/basic_readable_pipe/_basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload1.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload2.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload3.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload4.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload5.html +/doc/asio/reference/basic_readable_pipe/basic_readable_pipe/overload6.html +/doc/asio/reference/basic_readable_pipe/cancel/ +/doc/asio/reference/basic_readable_pipe/cancel.html +/doc/asio/reference/basic_readable_pipe/cancel/overload1.html +/doc/asio/reference/basic_readable_pipe/cancel/overload2.html +/doc/asio/reference/basic_readable_pipe/close/ +/doc/asio/reference/basic_readable_pipe/close.html +/doc/asio/reference/basic_readable_pipe/close/overload1.html +/doc/asio/reference/basic_readable_pipe/close/overload2.html +/doc/asio/reference/basic_readable_pipe/executor_type.html +/doc/asio/reference/basic_readable_pipe/get_executor.html +/doc/asio/reference/basic_readable_pipe.html +/doc/asio/reference/basic_readable_pipe/is_open.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/ +/doc/asio/reference/basic_readable_pipe/lowest_layer.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/overload1.html +/doc/asio/reference/basic_readable_pipe/lowest_layer/overload2.html +/doc/asio/reference/basic_readable_pipe/lowest_layer_type.html +/doc/asio/reference/basic_readable_pipe/native_handle.html +/doc/asio/reference/basic_readable_pipe/native_handle_type.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/ +/doc/asio/reference/basic_readable_pipe/operator_eq_.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/overload1.html +/doc/asio/reference/basic_readable_pipe/operator_eq_/overload2.html +/doc/asio/reference/basic_readable_pipe/read_some/ +/doc/asio/reference/basic_readable_pipe/read_some.html +/doc/asio/reference/basic_readable_pipe/read_some/overload1.html +/doc/asio/reference/basic_readable_pipe/read_some/overload2.html +/doc/asio/reference/basic_readable_pipe__rebind_executor/ +/doc/asio/reference/basic_readable_pipe__rebind_executor.html +/doc/asio/reference/basic_readable_pipe__rebind_executor/other.html +/doc/asio/reference/basic_readable_pipe/release/ +/doc/asio/reference/basic_readable_pipe/release.html +/doc/asio/reference/basic_readable_pipe/release/overload1.html +/doc/asio/reference/basic_readable_pipe/release/overload2.html /doc/asio/reference/basic_seq_packet_socket/ /doc/asio/reference/basic_seq_packet_socket/assign/ /doc/asio/reference/basic_seq_packet_socket/assign.html @@ -651,7 +1155,6 @@ /doc/asio/reference/basic_seq_packet_socket/get_option/overload1.html /doc/asio/reference/basic_seq_packet_socket/get_option/overload2.html /doc/asio/reference/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/impl_.html /doc/asio/reference/basic_seq_packet_socket/io_control/ /doc/asio/reference/basic_seq_packet_socket/io_control.html /doc/asio/reference/basic_seq_packet_socket/io_control/overload1.html @@ -746,6 +1249,7 @@ /doc/asio/reference/basic_serial_port/basic_serial_port/ /doc/asio/reference/basic_serial_port/_basic_serial_port.html /doc/asio/reference/basic_serial_port/basic_serial_port.html +/doc/asio/reference/basic_serial_port/basic_serial_port/overload10.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload1.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload2.html /doc/asio/reference/basic_serial_port/basic_serial_port/overload3.html @@ -782,7 +1286,10 @@ /doc/asio/reference/basic_serial_port/open.html /doc/asio/reference/basic_serial_port/open/overload1.html /doc/asio/reference/basic_serial_port/open/overload2.html +/doc/asio/reference/basic_serial_port/operator_eq_/ /doc/asio/reference/basic_serial_port/operator_eq_.html +/doc/asio/reference/basic_serial_port/operator_eq_/overload1.html +/doc/asio/reference/basic_serial_port/operator_eq_/overload2.html /doc/asio/reference/basic_serial_port/read_some/ /doc/asio/reference/basic_serial_port/read_some.html /doc/asio/reference/basic_serial_port/read_some/overload1.html @@ -807,6 +1314,8 @@ /doc/asio/reference/basic_signal_set/add.html /doc/asio/reference/basic_signal_set/add/overload1.html /doc/asio/reference/basic_signal_set/add/overload2.html +/doc/asio/reference/basic_signal_set/add/overload3.html +/doc/asio/reference/basic_signal_set/add/overload4.html /doc/asio/reference/basic_signal_set/async_wait.html /doc/asio/reference/basic_signal_set/basic_signal_set/ /doc/asio/reference/basic_signal_set/_basic_signal_set.html @@ -828,6 +1337,8 @@ /doc/asio/reference/basic_signal_set/clear/overload1.html /doc/asio/reference/basic_signal_set/clear/overload2.html /doc/asio/reference/basic_signal_set/executor_type.html +/doc/asio/reference/basic_signal_set/flags.html +/doc/asio/reference/basic_signal_set/flags_t.html /doc/asio/reference/basic_signal_set/get_executor.html /doc/asio/reference/basic_signal_set.html /doc/asio/reference/basic_signal_set__rebind_executor/ @@ -1032,7 +1543,6 @@ /doc/asio/reference/basic_socket/get_option/overload1.html /doc/asio/reference/basic_socket/get_option/overload2.html /doc/asio/reference/basic_socket.html -/doc/asio/reference/basic_socket/impl_.html /doc/asio/reference/basic_socket/io_control/ /doc/asio/reference/basic_socket/io_control.html /doc/asio/reference/basic_socket/io_control/overload1.html @@ -1208,6 +1718,95 @@ /doc/asio/reference/basic_streambuf/reserve.html /doc/asio/reference/basic_streambuf/size.html /doc/asio/reference/basic_streambuf/underflow.html +/doc/asio/reference/basic_stream_file/ +/doc/asio/reference/basic_stream_file/append.html +/doc/asio/reference/basic_stream_file/assign/ +/doc/asio/reference/basic_stream_file/assign.html +/doc/asio/reference/basic_stream_file/assign/overload1.html +/doc/asio/reference/basic_stream_file/assign/overload2.html +/doc/asio/reference/basic_stream_file/async_read_some.html +/doc/asio/reference/basic_stream_file/async_write_some.html +/doc/asio/reference/basic_stream_file/basic_stream_file/ +/doc/asio/reference/basic_stream_file/_basic_stream_file.html +/doc/asio/reference/basic_stream_file/basic_stream_file.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload10.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload1.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload2.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload3.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload4.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload5.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload6.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload7.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload8.html +/doc/asio/reference/basic_stream_file/basic_stream_file/overload9.html +/doc/asio/reference/basic_stream_file/cancel/ +/doc/asio/reference/basic_stream_file/cancel.html +/doc/asio/reference/basic_stream_file/cancel/overload1.html +/doc/asio/reference/basic_stream_file/cancel/overload2.html +/doc/asio/reference/basic_stream_file/close/ +/doc/asio/reference/basic_stream_file/close.html +/doc/asio/reference/basic_stream_file/close/overload1.html +/doc/asio/reference/basic_stream_file/close/overload2.html +/doc/asio/reference/basic_stream_file/create.html +/doc/asio/reference/basic_stream_file/exclusive.html +/doc/asio/reference/basic_stream_file/executor_type.html +/doc/asio/reference/basic_stream_file/flags.html +/doc/asio/reference/basic_stream_file/get_executor.html +/doc/asio/reference/basic_stream_file.html +/doc/asio/reference/basic_stream_file/is_open.html +/doc/asio/reference/basic_stream_file/native_handle.html +/doc/asio/reference/basic_stream_file/native_handle_type.html +/doc/asio/reference/basic_stream_file/open/ +/doc/asio/reference/basic_stream_file/open.html +/doc/asio/reference/basic_stream_file/open/overload1.html +/doc/asio/reference/basic_stream_file/open/overload2.html +/doc/asio/reference/basic_stream_file/open/overload3.html +/doc/asio/reference/basic_stream_file/open/overload4.html +/doc/asio/reference/basic_stream_file/operator_eq_/ +/doc/asio/reference/basic_stream_file/operator_eq_.html +/doc/asio/reference/basic_stream_file/operator_eq_/overload1.html +/doc/asio/reference/basic_stream_file/operator_eq_/overload2.html +/doc/asio/reference/basic_stream_file/read_only.html +/doc/asio/reference/basic_stream_file/read_some/ +/doc/asio/reference/basic_stream_file/read_some.html +/doc/asio/reference/basic_stream_file/read_some/overload1.html +/doc/asio/reference/basic_stream_file/read_some/overload2.html +/doc/asio/reference/basic_stream_file/read_write.html +/doc/asio/reference/basic_stream_file__rebind_executor/ +/doc/asio/reference/basic_stream_file__rebind_executor.html +/doc/asio/reference/basic_stream_file__rebind_executor/other.html +/doc/asio/reference/basic_stream_file/release/ +/doc/asio/reference/basic_stream_file/release.html +/doc/asio/reference/basic_stream_file/release/overload1.html +/doc/asio/reference/basic_stream_file/release/overload2.html +/doc/asio/reference/basic_stream_file/resize/ +/doc/asio/reference/basic_stream_file/resize.html +/doc/asio/reference/basic_stream_file/resize/overload1.html +/doc/asio/reference/basic_stream_file/resize/overload2.html +/doc/asio/reference/basic_stream_file/seek/ +/doc/asio/reference/basic_stream_file/seek_basis.html +/doc/asio/reference/basic_stream_file/seek.html +/doc/asio/reference/basic_stream_file/seek/overload1.html +/doc/asio/reference/basic_stream_file/seek/overload2.html +/doc/asio/reference/basic_stream_file/size/ +/doc/asio/reference/basic_stream_file/size.html +/doc/asio/reference/basic_stream_file/size/overload1.html +/doc/asio/reference/basic_stream_file/size/overload2.html +/doc/asio/reference/basic_stream_file/sync_all/ +/doc/asio/reference/basic_stream_file/sync_all.html +/doc/asio/reference/basic_stream_file/sync_all_on_write.html +/doc/asio/reference/basic_stream_file/sync_all/overload1.html +/doc/asio/reference/basic_stream_file/sync_all/overload2.html +/doc/asio/reference/basic_stream_file/sync_data/ +/doc/asio/reference/basic_stream_file/sync_data.html +/doc/asio/reference/basic_stream_file/sync_data/overload1.html +/doc/asio/reference/basic_stream_file/sync_data/overload2.html +/doc/asio/reference/basic_stream_file/truncate.html +/doc/asio/reference/basic_stream_file/write_only.html +/doc/asio/reference/basic_stream_file/write_some/ +/doc/asio/reference/basic_stream_file/write_some.html +/doc/asio/reference/basic_stream_file/write_some/overload1.html +/doc/asio/reference/basic_stream_file/write_some/overload2.html /doc/asio/reference/basic_stream_socket/ /doc/asio/reference/basic_stream_socket/assign/ /doc/asio/reference/basic_stream_socket/assign.html @@ -1275,7 +1874,6 @@ /doc/asio/reference/basic_stream_socket/get_option/overload1.html /doc/asio/reference/basic_stream_socket/get_option/overload2.html /doc/asio/reference/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/impl_.html /doc/asio/reference/basic_stream_socket/io_control/ /doc/asio/reference/basic_stream_socket/io_control.html /doc/asio/reference/basic_stream_socket/io_control/overload1.html @@ -1452,19 +2050,81 @@ /doc/asio/reference/basic_waitable_timer/wait.html /doc/asio/reference/basic_waitable_timer/wait/overload1.html /doc/asio/reference/basic_waitable_timer/wait/overload2.html +/doc/asio/reference/basic_writable_pipe/ +/doc/asio/reference/basic_writable_pipe/assign/ +/doc/asio/reference/basic_writable_pipe/assign.html +/doc/asio/reference/basic_writable_pipe/assign/overload1.html +/doc/asio/reference/basic_writable_pipe/assign/overload2.html +/doc/asio/reference/basic_writable_pipe/async_write_some.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/ +/doc/asio/reference/basic_writable_pipe/_basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload1.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload2.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload3.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload4.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload5.html +/doc/asio/reference/basic_writable_pipe/basic_writable_pipe/overload6.html +/doc/asio/reference/basic_writable_pipe/cancel/ +/doc/asio/reference/basic_writable_pipe/cancel.html +/doc/asio/reference/basic_writable_pipe/cancel/overload1.html +/doc/asio/reference/basic_writable_pipe/cancel/overload2.html +/doc/asio/reference/basic_writable_pipe/close/ +/doc/asio/reference/basic_writable_pipe/close.html +/doc/asio/reference/basic_writable_pipe/close/overload1.html +/doc/asio/reference/basic_writable_pipe/close/overload2.html +/doc/asio/reference/basic_writable_pipe/executor_type.html +/doc/asio/reference/basic_writable_pipe/get_executor.html +/doc/asio/reference/basic_writable_pipe.html +/doc/asio/reference/basic_writable_pipe/is_open.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/ +/doc/asio/reference/basic_writable_pipe/lowest_layer.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/overload1.html +/doc/asio/reference/basic_writable_pipe/lowest_layer/overload2.html +/doc/asio/reference/basic_writable_pipe/lowest_layer_type.html +/doc/asio/reference/basic_writable_pipe/native_handle.html +/doc/asio/reference/basic_writable_pipe/native_handle_type.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/ +/doc/asio/reference/basic_writable_pipe/operator_eq_.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/overload1.html +/doc/asio/reference/basic_writable_pipe/operator_eq_/overload2.html +/doc/asio/reference/basic_writable_pipe__rebind_executor/ +/doc/asio/reference/basic_writable_pipe__rebind_executor.html +/doc/asio/reference/basic_writable_pipe__rebind_executor/other.html +/doc/asio/reference/basic_writable_pipe/release/ +/doc/asio/reference/basic_writable_pipe/release.html +/doc/asio/reference/basic_writable_pipe/release/overload1.html +/doc/asio/reference/basic_writable_pipe/release/overload2.html +/doc/asio/reference/basic_writable_pipe/write_some/ +/doc/asio/reference/basic_writable_pipe/write_some.html +/doc/asio/reference/basic_writable_pipe/write_some/overload1.html +/doc/asio/reference/basic_writable_pipe/write_some/overload2.html /doc/asio/reference/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context/ /doc/asio/reference/basic_yield_context/basic_yield_context.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/asio/reference/basic_yield_context/callee_type.html -/doc/asio/reference/basic_yield_context/caller_type.html +/doc/asio/reference/basic_yield_context/cancellation_slot_type.html +/doc/asio/reference/basic_yield_context/cancelled.html +/doc/asio/reference/basic_yield_context/executor_type.html +/doc/asio/reference/basic_yield_context/get_cancellation_slot.html +/doc/asio/reference/basic_yield_context/get_cancellation_state.html +/doc/asio/reference/basic_yield_context/get_executor.html /doc/asio/reference/basic_yield_context.html /doc/asio/reference/basic_yield_context/operator_lb__rb_.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/ +/doc/asio/reference/basic_yield_context/reset_cancellation_state.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload1.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload2.html +/doc/asio/reference/basic_yield_context/reset_cancellation_state/overload3.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/ +/doc/asio/reference/basic_yield_context/throw_if_cancelled.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/overload1.html +/doc/asio/reference/basic_yield_context/throw_if_cancelled/overload2.html +/doc/asio/reference/bind_allocator.html +/doc/asio/reference/bind_cancellation_slot.html /doc/asio/reference/bind_executor/ /doc/asio/reference/bind_executor.html /doc/asio/reference/bind_executor/overload1.html /doc/asio/reference/bind_executor/overload2.html +/doc/asio/reference/bind_immediate_executor.html /doc/asio/reference/buffer/ /doc/asio/reference/buffer_cast/ /doc/asio/reference/buffer_cast.html @@ -1475,6 +2135,7 @@ /doc/asio/reference/buffer_copy/overload1.html /doc/asio/reference/buffer_copy/overload2.html /doc/asio/reference/BufferedHandshakeHandler.html +/doc/asio/reference/BufferedHandshakeToken.html /doc/asio/reference/buffered_read_stream/ /doc/asio/reference/buffered_read_stream/async_fill.html /doc/asio/reference/buffered_read_stream/async_read_some.html @@ -1609,6 +2270,10 @@ /doc/asio/reference/buffered_write_stream/write_some/overload1.html /doc/asio/reference/buffered_write_stream/write_some/overload2.html /doc/asio/reference/buffer.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/ +/doc/asio/reference/buffer_literals__operator_quot__quot__buf.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/overload1.html +/doc/asio/reference/buffer_literals__operator_quot__quot__buf/overload2.html /doc/asio/reference/buffer/overload10.html /doc/asio/reference/buffer/overload11.html /doc/asio/reference/buffer/overload12.html @@ -1634,13 +2299,42 @@ /doc/asio/reference/buffer/overload30.html /doc/asio/reference/buffer/overload31.html /doc/asio/reference/buffer/overload32.html +/doc/asio/reference/buffer/overload33.html +/doc/asio/reference/buffer/overload34.html +/doc/asio/reference/buffer/overload35.html +/doc/asio/reference/buffer/overload36.html +/doc/asio/reference/buffer/overload37.html +/doc/asio/reference/buffer/overload38.html +/doc/asio/reference/buffer/overload39.html /doc/asio/reference/buffer/overload3.html +/doc/asio/reference/buffer/overload40.html +/doc/asio/reference/buffer/overload41.html +/doc/asio/reference/buffer/overload42.html /doc/asio/reference/buffer/overload4.html /doc/asio/reference/buffer/overload5.html /doc/asio/reference/buffer/overload6.html /doc/asio/reference/buffer/overload7.html /doc/asio/reference/buffer/overload8.html /doc/asio/reference/buffer/overload9.html +/doc/asio/reference/buffer_registration/ +/doc/asio/reference/buffer_registration/allocator_type.html +/doc/asio/reference/buffer_registration/at.html +/doc/asio/reference/buffer_registration/begin.html +/doc/asio/reference/buffer_registration/buffer_registration/ +/doc/asio/reference/buffer_registration/_buffer_registration.html +/doc/asio/reference/buffer_registration/buffer_registration.html +/doc/asio/reference/buffer_registration/buffer_registration/overload1.html +/doc/asio/reference/buffer_registration/buffer_registration/overload2.html +/doc/asio/reference/buffer_registration/buffer_registration/overload3.html +/doc/asio/reference/buffer_registration/cbegin.html +/doc/asio/reference/buffer_registration/cend.html +/doc/asio/reference/buffer_registration/const_iterator.html +/doc/asio/reference/buffer_registration/end.html +/doc/asio/reference/buffer_registration.html +/doc/asio/reference/buffer_registration/iterator.html +/doc/asio/reference/buffer_registration/operator_eq_.html +/doc/asio/reference/buffer_registration/operator_lb__rb_.html +/doc/asio/reference/buffer_registration/size.html /doc/asio/reference/buffers_begin.html /doc/asio/reference/buffers_end.html /doc/asio/reference/buffer_sequence_begin/ @@ -1649,12 +2343,16 @@ /doc/asio/reference/buffer_sequence_begin/overload2.html /doc/asio/reference/buffer_sequence_begin/overload3.html /doc/asio/reference/buffer_sequence_begin/overload4.html +/doc/asio/reference/buffer_sequence_begin/overload5.html +/doc/asio/reference/buffer_sequence_begin/overload6.html /doc/asio/reference/buffer_sequence_end/ /doc/asio/reference/buffer_sequence_end.html /doc/asio/reference/buffer_sequence_end/overload1.html /doc/asio/reference/buffer_sequence_end/overload2.html /doc/asio/reference/buffer_sequence_end/overload3.html /doc/asio/reference/buffer_sequence_end/overload4.html +/doc/asio/reference/buffer_sequence_end/overload5.html +/doc/asio/reference/buffer_sequence_end/overload6.html /doc/asio/reference/buffers_iterator/ /doc/asio/reference/buffers_iterator/begin.html /doc/asio/reference/buffers_iterator/buffers_iterator.html @@ -1693,12 +2391,77 @@ /doc/asio/reference/buffers_iterator/reference.html /doc/asio/reference/buffers_iterator/value_type.html /doc/asio/reference/buffer_size.html +/doc/asio/reference/cancellation_filter/ +/doc/asio/reference/cancellation_filter.html +/doc/asio/reference/cancellation_filter/operator_lp__rp_.html +/doc/asio/reference/CancellationHandler.html +/doc/asio/reference/cancellation_signal/ +/doc/asio/reference/cancellation_signal/_cancellation_signal.html +/doc/asio/reference/cancellation_signal/cancellation_signal.html +/doc/asio/reference/cancellation_signal/emit.html +/doc/asio/reference/cancellation_signal.html +/doc/asio/reference/cancellation_signal/slot.html +/doc/asio/reference/cancellation_slot/ +/doc/asio/reference/cancellation_slot/assign.html +/doc/asio/reference/cancellation_slot_binder/ +/doc/asio/reference/cancellation_slot_binder/argument_type.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/ +/doc/asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html +/doc/asio/reference/cancellation_slot_binder/cancellation_slot_type.html +/doc/asio/reference/cancellation_slot_binder/first_argument_type.html +/doc/asio/reference/cancellation_slot_binder/get/ +/doc/asio/reference/cancellation_slot_binder/get_cancellation_slot.html +/doc/asio/reference/cancellation_slot_binder/get.html +/doc/asio/reference/cancellation_slot_binder/get/overload1.html +/doc/asio/reference/cancellation_slot_binder/get/overload2.html +/doc/asio/reference/cancellation_slot_binder.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/ +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/cancellation_slot_binder/result_type.html +/doc/asio/reference/cancellation_slot_binder/second_argument_type.html +/doc/asio/reference/cancellation_slot_binder/target_type.html +/doc/asio/reference/cancellation_slot/cancellation_slot.html +/doc/asio/reference/cancellation_slot/clear.html +/doc/asio/reference/cancellation_slot/emplace.html +/doc/asio/reference/cancellation_slot/has_handler.html +/doc/asio/reference/CancellationSlot.html +/doc/asio/reference/cancellation_slot.html +/doc/asio/reference/cancellation_slot/is_connected.html +/doc/asio/reference/cancellation_slot/operator_eq__eq_.html +/doc/asio/reference/cancellation_slot/operator_not__eq_.html +/doc/asio/reference/cancellation_state/ +/doc/asio/reference/cancellation_state/cancellation_state/ +/doc/asio/reference/cancellation_state/cancellation_state.html +/doc/asio/reference/cancellation_state/cancellation_state/overload1.html +/doc/asio/reference/cancellation_state/cancellation_state/overload2.html +/doc/asio/reference/cancellation_state/cancellation_state/overload3.html +/doc/asio/reference/cancellation_state/cancellation_state/overload4.html +/doc/asio/reference/cancellation_state/cancelled.html +/doc/asio/reference/cancellation_state/clear.html +/doc/asio/reference/cancellation_state.html +/doc/asio/reference/cancellation_state/slot.html +/doc/asio/reference/cancellation_type.html +/doc/asio/reference/cancellation_type_t.html /doc/asio/reference/can_prefer.html /doc/asio/reference/can_query.html /doc/asio/reference/can_require_concept.html /doc/asio/reference/can_require.html /doc/asio/reference/CompletionCondition.html -/doc/asio/reference/CompletionHandler.html +/doc/asio/reference/completion_signature_of/ +/doc/asio/reference/completion_signature_of.html +/doc/asio/reference/completion_signature_of/type.html /doc/asio/reference/connect/ /doc/asio/reference/ConnectCondition.html /doc/asio/reference/ConnectHandler.html @@ -1715,6 +2478,15 @@ /doc/asio/reference/connect/overload7.html /doc/asio/reference/connect/overload8.html /doc/asio/reference/connect/overload9.html +/doc/asio/reference/connect_pipe/ +/doc/asio/reference/connect_pipe.html +/doc/asio/reference/connect_pipe/overload1.html +/doc/asio/reference/connect_pipe/overload2.html +/doc/asio/reference/ConnectToken.html +/doc/asio/reference/consign.html +/doc/asio/reference/consign_t/ +/doc/asio/reference/consign_t/consign_t.html +/doc/asio/reference/consign_t.html /doc/asio/reference/const_buffer/ /doc/asio/reference/const_buffer/const_buffer/ /doc/asio/reference/const_buffer/const_buffer.html @@ -1747,6 +2519,21 @@ /doc/asio/reference/const_buffers_1/value_type.html /doc/asio/reference/ConstBufferSequence.html /doc/asio/reference/const_buffer/size.html +/doc/asio/reference/const_registered_buffer/ +/doc/asio/reference/const_registered_buffer/buffer.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/ +/doc/asio/reference/const_registered_buffer/const_registered_buffer.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/overload1.html +/doc/asio/reference/const_registered_buffer/const_registered_buffer/overload2.html +/doc/asio/reference/const_registered_buffer/data.html +/doc/asio/reference/const_registered_buffer.html +/doc/asio/reference/const_registered_buffer/id.html +/doc/asio/reference/const_registered_buffer/operator_plus_/ +/doc/asio/reference/const_registered_buffer/operator_plus__eq_.html +/doc/asio/reference/const_registered_buffer/operator_plus_.html +/doc/asio/reference/const_registered_buffer/operator_plus_/overload1.html +/doc/asio/reference/const_registered_buffer/operator_plus_/overload2.html +/doc/asio/reference/const_registered_buffer/size.html /doc/asio/reference/coroutine/ /doc/asio/reference/coroutine/coroutine.html /doc/asio/reference/coroutine.html @@ -1770,6 +2557,62 @@ /doc/asio/reference/defer/overload1.html /doc/asio/reference/defer/overload2.html /doc/asio/reference/defer/overload3.html +/doc/asio/reference/deferred_async_operation/ +/doc/asio/reference/deferred_async_operation/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation/detail__index_sequence_for.html +/doc/asio/reference/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/ +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/deferred_async_operation.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/detail__index_sequence_for.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_.html +/doc/asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/operator_lp__rp_.html +/doc/asio/reference/deferred_async_operation/operator_lp__rp_.html +/doc/asio/reference/deferred_conditional/ +/doc/asio/reference/deferred_conditional/deferred_conditional.html +/doc/asio/reference/deferred_conditional.html +/doc/asio/reference/deferred_conditional/operator_lp__rp_.html +/doc/asio/reference/deferred_conditional/otherwise.html +/doc/asio/reference/deferred_conditional/then.html +/doc/asio/reference/deferred_function/ +/doc/asio/reference/deferred_function/deferred_function.html +/doc/asio/reference/deferred_function/function_.html +/doc/asio/reference/deferred_function.html +/doc/asio/reference/deferred_function/operator_lp__rp_.html +/doc/asio/reference/deferred.html +/doc/asio/reference/deferred_init_tag.html +/doc/asio/reference/deferred_noop/ +/doc/asio/reference/deferred_noop.html +/doc/asio/reference/deferred_noop/operator_lp__rp_.html +/doc/asio/reference/deferred_sequence/ +/doc/asio/reference/deferred_sequence/deferred_sequence.html +/doc/asio/reference/deferred_sequence.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/ +/doc/asio/reference/deferred_sequence/operator_lp__rp_.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/overload1.html +/doc/asio/reference/deferred_sequence/operator_lp__rp_/overload2.html +/doc/asio/reference/deferred_signatures.html +/doc/asio/reference/deferred_t/ +/doc/asio/reference/deferred_t/as_default_on.html +/doc/asio/reference/deferred_t/deferred_t.html +/doc/asio/reference/deferred_t__executor_with_default/ +/doc/asio/reference/deferred_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/deferred_t__executor_with_default/executor_with_default.html +/doc/asio/reference/deferred_t__executor_with_default.html +/doc/asio/reference/deferred_t.html +/doc/asio/reference/deferred_t/operator_lp__rp_/ +/doc/asio/reference/deferred_t/operator_lp__rp_.html +/doc/asio/reference/deferred_t/operator_lp__rp_/overload1.html +/doc/asio/reference/deferred_t/operator_lp__rp_/overload2.html +/doc/asio/reference/deferred_t/values.html +/doc/asio/reference/deferred_t/when.html +/doc/asio/reference/deferred_values/ +/doc/asio/reference/deferred_values/deferred_values.html +/doc/asio/reference/deferred_values/detail__index_sequence_for.html +/doc/asio/reference/deferred_values.html +/doc/asio/reference/deferred_values__initiate/ +/doc/asio/reference/deferred_values__initiate.html +/doc/asio/reference/deferred_values__initiate/operator_lp__rp_.html +/doc/asio/reference/deferred_values/operator_lp__rp_.html /doc/asio/reference/detached.html /doc/asio/reference/detached_t/ /doc/asio/reference/detached_t/as_default_on.html @@ -1782,6 +2625,7 @@ /doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html /doc/asio/reference/detached_t__executor_with_default.html /doc/asio/reference/detached_t.html +/doc/asio/reference/disable_cancellation.html /doc/asio/reference/dispatch/ /doc/asio/reference/dispatch.html /doc/asio/reference/dispatch/overload1.html @@ -1840,6 +2684,9 @@ /doc/asio/reference/dynamic_vector_buffer/prepare.html /doc/asio/reference/dynamic_vector_buffer/shrink.html /doc/asio/reference/dynamic_vector_buffer/size.html +/doc/asio/reference/enable_partial_cancellation.html +/doc/asio/reference/enable_terminal_cancellation.html +/doc/asio/reference/enable_total_cancellation.html /doc/asio/reference/Endpoint.html /doc/asio/reference/EndpointSequence.html /doc/asio/reference/error__addrinfo_category.html @@ -1852,6 +2699,7 @@ /doc/asio/reference/error_category/name.html /doc/asio/reference/error_category/operator_eq__eq_.html /doc/asio/reference/error_category/operator_not__eq_.html +/doc/asio/reference/error__clear.html /doc/asio/reference/error_code/ /doc/asio/reference/error_code/assign.html /doc/asio/reference/error_code/category.html @@ -1902,12 +2750,16 @@ /doc/asio/reference/execution__any_executor/any_executor/ /doc/asio/reference/execution__any_executor/_any_executor.html /doc/asio/reference/execution__any_executor/any_executor.html +/doc/asio/reference/execution__any_executor/any_executor/overload10.html /doc/asio/reference/execution__any_executor/any_executor/overload1.html /doc/asio/reference/execution__any_executor/any_executor/overload2.html /doc/asio/reference/execution__any_executor/any_executor/overload3.html /doc/asio/reference/execution__any_executor/any_executor/overload4.html /doc/asio/reference/execution__any_executor/any_executor/overload5.html /doc/asio/reference/execution__any_executor/any_executor/overload6.html +/doc/asio/reference/execution__any_executor/any_executor/overload7.html +/doc/asio/reference/execution__any_executor/any_executor/overload8.html +/doc/asio/reference/execution__any_executor/any_executor/overload9.html /doc/asio/reference/execution__any_executor/context.html /doc/asio/reference/execution__any_executor/execute.html /doc/asio/reference/execution__any_executor.html @@ -2341,6 +3193,254 @@ /doc/asio/reference/executor_work_guard.html /doc/asio/reference/executor_work_guard/owns_work.html /doc/asio/reference/executor_work_guard/reset.html +/doc/asio/reference/experimental__as_single.html +/doc/asio/reference/experimental__as_single_t/ +/doc/asio/reference/experimental__as_single_t/as_default_on.html +/doc/asio/reference/experimental__as_single_t/as_single_t/ +/doc/asio/reference/experimental__as_single_t/as_single_t.html +/doc/asio/reference/experimental__as_single_t/as_single_t/overload1.html +/doc/asio/reference/experimental__as_single_t/as_single_t/overload2.html +/doc/asio/reference/experimental__as_single_t__default_constructor_tag.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/ +/doc/asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html +/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html +/doc/asio/reference/experimental__as_single_t__executor_with_default.html +/doc/asio/reference/experimental__as_single_t.html +/doc/asio/reference/experimental__as_single_t/token_.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/ +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html +/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html +/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html +/doc/asio/reference/experimental__basic_channel/ +/doc/asio/reference/experimental__basic_channel/async_receive.html +/doc/asio/reference/experimental__basic_channel/async_send.html +/doc/asio/reference/experimental__basic_channel/basic_channel/ +/doc/asio/reference/experimental__basic_channel/_basic_channel.html +/doc/asio/reference/experimental__basic_channel/basic_channel.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload1.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload2.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload3.html +/doc/asio/reference/experimental__basic_channel/basic_channel/overload4.html +/doc/asio/reference/experimental__basic_channel/cancel.html +/doc/asio/reference/experimental__basic_channel/capacity.html +/doc/asio/reference/experimental__basic_channel/close.html +/doc/asio/reference/experimental__basic_channel/executor_type.html +/doc/asio/reference/experimental__basic_channel/get_executor.html +/doc/asio/reference/experimental__basic_channel.html +/doc/asio/reference/experimental__basic_channel/is_open.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/ +/doc/asio/reference/experimental__basic_channel/operator_eq_.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/overload1.html +/doc/asio/reference/experimental__basic_channel/operator_eq_/overload2.html +/doc/asio/reference/experimental__basic_channel/ready.html +/doc/asio/reference/experimental__basic_channel__rebind_executor/ +/doc/asio/reference/experimental__basic_channel__rebind_executor.html +/doc/asio/reference/experimental__basic_channel__rebind_executor/other.html +/doc/asio/reference/experimental__basic_channel/reset.html +/doc/asio/reference/experimental__basic_channel/traits_type.html +/doc/asio/reference/experimental__basic_channel/try_receive.html +/doc/asio/reference/experimental__basic_channel/try_send.html +/doc/asio/reference/experimental__basic_channel/try_send_n.html +/doc/asio/reference/experimental__basic_concurrent_channel/ +/doc/asio/reference/experimental__basic_concurrent_channel/async_receive.html +/doc/asio/reference/experimental__basic_concurrent_channel/async_send.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/ +/doc/asio/reference/experimental__basic_concurrent_channel/_basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload1.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload2.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload3.html +/doc/asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload4.html +/doc/asio/reference/experimental__basic_concurrent_channel/cancel.html +/doc/asio/reference/experimental__basic_concurrent_channel/capacity.html +/doc/asio/reference/experimental__basic_concurrent_channel/close.html +/doc/asio/reference/experimental__basic_concurrent_channel/executor_type.html +/doc/asio/reference/experimental__basic_concurrent_channel/get_executor.html +/doc/asio/reference/experimental__basic_concurrent_channel.html +/doc/asio/reference/experimental__basic_concurrent_channel/is_open.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/ +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload1.html +/doc/asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload2.html +/doc/asio/reference/experimental__basic_concurrent_channel/ready.html +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor/ +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor.html +/doc/asio/reference/experimental__basic_concurrent_channel__rebind_executor/other.html +/doc/asio/reference/experimental__basic_concurrent_channel/reset.html +/doc/asio/reference/experimental__basic_concurrent_channel/traits_type.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_receive.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_send.html +/doc/asio/reference/experimental__basic_concurrent_channel/try_send_n.html +/doc/asio/reference/experimental__channel_traits/ +/doc/asio/reference/experimental__channel_traits__container/ +/doc/asio/reference/experimental__channel_traits__container.html +/doc/asio/reference/experimental__channel_traits__container/type.html +/doc/asio/reference/experimental__channel_traits.html +/doc/asio/reference/experimental__channel_traits/invoke_receive_cancelled.html +/doc/asio/reference/experimental__channel_traits/invoke_receive_closed.html +/doc/asio/reference/experimental__channel_traits__rebind/ +/doc/asio/reference/experimental__channel_traits__rebind.html +/doc/asio/reference/experimental__channel_traits__rebind/other.html +/doc/asio/reference/experimental__channel_traits/receive_cancelled_signature.html +/doc/asio/reference/experimental__channel_traits/receive_closed_signature.html +/doc/asio/reference/experimental__co_composed.html +/doc/asio/reference/experimental__coro/ +/doc/asio/reference/experimental__coro/async_resume/ +/doc/asio/reference/experimental__coro/async_resume.html +/doc/asio/reference/experimental__coro/async_resume/overload1.html +/doc/asio/reference/experimental__coro/async_resume/overload2.html +/doc/asio/reference/experimental__coro/coro/ +/doc/asio/reference/experimental__coro/_coro.html +/doc/asio/reference/experimental__coro/coro.html +/doc/asio/reference/experimental__coro/coro/overload1.html +/doc/asio/reference/experimental__coro/coro/overload2.html +/doc/asio/reference/experimental__coro/coro/overload3.html +/doc/asio/reference/experimental__coro/get_allocator.html +/doc/asio/reference/experimental__coro/get_executor.html +/doc/asio/reference/experimental__coro.html +/doc/asio/reference/experimental__coro/is_noexcept.html +/doc/asio/reference/experimental__coro/is_open.html +/doc/asio/reference/experimental__coro/operator_bool.html +/doc/asio/reference/experimental__coro/operator_co_await.html +/doc/asio/reference/experimental__coro/operator_eq_/ +/doc/asio/reference/experimental__coro/operator_eq_.html +/doc/asio/reference/experimental__coro/operator_eq_/overload1.html +/doc/asio/reference/experimental__coro/operator_eq_/overload2.html +/doc/asio/reference/experimental__coro/operator_lp__rp_.html +/doc/asio/reference/experimental__coro_traits/ +/doc/asio/reference/experimental__coro_traits.html +/doc/asio/reference/experimental__coro_traits/is_noexcept.html +/doc/asio/reference/experimental__co_spawn/ +/doc/asio/reference/experimental__co_spawn.html +/doc/asio/reference/experimental__co_spawn/overload1.html +/doc/asio/reference/experimental__co_spawn/overload2.html +/doc/asio/reference/experimental__co_spawn/overload3.html +/doc/asio/reference/experimental__co_spawn/overload4.html +/doc/asio/reference/experimental__co_spawn/overload5.html +/doc/asio/reference/experimental__co_spawn/overload6.html +/doc/asio/reference/experimental__error__channel_category.html +/doc/asio/reference/experimental__error__channel_errors.html +/doc/asio/reference/experimental__error__get_channel_category.html +/doc/asio/reference/experimental__error__make_error_code.html +/doc/asio/reference/experimental__is_async_operation_range/ +/doc/asio/reference/experimental__is_async_operation_range.html +/doc/asio/reference/experimental__is_async_operation_range/value.html +/doc/asio/reference/experimental__is_promise.html +/doc/asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html +/doc/asio/reference/experimental__is_promise_v.html +/doc/asio/reference/experimental__make_parallel_group/ +/doc/asio/reference/experimental__make_parallel_group.html +/doc/asio/reference/experimental__make_parallel_group/overload1.html +/doc/asio/reference/experimental__make_parallel_group/overload2.html +/doc/asio/reference/experimental__make_parallel_group/overload3.html +/doc/asio/reference/experimental__parallel_group/ +/doc/asio/reference/experimental__parallel_group/async_wait.html +/doc/asio/reference/experimental__parallel_group.html +/doc/asio/reference/experimental__parallel_group/parallel_group.html +/doc/asio/reference/experimental__parallel_group/signature.html +/doc/asio/reference/experimental__promise/ +/doc/asio/reference/experimental__promise/cancel.html +/doc/asio/reference/experimental__promise/completed.html +/doc/asio/reference/experimental__promise.html +/doc/asio/reference/experimental__promise/operator_lp__rp_.html +/doc/asio/reference/experimental__promise/promise/ +/doc/asio/reference/experimental__promise/_promise.html +/doc/asio/reference/experimental__promise/promise.html +/doc/asio/reference/experimental__promise/promise/overload1.html +/doc/asio/reference/experimental__promise/promise/overload2.html +/doc/asio/reference/experimental__promise/promise/overload3.html +/doc/asio/reference/experimental__promise_value_type.html +/doc/asio/reference/experimental__promise_value_type_lt__gt_.html +/doc/asio/reference/experimental__promise_value_type_lt__T__gt_.html +/doc/asio/reference/experimental__ranged_parallel_group/ +/doc/asio/reference/experimental__ranged_parallel_group/async_wait.html +/doc/asio/reference/experimental__ranged_parallel_group.html +/doc/asio/reference/experimental__ranged_parallel_group/ranged_parallel_group.html +/doc/asio/reference/experimental__ranged_parallel_group/signature.html +/doc/asio/reference/experimental__use_coro.html +/doc/asio/reference/experimental__use_coro_t/ +/doc/asio/reference/experimental__use_coro_t/allocator_type.html +/doc/asio/reference/experimental__use_coro_t/as_default_on.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default/ +/doc/asio/reference/experimental__use_coro_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__use_coro_t__executor_with_default.html +/doc/asio/reference/experimental__use_coro_t/get_allocator.html +/doc/asio/reference/experimental__use_coro_t.html +/doc/asio/reference/experimental__use_coro_t/rebind.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/ +/doc/asio/reference/experimental__use_coro_t/use_coro_t.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/overload1.html +/doc/asio/reference/experimental__use_coro_t/use_coro_t/overload2.html +/doc/asio/reference/experimental__use_promise.html +/doc/asio/reference/experimental__use_promise_t/ +/doc/asio/reference/experimental__use_promise_t/allocator_type.html +/doc/asio/reference/experimental__use_promise_t/as_default_on.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/ +/doc/asio/reference/experimental__use_promise_t__executor_with_default/default_completion_token_type.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/ +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload1.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload2.html +/doc/asio/reference/experimental__use_promise_t__executor_with_default.html +/doc/asio/reference/experimental__use_promise_t/get_allocator.html +/doc/asio/reference/experimental__use_promise_t.html +/doc/asio/reference/experimental__use_promise_t/rebind.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/ +/doc/asio/reference/experimental__use_promise_t/use_promise_t.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/overload1.html +/doc/asio/reference/experimental__use_promise_t/use_promise_t/overload2.html +/doc/asio/reference/experimental__wait_for_all/ +/doc/asio/reference/experimental__wait_for_all.html +/doc/asio/reference/experimental__wait_for_all/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one/ +/doc/asio/reference/experimental__wait_for_one_error/ +/doc/asio/reference/experimental__wait_for_one_error.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html +/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html +/doc/asio/reference/experimental__wait_for_one_error/wait_for_one_error.html +/doc/asio/reference/experimental__wait_for_one.html +/doc/asio/reference/experimental__wait_for_one/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_success/ +/doc/asio/reference/experimental__wait_for_one_success.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html +/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html +/doc/asio/reference/experimental__wait_for_one_success/wait_for_one_success.html +/doc/asio/reference/experimental__wait_for_one/wait_for_one.html +/doc/asio/reference/file_base/ +/doc/asio/reference/file_base/append.html +/doc/asio/reference/file_base/create.html +/doc/asio/reference/file_base/exclusive.html +/doc/asio/reference/file_base/_file_base.html +/doc/asio/reference/file_base/flags.html +/doc/asio/reference/file_base.html +/doc/asio/reference/file_base/read_only.html +/doc/asio/reference/file_base/read_write.html +/doc/asio/reference/file_base/seek_basis.html +/doc/asio/reference/file_base/sync_all_on_write.html +/doc/asio/reference/file_base/truncate.html +/doc/asio/reference/file_base/write_only.html /doc/asio/reference/generic__basic_endpoint/ /doc/asio/reference/generic__basic_endpoint/basic_endpoint/ /doc/asio/reference/generic__basic_endpoint/basic_endpoint.html @@ -2423,17 +3523,55 @@ /doc/asio/reference/get_associated_allocator.html /doc/asio/reference/get_associated_allocator/overload1.html /doc/asio/reference/get_associated_allocator/overload2.html +/doc/asio/reference/get_associated_cancellation_slot/ +/doc/asio/reference/get_associated_cancellation_slot.html +/doc/asio/reference/get_associated_cancellation_slot/overload1.html +/doc/asio/reference/get_associated_cancellation_slot/overload2.html /doc/asio/reference/get_associated_executor/ /doc/asio/reference/get_associated_executor.html /doc/asio/reference/get_associated_executor/overload1.html /doc/asio/reference/get_associated_executor/overload2.html /doc/asio/reference/get_associated_executor/overload3.html +/doc/asio/reference/get_associated_immediate_executor/ +/doc/asio/reference/get_associated_immediate_executor.html +/doc/asio/reference/get_associated_immediate_executor/overload1.html +/doc/asio/reference/get_associated_immediate_executor/overload2.html /doc/asio/reference/GettableSerialPortOption.html /doc/asio/reference/GettableSocketOption.html /doc/asio/reference/Handler.html /doc/asio/reference/HandshakeHandler.html +/doc/asio/reference/HandshakeToken.html /doc/asio/reference/high_resolution_timer.html /doc/asio/reference.html +/doc/asio/reference/immediate_executor_binder/ +/doc/asio/reference/immediate_executor_binder/argument_type.html +/doc/asio/reference/immediate_executor_binder/first_argument_type.html +/doc/asio/reference/immediate_executor_binder/get/ +/doc/asio/reference/immediate_executor_binder/get.html +/doc/asio/reference/immediate_executor_binder/get_immediate_executor.html +/doc/asio/reference/immediate_executor_binder/get/overload1.html +/doc/asio/reference/immediate_executor_binder/get/overload2.html +/doc/asio/reference/immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/ +/doc/asio/reference/immediate_executor_binder/_immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload1.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload2.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload3.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload4.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload5.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload6.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload7.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload8.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_binder/overload9.html +/doc/asio/reference/immediate_executor_binder/immediate_executor_type.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/ +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/overload1.html +/doc/asio/reference/immediate_executor_binder/operator_lp__rp_/overload2.html +/doc/asio/reference/immediate_executor_binder/result_type.html +/doc/asio/reference/immediate_executor_binder/second_argument_type.html +/doc/asio/reference/immediate_executor_binder/target_type.html /doc/asio/reference/InternetProtocol.html /doc/asio/reference/invalid_service_owner/ /doc/asio/reference/invalid_service_owner.html @@ -2872,6 +4010,7 @@ /doc/asio/reference/ip__basic_resolver/basic_resolver/overload1.html /doc/asio/reference/ip__basic_resolver/basic_resolver/overload2.html /doc/asio/reference/ip__basic_resolver/basic_resolver/overload3.html +/doc/asio/reference/ip__basic_resolver/basic_resolver/overload4.html /doc/asio/reference/ip__basic_resolver/cancel.html /doc/asio/reference/ip__basic_resolver/canonical_name.html /doc/asio/reference/ip__basic_resolver/endpoint_type.html @@ -2929,7 +4068,10 @@ /doc/asio/reference/ip__basic_resolver_iterator/value_type.html /doc/asio/reference/ip__basic_resolver/numeric_host.html /doc/asio/reference/ip__basic_resolver/numeric_service.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/ /doc/asio/reference/ip__basic_resolver/operator_eq_.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/overload1.html +/doc/asio/reference/ip__basic_resolver/operator_eq_/overload2.html /doc/asio/reference/ip__basic_resolver/passive.html /doc/asio/reference/ip__basic_resolver/protocol_type.html /doc/asio/reference/ip__basic_resolver_query/ @@ -3103,6 +4245,7 @@ /doc/asio/reference/ip__network_v6/to_string.html /doc/asio/reference/ip__network_v6/to_string/overload1.html /doc/asio/reference/ip__network_v6/to_string/overload2.html +/doc/asio/reference/ip__port_type.html /doc/asio/reference/ip__resolver_base/ /doc/asio/reference/ip__resolver_base/address_configured.html /doc/asio/reference/ip__resolver_base/all_matching.html @@ -3125,6 +4268,7 @@ /doc/asio/reference/ip__resolver_query_base/passive.html /doc/asio/reference/ip__resolver_query_base/_resolver_query_base.html /doc/asio/reference/ip__resolver_query_base/v4_mapped.html +/doc/asio/reference/ip__scope_id_type.html /doc/asio/reference/ip__tcp/ /doc/asio/reference/ip__tcp/acceptor.html /doc/asio/reference/ip__tcp/endpoint.html @@ -3156,7 +4300,10 @@ /doc/asio/reference/ip__v4_mapped_t.html /doc/asio/reference/ip__v6_only.html /doc/asio/reference/is_applicable_property.html +/doc/asio/reference/is_async_operation.html /doc/asio/reference/is_const_buffer_sequence.html +/doc/asio/reference/is_contiguous_iterator.html +/doc/asio/reference/is_deferred.html /doc/asio/reference/is_dynamic_buffer.html /doc/asio/reference/is_dynamic_buffer_v1.html /doc/asio/reference/is_dynamic_buffer_v2.html @@ -3179,6 +4326,7 @@ /doc/asio/reference/is_write_buffered.html /doc/asio/reference/is_write_buffered/value.html /doc/asio/reference/IteratorConnectHandler.html +/doc/asio/reference/IteratorConnectToken.html /doc/asio/reference/LegacyCompletionHandler.html /doc/asio/reference/local__basic_endpoint/ /doc/asio/reference/local__basic_endpoint/basic_endpoint/ @@ -3222,6 +4370,14 @@ /doc/asio/reference/local__datagram_protocol/protocol.html /doc/asio/reference/local__datagram_protocol/socket.html /doc/asio/reference/local__datagram_protocol/type.html +/doc/asio/reference/local__seq_packet_protocol/ +/doc/asio/reference/local__seq_packet_protocol/acceptor.html +/doc/asio/reference/local__seq_packet_protocol/endpoint.html +/doc/asio/reference/local__seq_packet_protocol/family.html +/doc/asio/reference/local__seq_packet_protocol.html +/doc/asio/reference/local__seq_packet_protocol/protocol.html +/doc/asio/reference/local__seq_packet_protocol/socket.html +/doc/asio/reference/local__seq_packet_protocol/type.html /doc/asio/reference/local__stream_protocol/ /doc/asio/reference/local__stream_protocol/acceptor.html /doc/asio/reference/local__stream_protocol/endpoint.html @@ -3243,6 +4399,7 @@ /doc/asio/reference/make_work_guard/overload4.html /doc/asio/reference/make_work_guard/overload5.html /doc/asio/reference/MoveAcceptHandler.html +/doc/asio/reference/MoveAcceptToken.html /doc/asio/reference/multiple_exceptions/ /doc/asio/reference/multiple_exceptions/first_exception.html /doc/asio/reference/multiple_exceptions.html @@ -3279,6 +4436,19 @@ /doc/asio/reference/mutable_buffers_1/value_type.html /doc/asio/reference/MutableBufferSequence.html /doc/asio/reference/mutable_buffer/size.html +/doc/asio/reference/mutable_registered_buffer/ +/doc/asio/reference/mutable_registered_buffer/buffer.html +/doc/asio/reference/mutable_registered_buffer/data.html +/doc/asio/reference/mutable_registered_buffer.html +/doc/asio/reference/mutable_registered_buffer/id.html +/doc/asio/reference/mutable_registered_buffer/mutable_registered_buffer.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/ +/doc/asio/reference/mutable_registered_buffer/operator_plus__eq_.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/overload1.html +/doc/asio/reference/mutable_registered_buffer/operator_plus_/overload2.html +/doc/asio/reference/mutable_registered_buffer/size.html +/doc/asio/reference/NullaryToken.html /doc/asio/reference/null_buffers/ /doc/asio/reference/null_buffers/begin.html /doc/asio/reference/null_buffers/const_iterator.html @@ -3287,6 +4457,7 @@ /doc/asio/reference/null_buffers/value_type.html /doc/asio/reference/OperationState.html /doc/asio/reference/operator_lt__lt_.html +/doc/asio/reference/operator_pipe_.html /doc/asio/reference/placeholders__bytes_transferred.html /doc/asio/reference/placeholders__endpoint.html /doc/asio/reference/placeholders__error.html @@ -3307,6 +4478,7 @@ /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html /doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html +/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload6.html /doc/asio/reference/posix__basic_descriptor/bytes_readable.html /doc/asio/reference/posix__basic_descriptor/cancel/ /doc/asio/reference/posix__basic_descriptor/cancel.html @@ -3319,7 +4491,6 @@ /doc/asio/reference/posix__basic_descriptor/executor_type.html /doc/asio/reference/posix__basic_descriptor/get_executor.html /doc/asio/reference/posix__basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/impl_.html /doc/asio/reference/posix__basic_descriptor/io_control/ /doc/asio/reference/posix__basic_descriptor/io_control.html /doc/asio/reference/posix__basic_descriptor/io_control/overload1.html @@ -3342,7 +4513,10 @@ /doc/asio/reference/posix__basic_descriptor/non_blocking/overload1.html /doc/asio/reference/posix__basic_descriptor/non_blocking/overload2.html /doc/asio/reference/posix__basic_descriptor/non_blocking/overload3.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/ /doc/asio/reference/posix__basic_descriptor/operator_eq_.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/overload1.html +/doc/asio/reference/posix__basic_descriptor/operator_eq_/overload2.html /doc/asio/reference/posix__basic_descriptor__rebind_executor/ /doc/asio/reference/posix__basic_descriptor__rebind_executor.html /doc/asio/reference/posix__basic_descriptor__rebind_executor/other.html @@ -3367,6 +4541,7 @@ /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html /doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html +/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload6.html /doc/asio/reference/posix__basic_stream_descriptor/bytes_readable.html /doc/asio/reference/posix__basic_stream_descriptor/cancel/ /doc/asio/reference/posix__basic_stream_descriptor/cancel.html @@ -3379,7 +4554,6 @@ /doc/asio/reference/posix__basic_stream_descriptor/executor_type.html /doc/asio/reference/posix__basic_stream_descriptor/get_executor.html /doc/asio/reference/posix__basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/impl_.html /doc/asio/reference/posix__basic_stream_descriptor/io_control/ /doc/asio/reference/posix__basic_stream_descriptor/io_control.html /doc/asio/reference/posix__basic_stream_descriptor/io_control/overload1.html @@ -3402,7 +4576,10 @@ /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html /doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/ /doc/asio/reference/posix__basic_stream_descriptor/operator_eq_.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/overload1.html +/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_/overload2.html /doc/asio/reference/posix__basic_stream_descriptor/read_some/ /doc/asio/reference/posix__basic_stream_descriptor/read_some.html /doc/asio/reference/posix__basic_stream_descriptor/read_some/overload1.html @@ -3436,14 +4613,23 @@ /doc/asio/reference/prefer_result/ /doc/asio/reference/prefer_result.html /doc/asio/reference/prefer_result/type.html +/doc/asio/reference/prepend.html +/doc/asio/reference/prepend_t/ +/doc/asio/reference/prepend_t.html +/doc/asio/reference/prepend_t/prepend_t.html +/doc/asio/reference/prepend_t/token_.html +/doc/asio/reference/prepend_t/values_.html /doc/asio/reference/ProtoAllocator.html /doc/asio/reference/Protocol.html /doc/asio/reference/query.html /doc/asio/reference/query_result/ /doc/asio/reference/query_result.html /doc/asio/reference/query_result/type.html +/doc/asio/reference/random_access_file.html /doc/asio/reference/RangeConnectHandler.html +/doc/asio/reference/RangeConnectToken.html /doc/asio/reference/read/ +/doc/asio/reference/readable_pipe.html /doc/asio/reference/read_at/ /doc/asio/reference/read_at.html /doc/asio/reference/read_at/overload1.html @@ -3472,6 +4658,7 @@ /doc/asio/reference/read/overload7.html /doc/asio/reference/read/overload8.html /doc/asio/reference/read/overload9.html +/doc/asio/reference/ReadToken.html /doc/asio/reference/read_until/ /doc/asio/reference/read_until.html /doc/asio/reference/read_until/overload10.html @@ -3500,12 +4687,51 @@ /doc/asio/reference/read_until/overload9.html /doc/asio/reference/read_write_operations.html /doc/asio/reference/Receiver.html +/doc/asio/reference/recycling_allocator/ +/doc/asio/reference/recycling_allocator/allocate.html +/doc/asio/reference/recycling_allocator/deallocate.html +/doc/asio/reference/recycling_allocator.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/ +/doc/asio/reference/recycling_allocator_lt__void__gt_.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/operator_eq__eq_.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/operator_not__eq_.html +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind/ +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind.html +/doc/asio/reference/recycling_allocator_lt__void__gt___rebind/other.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/ +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload1.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload2.html +/doc/asio/reference/recycling_allocator_lt__void__gt_/value_type.html +/doc/asio/reference/recycling_allocator/operator_eq__eq_.html +/doc/asio/reference/recycling_allocator/operator_not__eq_.html +/doc/asio/reference/recycling_allocator__rebind/ +/doc/asio/reference/recycling_allocator__rebind.html +/doc/asio/reference/recycling_allocator__rebind/other.html +/doc/asio/reference/recycling_allocator/recycling_allocator/ +/doc/asio/reference/recycling_allocator/recycling_allocator.html +/doc/asio/reference/recycling_allocator/recycling_allocator/overload1.html +/doc/asio/reference/recycling_allocator/recycling_allocator/overload2.html +/doc/asio/reference/recycling_allocator/value_type.html /doc/asio/reference/redirect_error.html /doc/asio/reference/redirect_error_t/ /doc/asio/reference/redirect_error_t/ec_.html /doc/asio/reference/redirect_error_t.html /doc/asio/reference/redirect_error_t/redirect_error_t.html /doc/asio/reference/redirect_error_t/token_.html +/doc/asio/reference/register_buffers/ +/doc/asio/reference/register_buffers.html +/doc/asio/reference/register_buffers/overload1.html +/doc/asio/reference/register_buffers/overload2.html +/doc/asio/reference/register_buffers/overload3.html +/doc/asio/reference/register_buffers/overload4.html +/doc/asio/reference/registered_buffer_id/ +/doc/asio/reference/registered_buffer_id.html +/doc/asio/reference/registered_buffer_id/native_handle.html +/doc/asio/reference/registered_buffer_id/native_handle_type.html +/doc/asio/reference/registered_buffer_id/operator_eq__eq_.html +/doc/asio/reference/registered_buffer_id/operator_not__eq_.html +/doc/asio/reference/registered_buffer_id/registered_buffer_id.html /doc/asio/reference/require_concept.html /doc/asio/reference/require_concept_result/ /doc/asio/reference/require_concept_result.html @@ -3516,6 +4742,7 @@ /doc/asio/reference/require_result/type.html /doc/asio/reference/ResolveHandler.html /doc/asio/reference/resolver_errc__try_again.html +/doc/asio/reference/ResolveToken.html /doc/asio/reference/Scheduler.html /doc/asio/reference/Sender.html /doc/asio/reference/serial_port_base/ @@ -3562,8 +4789,15 @@ /doc/asio/reference/SettableSerialPortOption.html /doc/asio/reference/SettableSocketOption.html /doc/asio/reference/ShutdownHandler.html +/doc/asio/reference/ShutdownToken.html /doc/asio/reference/SignalHandler.html +/doc/asio/reference/signal_set_base/ +/doc/asio/reference/signal_set_base/flags.html +/doc/asio/reference/signal_set_base/flags_t.html +/doc/asio/reference/signal_set_base.html +/doc/asio/reference/signal_set_base/_signal_set_base.html /doc/asio/reference/signal_set.html +/doc/asio/reference/SignalToken.html /doc/asio/reference/socket_base/ /doc/asio/reference/socket_base/broadcast.html /doc/asio/reference/socket_base/bytes_readable.html @@ -3591,6 +4825,10 @@ /doc/asio/reference/socket_base/wait_type.html /doc/asio/reference/spawn/ /doc/asio/reference/spawn.html +/doc/asio/reference/spawn/overload10.html +/doc/asio/reference/spawn/overload11.html +/doc/asio/reference/spawn/overload12.html +/doc/asio/reference/spawn/overload13.html /doc/asio/reference/spawn/overload1.html /doc/asio/reference/spawn/overload2.html /doc/asio/reference/spawn/overload3.html @@ -3598,6 +4836,8 @@ /doc/asio/reference/spawn/overload5.html /doc/asio/reference/spawn/overload6.html /doc/asio/reference/spawn/overload7.html +/doc/asio/reference/spawn/overload8.html +/doc/asio/reference/spawn/overload9.html /doc/asio/reference/ssl__context/ /doc/asio/reference/ssl__context/add_certificate_authority/ /doc/asio/reference/ssl__context/add_certificate_authority.html @@ -3769,6 +5009,7 @@ /doc/asio/reference/ssl__stream/next_layer/overload1.html /doc/asio/reference/ssl__stream/next_layer/overload2.html /doc/asio/reference/ssl__stream/next_layer_type.html +/doc/asio/reference/ssl__stream/operator_eq_.html /doc/asio/reference/ssl__stream/read_some/ /doc/asio/reference/ssl__stream/read_some.html /doc/asio/reference/ssl__stream/read_some/overload1.html @@ -3794,6 +5035,7 @@ /doc/asio/reference/ssl__stream/stream.html /doc/asio/reference/ssl__stream/stream/overload1.html /doc/asio/reference/ssl__stream/stream/overload2.html +/doc/asio/reference/ssl__stream/stream/overload3.html /doc/asio/reference/ssl__stream/write_some/ /doc/asio/reference/ssl__stream/write_some.html /doc/asio/reference/ssl__stream/write_some/overload1.html @@ -3811,12 +5053,15 @@ /doc/asio/reference/static_thread_pool.html /doc/asio/reference/steady_timer.html /doc/asio/reference/strand/ +/doc/asio/reference/strand/context.html /doc/asio/reference/strand/defer.html /doc/asio/reference/strand/dispatch.html /doc/asio/reference/strand/execute.html /doc/asio/reference/strand/get_inner_executor.html /doc/asio/reference/strand.html /doc/asio/reference/strand/inner_executor_type.html +/doc/asio/reference/strand/on_work_finished.html +/doc/asio/reference/strand/on_work_started.html /doc/asio/reference/strand/operator_eq_/ /doc/asio/reference/strand/operator_eq__eq_.html /doc/asio/reference/strand/operator_eq_.html @@ -3840,6 +5085,7 @@ /doc/asio/reference/strand/strand/overload5.html /doc/asio/reference/strand/strand/overload6.html /doc/asio/reference/streambuf.html +/doc/asio/reference/stream_file.html /doc/asio/reference/synchronous_socket_operations.html /doc/asio/reference/SyncRandomAccessReadDevice.html /doc/asio/reference/SyncRandomAccessWriteDevice.html @@ -3878,10 +5124,23 @@ /doc/asio/reference/system_error/what.html /doc/asio/reference/system_executor.html /doc/asio/reference/system_timer.html +/doc/asio/reference/this_coro__cancellation_state.html +/doc/asio/reference/this_coro__cancellation_state_t/ +/doc/asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html +/doc/asio/reference/this_coro__cancellation_state_t.html /doc/asio/reference/this_coro__executor.html /doc/asio/reference/this_coro__executor_t/ /doc/asio/reference/this_coro__executor_t/executor_t.html /doc/asio/reference/this_coro__executor_t.html +/doc/asio/reference/this_coro__reset_cancellation_state/ +/doc/asio/reference/this_coro__reset_cancellation_state.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload1.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload2.html +/doc/asio/reference/this_coro__reset_cancellation_state/overload3.html +/doc/asio/reference/this_coro__throw_if_cancelled/ +/doc/asio/reference/this_coro__throw_if_cancelled.html +/doc/asio/reference/this_coro__throw_if_cancelled/overload1.html +/doc/asio/reference/this_coro__throw_if_cancelled/overload2.html /doc/asio/reference/thread/ /doc/asio/reference/thread.html /doc/asio/reference/thread/join.html @@ -3895,11 +5154,13 @@ /doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html /doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html /doc/asio/reference/thread_pool__basic_executor_type/bulk_execute.html +/doc/asio/reference/thread_pool__basic_executor_type/connect.html /doc/asio/reference/thread_pool__basic_executor_type/context.html /doc/asio/reference/thread_pool__basic_executor_type/defer.html /doc/asio/reference/thread_pool__basic_executor_type/dispatch.html /doc/asio/reference/thread_pool__basic_executor_type/execute.html /doc/asio/reference/thread_pool__basic_executor_type.html +/doc/asio/reference/thread_pool__basic_executor_type/index_type.html /doc/asio/reference/thread_pool__basic_executor_type/on_work_finished.html /doc/asio/reference/thread_pool__basic_executor_type/on_work_started.html /doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/ @@ -3936,6 +5197,7 @@ /doc/asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html /doc/asio/reference/thread_pool__basic_executor_type/schedule.html /doc/asio/reference/thread_pool__basic_executor_type/sender_type.html +/doc/asio/reference/thread_pool__basic_executor_type/shape_type.html /doc/asio/reference/thread_pool/destroy.html /doc/asio/reference/thread_pool/executor.html /doc/asio/reference/thread_pool/executor_type.html @@ -3980,10 +5242,7 @@ /doc/asio/reference/use_awaitable_t/as_default_on.html /doc/asio/reference/use_awaitable_t__executor_with_default/ /doc/asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ /doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html /doc/asio/reference/use_awaitable_t__executor_with_default.html /doc/asio/reference/use_awaitable_t.html /doc/asio/reference/use_awaitable_t/use_awaitable_t/ @@ -4004,6 +5263,7 @@ /doc/asio/reference/use_future_t/use_future_t/overload2.html /doc/asio/reference/uses_executor.html /doc/asio/reference/WaitHandler.html +/doc/asio/reference/WaitToken.html /doc/asio/reference/wait_traits/ /doc/asio/reference/WaitTraits.html /doc/asio/reference/wait_traits.html @@ -4024,6 +5284,7 @@ /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html /doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html +/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload6.html /doc/asio/reference/windows__basic_object_handle/cancel/ /doc/asio/reference/windows__basic_object_handle/cancel.html /doc/asio/reference/windows__basic_object_handle/cancel/overload1.html @@ -4043,7 +5304,10 @@ /doc/asio/reference/windows__basic_object_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_object_handle/native_handle.html /doc/asio/reference/windows__basic_object_handle/native_handle_type.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/ /doc/asio/reference/windows__basic_object_handle/operator_eq_.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_object_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_object_handle__rebind_executor/ /doc/asio/reference/windows__basic_object_handle__rebind_executor.html /doc/asio/reference/windows__basic_object_handle__rebind_executor/other.html @@ -4064,6 +5328,7 @@ /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html /doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html +/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload6.html /doc/asio/reference/windows__basic_overlapped_handle/cancel/ /doc/asio/reference/windows__basic_overlapped_handle/cancel.html /doc/asio/reference/windows__basic_overlapped_handle/cancel/overload1.html @@ -4075,7 +5340,6 @@ /doc/asio/reference/windows__basic_overlapped_handle/executor_type.html /doc/asio/reference/windows__basic_overlapped_handle/get_executor.html /doc/asio/reference/windows__basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/impl_.html /doc/asio/reference/windows__basic_overlapped_handle/is_open.html /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/ /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer.html @@ -4084,10 +5348,17 @@ /doc/asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_overlapped_handle/native_handle.html /doc/asio/reference/windows__basic_overlapped_handle/native_handle_type.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/ /doc/asio/reference/windows__basic_overlapped_handle/operator_eq_.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/ /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor.html /doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_overlapped_handle/release/ +/doc/asio/reference/windows__basic_overlapped_handle/release.html +/doc/asio/reference/windows__basic_overlapped_handle/release/overload1.html +/doc/asio/reference/windows__basic_overlapped_handle/release/overload2.html /doc/asio/reference/windows__basic_random_access_handle/ /doc/asio/reference/windows__basic_random_access_handle/assign/ /doc/asio/reference/windows__basic_random_access_handle/assign.html @@ -4102,6 +5373,7 @@ /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html /doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html +/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload6.html /doc/asio/reference/windows__basic_random_access_handle/cancel/ /doc/asio/reference/windows__basic_random_access_handle/cancel.html /doc/asio/reference/windows__basic_random_access_handle/cancel/overload1.html @@ -4113,7 +5385,6 @@ /doc/asio/reference/windows__basic_random_access_handle/executor_type.html /doc/asio/reference/windows__basic_random_access_handle/get_executor.html /doc/asio/reference/windows__basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/impl_.html /doc/asio/reference/windows__basic_random_access_handle/is_open.html /doc/asio/reference/windows__basic_random_access_handle/lowest_layer/ /doc/asio/reference/windows__basic_random_access_handle/lowest_layer.html @@ -4122,7 +5393,10 @@ /doc/asio/reference/windows__basic_random_access_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_random_access_handle/native_handle.html /doc/asio/reference/windows__basic_random_access_handle/native_handle_type.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/ /doc/asio/reference/windows__basic_random_access_handle/operator_eq_.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_random_access_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_random_access_handle/read_some_at/ /doc/asio/reference/windows__basic_random_access_handle/read_some_at.html /doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html @@ -4130,6 +5404,10 @@ /doc/asio/reference/windows__basic_random_access_handle__rebind_executor/ /doc/asio/reference/windows__basic_random_access_handle__rebind_executor.html /doc/asio/reference/windows__basic_random_access_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_random_access_handle/release/ +/doc/asio/reference/windows__basic_random_access_handle/release.html +/doc/asio/reference/windows__basic_random_access_handle/release/overload1.html +/doc/asio/reference/windows__basic_random_access_handle/release/overload2.html /doc/asio/reference/windows__basic_random_access_handle/write_some_at/ /doc/asio/reference/windows__basic_random_access_handle/write_some_at.html /doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html @@ -4148,6 +5426,7 @@ /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html /doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html +/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload6.html /doc/asio/reference/windows__basic_stream_handle/cancel/ /doc/asio/reference/windows__basic_stream_handle/cancel.html /doc/asio/reference/windows__basic_stream_handle/cancel/overload1.html @@ -4159,7 +5438,6 @@ /doc/asio/reference/windows__basic_stream_handle/executor_type.html /doc/asio/reference/windows__basic_stream_handle/get_executor.html /doc/asio/reference/windows__basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/impl_.html /doc/asio/reference/windows__basic_stream_handle/is_open.html /doc/asio/reference/windows__basic_stream_handle/lowest_layer/ /doc/asio/reference/windows__basic_stream_handle/lowest_layer.html @@ -4168,7 +5446,10 @@ /doc/asio/reference/windows__basic_stream_handle/lowest_layer_type.html /doc/asio/reference/windows__basic_stream_handle/native_handle.html /doc/asio/reference/windows__basic_stream_handle/native_handle_type.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/ /doc/asio/reference/windows__basic_stream_handle/operator_eq_.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/overload1.html +/doc/asio/reference/windows__basic_stream_handle/operator_eq_/overload2.html /doc/asio/reference/windows__basic_stream_handle/read_some/ /doc/asio/reference/windows__basic_stream_handle/read_some.html /doc/asio/reference/windows__basic_stream_handle/read_some/overload1.html @@ -4176,6 +5457,10 @@ /doc/asio/reference/windows__basic_stream_handle__rebind_executor/ /doc/asio/reference/windows__basic_stream_handle__rebind_executor.html /doc/asio/reference/windows__basic_stream_handle__rebind_executor/other.html +/doc/asio/reference/windows__basic_stream_handle/release/ +/doc/asio/reference/windows__basic_stream_handle/release.html +/doc/asio/reference/windows__basic_stream_handle/release/overload1.html +/doc/asio/reference/windows__basic_stream_handle/release/overload2.html /doc/asio/reference/windows__basic_stream_handle/write_some/ /doc/asio/reference/windows__basic_stream_handle/write_some.html /doc/asio/reference/windows__basic_stream_handle/write_some/overload1.html @@ -4203,6 +5488,7 @@ /doc/asio/reference/windows__overlapped_ptr/reset/overload3.html /doc/asio/reference/windows__random_access_handle.html /doc/asio/reference/windows__stream_handle.html +/doc/asio/reference/writable_pipe.html /doc/asio/reference/write/ /doc/asio/reference/write_at/ /doc/asio/reference/write_at.html @@ -4232,7 +5518,9 @@ /doc/asio/reference/write/overload7.html /doc/asio/reference/write/overload8.html /doc/asio/reference/write/overload9.html +/doc/asio/reference/WriteToken.html /doc/asio/reference/yield_context.html +/doc/asio/std_executors.html /doc/asio/tutorial/ /doc/asio/tutorial/boost_bind.html /doc/asio/tutorial.html @@ -4273,11 +5561,20 @@ /doc/asio/tutorial/tuttimer5.html /doc/asio/tutorial/tuttimer5/src.html /doc/asio/using.html +/doc/async_agent_chain.png +/doc/async_agent_model.png +/doc/async_child_agent_chain.png /doc/async_op1.png /doc/async_op2.png +/doc/async_op_init_complete.png +/doc/async_op_model.png +/doc/async_op_phases.png +/doc/async_op_trivial_chain.png /doc/blank.png /doc/boostbook.css /doc/caution.png +/doc/completion_token_model.png +/doc/completion_token_transform.png /doc/draft.png /doc/examples/ /doc/examples/diffs/ @@ -4289,6 +5586,9 @@ /doc/examples/diffs/chat/chat_client.cpp.html /doc/examples/diffs/chat/chat_message.hpp.html /doc/examples/diffs/chat/chat_server.cpp.html +/doc/examples/diffs/deferred/ +/doc/examples/diffs/deferred/deferred_1.cpp.html +/doc/examples/diffs/deferred/deferred_2.cpp.html /doc/examples/diffs/echo/ /doc/examples/diffs/echo/async_tcp_echo_server.cpp.html /doc/examples/diffs/echo/async_udp_echo_server.cpp.html @@ -4303,6 +5603,9 @@ /doc/examples/diffs/executors/fork_join.cpp.html /doc/examples/diffs/executors/pipeline.cpp.html /doc/examples/diffs/executors/priority_scheduler.cpp.html +/doc/examples/diffs/files/ +/doc/examples/diffs/files/async_file_copy.cpp.html +/doc/examples/diffs/files/blocking_file_copy.cpp.html /doc/examples/diffs/fork/ /doc/examples/diffs/fork/daemon.cpp.html /doc/examples/diffs/fork/process_per_connection.cpp.html @@ -4336,6 +5639,8 @@ /doc/examples/diffs/iostreams/http_client.cpp.html /doc/examples/diffs/local/ /doc/examples/diffs/local/connect_pair.cpp.html +/doc/examples/diffs/local/fd_passing_stream_client.cpp.html +/doc/examples/diffs/local/fd_passing_stream_server.cpp.html /doc/examples/diffs/local/iostream_client.cpp.html /doc/examples/diffs/local/stream_client.cpp.html /doc/examples/diffs/local/stream_server.cpp.html @@ -4353,6 +5658,12 @@ /doc/examples/diffs/operations/composed_6.cpp.html /doc/examples/diffs/operations/composed_7.cpp.html /doc/examples/diffs/operations/composed_8.cpp.html +/doc/examples/diffs/parallel_group/ +/doc/examples/diffs/parallel_group/ranged_wait_for_all.cpp.html +/doc/examples/diffs/parallel_group/wait_for_all.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one_error.cpp.html +/doc/examples/diffs/parallel_group/wait_for_one_success.cpp.html /doc/examples/diffs/socks4/ /doc/examples/diffs/socks4/socks4.hpp.html /doc/examples/diffs/socks4/sync_client.cpp.html @@ -4370,6 +5681,14 @@ /doc/examples/diffs/timeouts/server.cpp.html /doc/examples/diffs/timers/ /doc/examples/diffs/timers/time_t_timer.cpp.html +/doc/examples/diffs/type_erasure/ +/doc/examples/diffs/type_erasure/line_reader.hpp.html +/doc/examples/diffs/type_erasure/main.cpp.html +/doc/examples/diffs/type_erasure/sleep.cpp.html +/doc/examples/diffs/type_erasure/sleep.hpp.html +/doc/examples/diffs/type_erasure/stdin_line_reader.cpp.html +/doc/examples/diffs/type_erasure/stdin_line_reader.hpp.html +/doc/higher_level_model.png /doc/home.png /doc/important.png /doc/index.html @@ -4379,7 +5698,6 @@ /doc/prev_disabled.png /doc/prev.png /doc/proactor.png -/doc/standalone_HTML.manifest /doc/sync_op.png /doc/tip.png /doc/up_disabled.png @@ -4387,15 +5705,25 @@ /doc/warning.png /include/ /include/asio/ +/include/asio/any_completion_executor.hpp +/include/asio/any_completion_handler.hpp /include/asio/any_io_executor.hpp +/include/asio/append.hpp /include/asio/associated_allocator.hpp +/include/asio/associated_cancellation_slot.hpp /include/asio/associated_executor.hpp +/include/asio/associated_immediate_executor.hpp +/include/asio/associator.hpp +/include/asio/as_tuple.hpp /include/asio/async_result.hpp /include/asio/awaitable.hpp /include/asio/basic_datagram_socket.hpp /include/asio/basic_deadline_timer.hpp +/include/asio/basic_file.hpp /include/asio/basic_io_object.hpp +/include/asio/basic_random_access_file.hpp /include/asio/basic_raw_socket.hpp +/include/asio/basic_readable_pipe.hpp /include/asio/basic_seq_packet_socket.hpp /include/asio/basic_serial_port.hpp /include/asio/basic_signal_set.hpp @@ -4405,9 +5733,14 @@ /include/asio/basic_socket_streambuf.hpp /include/asio/basic_streambuf_fwd.hpp /include/asio/basic_streambuf.hpp +/include/asio/basic_stream_file.hpp /include/asio/basic_stream_socket.hpp /include/asio/basic_waitable_timer.hpp +/include/asio/basic_writable_pipe.hpp +/include/asio/bind_allocator.hpp +/include/asio/bind_cancellation_slot.hpp /include/asio/bind_executor.hpp +/include/asio/bind_immediate_executor.hpp /include/asio/buffered_read_stream_fwd.hpp /include/asio/buffered_read_stream.hpp /include/asio/buffered_stream_fwd.hpp @@ -4415,20 +5748,28 @@ /include/asio/buffered_write_stream_fwd.hpp /include/asio/buffered_write_stream.hpp /include/asio/buffer.hpp +/include/asio/buffer_registration.hpp /include/asio/buffers_iterator.hpp +/include/asio/cancellation_signal.hpp +/include/asio/cancellation_state.hpp +/include/asio/cancellation_type.hpp /include/asio/completion_condition.hpp /include/asio/compose.hpp /include/asio/connect.hpp +/include/asio/connect_pipe.hpp +/include/asio/consign.hpp /include/asio/coroutine.hpp /include/asio/co_spawn.hpp /include/asio/deadline_timer.hpp /include/asio/defer.hpp +/include/asio/deferred.hpp /include/asio/detached.hpp /include/asio/detail/ /include/asio/detail/array_fwd.hpp /include/asio/detail/array.hpp /include/asio/detail/assert.hpp /include/asio/detail/atomic_count.hpp +/include/asio/detail/base_from_cancellation_state.hpp /include/asio/detail/base_from_completion_cond.hpp /include/asio/detail/bind_handler.hpp /include/asio/detail/blocking_executor_op.hpp @@ -4440,6 +5781,7 @@ /include/asio/detail/chrono.hpp /include/asio/detail/chrono_time_traits.hpp /include/asio/detail/completion_handler.hpp +/include/asio/detail/composed_work.hpp /include/asio/detail/concurrency_hint.hpp /include/asio/detail/conditionally_enabled_event.hpp /include/asio/detail/conditionally_enabled_mutex.hpp @@ -4457,6 +5799,7 @@ /include/asio/detail/epoll_reactor.hpp /include/asio/detail/eventfd_select_interrupter.hpp /include/asio/detail/event.hpp +/include/asio/detail/exception.hpp /include/asio/detail/executor_function.hpp /include/asio/detail/executor_op.hpp /include/asio/detail/fd_set_adapter.hpp @@ -4484,16 +5827,21 @@ /include/asio/detail/impl/epoll_reactor.ipp /include/asio/detail/impl/eventfd_select_interrupter.ipp /include/asio/detail/impl/handler_tracking.ipp +/include/asio/detail/impl/io_uring_descriptor_service.ipp +/include/asio/detail/impl/io_uring_file_service.ipp +/include/asio/detail/impl/io_uring_service.hpp +/include/asio/detail/impl/io_uring_service.ipp +/include/asio/detail/impl/io_uring_socket_service_base.ipp /include/asio/detail/impl/kqueue_reactor.hpp /include/asio/detail/impl/kqueue_reactor.ipp /include/asio/detail/impl/null_event.ipp /include/asio/detail/impl/pipe_select_interrupter.ipp /include/asio/detail/impl/posix_event.ipp /include/asio/detail/impl/posix_mutex.ipp +/include/asio/detail/impl/posix_serial_port_service.ipp /include/asio/detail/impl/posix_thread.ipp /include/asio/detail/impl/posix_tss_ptr.ipp /include/asio/detail/impl/reactive_descriptor_service.ipp -/include/asio/detail/impl/reactive_serial_port_service.ipp /include/asio/detail/impl/reactive_socket_service_base.ipp /include/asio/detail/impl/resolver_service_base.ipp /include/asio/detail/impl/scheduler.ipp @@ -4508,10 +5856,12 @@ /include/asio/detail/impl/strand_executor_service.ipp /include/asio/detail/impl/strand_service.hpp /include/asio/detail/impl/strand_service.ipp +/include/asio/detail/impl/thread_context.ipp /include/asio/detail/impl/throw_error.ipp /include/asio/detail/impl/timer_queue_ptime.ipp /include/asio/detail/impl/timer_queue_set.ipp /include/asio/detail/impl/win_event.ipp +/include/asio/detail/impl/win_iocp_file_service.ipp /include/asio/detail/impl/win_iocp_handle_service.ipp /include/asio/detail/impl/win_iocp_io_context.hpp /include/asio/detail/impl/win_iocp_io_context.ipp @@ -4526,8 +5876,30 @@ /include/asio/detail/impl/win_static_mutex.ipp /include/asio/detail/impl/win_thread.ipp /include/asio/detail/impl/win_tss_ptr.ipp +/include/asio/detail/initiate_defer.hpp +/include/asio/detail/initiate_dispatch.hpp +/include/asio/detail/initiate_post.hpp /include/asio/detail/io_control.hpp /include/asio/detail/io_object_impl.hpp +/include/asio/detail/io_uring_descriptor_read_at_op.hpp +/include/asio/detail/io_uring_descriptor_read_op.hpp +/include/asio/detail/io_uring_descriptor_service.hpp +/include/asio/detail/io_uring_descriptor_write_at_op.hpp +/include/asio/detail/io_uring_descriptor_write_op.hpp +/include/asio/detail/io_uring_file_service.hpp +/include/asio/detail/io_uring_null_buffers_op.hpp +/include/asio/detail/io_uring_operation.hpp +/include/asio/detail/io_uring_service.hpp +/include/asio/detail/io_uring_socket_accept_op.hpp +/include/asio/detail/io_uring_socket_connect_op.hpp +/include/asio/detail/io_uring_socket_recvfrom_op.hpp +/include/asio/detail/io_uring_socket_recvmsg_op.hpp +/include/asio/detail/io_uring_socket_recv_op.hpp +/include/asio/detail/io_uring_socket_send_op.hpp +/include/asio/detail/io_uring_socket_sendto_op.hpp +/include/asio/detail/io_uring_socket_service_base.hpp +/include/asio/detail/io_uring_socket_service.hpp +/include/asio/detail/io_uring_wait_op.hpp /include/asio/detail/is_buffer_sequence.hpp /include/asio/detail/is_executor.hpp /include/asio/detail/keyword_tss_ptr.hpp @@ -4559,6 +5931,7 @@ /include/asio/detail/posix_fd_set_adapter.hpp /include/asio/detail/posix_global.hpp /include/asio/detail/posix_mutex.hpp +/include/asio/detail/posix_serial_port_service.hpp /include/asio/detail/posix_signal_blocker.hpp /include/asio/detail/posix_static_mutex.hpp /include/asio/detail/posix_thread.hpp @@ -4566,7 +5939,6 @@ /include/asio/detail/push_options.hpp /include/asio/detail/reactive_descriptor_service.hpp /include/asio/detail/reactive_null_buffers_op.hpp -/include/asio/detail/reactive_serial_port_service.hpp /include/asio/detail/reactive_socket_accept_op.hpp /include/asio/detail/reactive_socket_connect_op.hpp /include/asio/detail/reactive_socket_recvfrom_op.hpp @@ -4577,7 +5949,6 @@ /include/asio/detail/reactive_socket_service_base.hpp /include/asio/detail/reactive_socket_service.hpp /include/asio/detail/reactive_wait_op.hpp -/include/asio/detail/reactor_fwd.hpp /include/asio/detail/reactor.hpp /include/asio/detail/reactor_op.hpp /include/asio/detail/reactor_op_queue.hpp @@ -4590,6 +5961,7 @@ /include/asio/detail/resolver_service.hpp /include/asio/detail/scheduler.hpp /include/asio/detail/scheduler_operation.hpp +/include/asio/detail/scheduler_task.hpp /include/asio/detail/scheduler_thread_info.hpp /include/asio/detail/scoped_lock.hpp /include/asio/detail/scoped_ptr.hpp @@ -4632,6 +6004,7 @@ /include/asio/detail/timer_scheduler.hpp /include/asio/detail/tss_ptr.hpp /include/asio/detail/type_traits.hpp +/include/asio/detail/utility.hpp /include/asio/detail/variadic_templates.hpp /include/asio/detail/wait_handler.hpp /include/asio/detail/wait_op.hpp @@ -4641,6 +6014,7 @@ /include/asio/detail/win_fd_set_adapter.hpp /include/asio/detail/win_fenced_block.hpp /include/asio/detail/win_global.hpp +/include/asio/detail/win_iocp_file_service.hpp /include/asio/detail/win_iocp_handle_read_op.hpp /include/asio/detail/win_iocp_handle_service.hpp /include/asio/detail/win_iocp_handle_write_op.hpp @@ -4726,6 +6100,53 @@ /include/asio/execution/submit.hpp /include/asio/executor.hpp /include/asio/executor_work_guard.hpp +/include/asio/experimental/ +/include/asio/experimental/append.hpp +/include/asio/experimental/as_single.hpp +/include/asio/experimental/as_tuple.hpp +/include/asio/experimental/awaitable_operators.hpp +/include/asio/experimental/basic_channel.hpp +/include/asio/experimental/basic_concurrent_channel.hpp +/include/asio/experimental/cancellation_condition.hpp +/include/asio/experimental/channel_error.hpp +/include/asio/experimental/channel.hpp +/include/asio/experimental/channel_traits.hpp +/include/asio/experimental/co_composed.hpp +/include/asio/experimental/concurrent_channel.hpp +/include/asio/experimental/coro.hpp +/include/asio/experimental/coro_traits.hpp +/include/asio/experimental/co_spawn.hpp +/include/asio/experimental/deferred.hpp +/include/asio/experimental/detail/ +/include/asio/experimental/detail/channel_handler.hpp +/include/asio/experimental/detail/channel_message.hpp +/include/asio/experimental/detail/channel_operation.hpp +/include/asio/experimental/detail/channel_payload.hpp +/include/asio/experimental/detail/channel_receive_op.hpp +/include/asio/experimental/detail/channel_send_functions.hpp +/include/asio/experimental/detail/channel_send_op.hpp +/include/asio/experimental/detail/channel_service.hpp +/include/asio/experimental/detail/coro_completion_handler.hpp +/include/asio/experimental/detail/coro_promise_allocator.hpp +/include/asio/experimental/detail/has_signature.hpp +/include/asio/experimental/detail/impl/ +/include/asio/experimental/detail/impl/channel_service.hpp +/include/asio/experimental/detail/partial_promise.hpp +/include/asio/experimental/impl/ +/include/asio/experimental/impl/as_single.hpp +/include/asio/experimental/impl/channel_error.ipp +/include/asio/experimental/impl/co_composed.hpp +/include/asio/experimental/impl/coro.hpp +/include/asio/experimental/impl/parallel_group.hpp +/include/asio/experimental/impl/promise.hpp +/include/asio/experimental/impl/use_coro.hpp +/include/asio/experimental/impl/use_promise.hpp +/include/asio/experimental/parallel_group.hpp +/include/asio/experimental/prepend.hpp +/include/asio/experimental/promise.hpp +/include/asio/experimental/use_coro.hpp +/include/asio/experimental/use_promise.hpp +/include/asio/file_base.hpp /include/asio/generic/ /include/asio/generic/basic_endpoint.hpp /include/asio/generic/datagram_protocol.hpp @@ -4742,15 +6163,21 @@ /include/asio/high_resolution_timer.hpp /include/asio.hpp /include/asio/impl/ +/include/asio/impl/any_completion_executor.ipp +/include/asio/impl/any_io_executor.ipp +/include/asio/impl/append.hpp +/include/asio/impl/as_tuple.hpp /include/asio/impl/awaitable.hpp /include/asio/impl/buffered_read_stream.hpp /include/asio/impl/buffered_write_stream.hpp -/include/asio/impl/compose.hpp +/include/asio/impl/cancellation_signal.ipp /include/asio/impl/connect.hpp +/include/asio/impl/connect_pipe.hpp +/include/asio/impl/connect_pipe.ipp +/include/asio/impl/consign.hpp /include/asio/impl/co_spawn.hpp -/include/asio/impl/defer.hpp +/include/asio/impl/deferred.hpp /include/asio/impl/detached.hpp -/include/asio/impl/dispatch.hpp /include/asio/impl/error_code.ipp /include/asio/impl/error.ipp /include/asio/impl/execution_context.hpp @@ -4761,7 +6188,7 @@ /include/asio/impl/io_context.hpp /include/asio/impl/io_context.ipp /include/asio/impl/multiple_exceptions.ipp -/include/asio/impl/post.hpp +/include/asio/impl/prepend.hpp /include/asio/impl/read_at.hpp /include/asio/impl/read.hpp /include/asio/impl/read_until.hpp @@ -4769,7 +6196,6 @@ /include/asio/impl/serial_port_base.hpp /include/asio/impl/serial_port_base.ipp /include/asio/impl/spawn.hpp -/include/asio/impl/src.cpp /include/asio/impl/src.hpp /include/asio/impl/system_context.hpp /include/asio/impl/system_context.ipp @@ -4829,6 +6255,7 @@ /include/asio/ip/unicast.hpp /include/asio/ip/v6_only.hpp /include/asio/is_applicable_property.hpp +/include/asio/is_contiguous_iterator.hpp /include/asio/is_executor.hpp /include/asio/is_read_buffered.hpp /include/asio/is_write_buffered.hpp @@ -4840,6 +6267,7 @@ /include/asio/local/detail/endpoint.hpp /include/asio/local/detail/impl/ /include/asio/local/detail/impl/endpoint.ipp +/include/asio/local/seq_packet_protocol.hpp /include/asio/local/stream_protocol.hpp /include/asio/multiple_exceptions.hpp /include/asio/packaged_task.hpp @@ -4852,15 +6280,21 @@ /include/asio/posix/stream_descriptor.hpp /include/asio/post.hpp /include/asio/prefer.hpp +/include/asio/prepend.hpp /include/asio/query.hpp +/include/asio/random_access_file.hpp +/include/asio/readable_pipe.hpp /include/asio/read_at.hpp /include/asio/read.hpp /include/asio/read_until.hpp +/include/asio/recycling_allocator.hpp /include/asio/redirect_error.hpp +/include/asio/registered_buffer.hpp /include/asio/require_concept.hpp /include/asio/require.hpp /include/asio/serial_port_base.hpp /include/asio/serial_port.hpp +/include/asio/signal_set_base.hpp /include/asio/signal_set.hpp /include/asio/socket_base.hpp /include/asio/spawn.hpp @@ -4902,6 +6336,7 @@ /include/asio/steady_timer.hpp /include/asio/strand.hpp /include/asio/streambuf.hpp +/include/asio/stream_file.hpp /include/asio/system_context.hpp /include/asio/system_error.hpp /include/asio/system_executor.hpp @@ -4967,6 +6402,7 @@ /include/asio/windows/overlapped_ptr.hpp /include/asio/windows/random_access_handle.hpp /include/asio/windows/stream_handle.hpp +/include/asio/writable_pipe.hpp /include/asio/write_at.hpp /include/asio/write.hpp /include/asio/yield.hpp @@ -5119,7 +6555,7 @@ /src/examples/cpp03/ssl/ /src/examples/cpp03/ssl/ca.pem /src/examples/cpp03/ssl/client.cpp -/src/examples/cpp03/ssl/dh2048.pem +/src/examples/cpp03/ssl/dh4096.pem /src/examples/cpp03/ssl/README /src/examples/cpp03/ssl/server.cpp /src/examples/cpp03/ssl/server.pem @@ -5167,6 +6603,9 @@ /src/examples/cpp11/chat/chat_client.cpp /src/examples/cpp11/chat/chat_message.hpp /src/examples/cpp11/chat/chat_server.cpp +/src/examples/cpp11/deferred/ +/src/examples/cpp11/deferred/deferred_1.cpp +/src/examples/cpp11/deferred/deferred_2.cpp /src/examples/cpp11/echo/ /src/examples/cpp11/echo/async_tcp_echo_server.cpp /src/examples/cpp11/echo/async_udp_echo_server.cpp @@ -5181,6 +6620,9 @@ /src/examples/cpp11/executors/fork_join.cpp /src/examples/cpp11/executors/pipeline.cpp /src/examples/cpp11/executors/priority_scheduler.cpp +/src/examples/cpp11/files/ +/src/examples/cpp11/files/async_file_copy.cpp +/src/examples/cpp11/files/blocking_file_copy.cpp /src/examples/cpp11/fork/ /src/examples/cpp11/fork/daemon.cpp /src/examples/cpp11/fork/process_per_connection.cpp @@ -5214,6 +6656,8 @@ /src/examples/cpp11/iostreams/http_client.cpp /src/examples/cpp11/local/ /src/examples/cpp11/local/connect_pair.cpp +/src/examples/cpp11/local/fd_passing_stream_client.cpp +/src/examples/cpp11/local/fd_passing_stream_server.cpp /src/examples/cpp11/local/iostream_client.cpp /src/examples/cpp11/local/stream_client.cpp /src/examples/cpp11/local/stream_server.cpp @@ -5233,6 +6677,12 @@ /src/examples/cpp11/operations/composed_6.cpp /src/examples/cpp11/operations/composed_7.cpp /src/examples/cpp11/operations/composed_8.cpp +/src/examples/cpp11/parallel_group/ +/src/examples/cpp11/parallel_group/ranged_wait_for_all.cpp +/src/examples/cpp11/parallel_group/wait_for_all.cpp +/src/examples/cpp11/parallel_group/wait_for_one.cpp +/src/examples/cpp11/parallel_group/wait_for_one_error.cpp +/src/examples/cpp11/parallel_group/wait_for_one_success.cpp /src/examples/cpp11/socks4/ /src/examples/cpp11/socks4/socks4.hpp /src/examples/cpp11/socks4/sync_client.cpp @@ -5240,8 +6690,12 @@ /src/examples/cpp11/spawn/echo_server.cpp /src/examples/cpp11/spawn/parallel_grep.cpp /src/examples/cpp11/ssl/ +/src/examples/cpp11/ssl/ca.pem /src/examples/cpp11/ssl/client.cpp +/src/examples/cpp11/ssl/dh4096.pem +/src/examples/cpp11/ssl/README /src/examples/cpp11/ssl/server.cpp +/src/examples/cpp11/ssl/server.pem /src/examples/cpp11/timeouts/ /src/examples/cpp11/timeouts/async_tcp_client.cpp /src/examples/cpp11/timeouts/blocking_tcp_client.cpp @@ -5250,7 +6704,22 @@ /src/examples/cpp11/timeouts/server.cpp /src/examples/cpp11/timers/ /src/examples/cpp11/timers/time_t_timer.cpp +/src/examples/cpp11/type_erasure/ +/src/examples/cpp11/type_erasure/line_reader.hpp +/src/examples/cpp11/type_erasure/main.cpp +/src/examples/cpp11/type_erasure/sleep.cpp +/src/examples/cpp11/type_erasure/sleep.hpp +/src/examples/cpp11/type_erasure/stdin_line_reader.cpp +/src/examples/cpp11/type_erasure/stdin_line_reader.hpp /src/examples/cpp14/ +/src/examples/cpp14/deferred/ +/src/examples/cpp14/deferred/deferred_1.cpp +/src/examples/cpp14/deferred/deferred_2.cpp +/src/examples/cpp14/deferred/deferred_3.cpp +/src/examples/cpp14/deferred/deferred_4.cpp +/src/examples/cpp14/deferred/deferred_5.cpp +/src/examples/cpp14/deferred/deferred_6.cpp +/src/examples/cpp14/deferred/deferred_7.cpp /src/examples/cpp14/echo/ /src/examples/cpp14/echo/async_tcp_echo_server.cpp /src/examples/cpp14/echo/async_udp_echo_server.cpp @@ -5272,6 +6741,8 @@ /src/examples/cpp14/Makefile.am /src/examples/cpp14/Makefile.in /src/examples/cpp14/operations/ +/src/examples/cpp14/operations/callback_wrapper.cpp +/src/examples/cpp14/operations/c_callback_wrapper.cpp /src/examples/cpp14/operations/composed_1.cpp /src/examples/cpp14/operations/composed_2.cpp /src/examples/cpp14/operations/composed_3.cpp @@ -5280,15 +6751,57 @@ /src/examples/cpp14/operations/composed_6.cpp /src/examples/cpp14/operations/composed_7.cpp /src/examples/cpp14/operations/composed_8.cpp +/src/examples/cpp14/parallel_group/ +/src/examples/cpp14/parallel_group/parallel_sort.cpp +/src/examples/cpp14/parallel_group/ranged_wait_for_all.cpp +/src/examples/cpp14/parallel_group/wait_for_all.cpp +/src/examples/cpp14/parallel_group/wait_for_one.cpp +/src/examples/cpp14/parallel_group/wait_for_one_error.cpp +/src/examples/cpp14/parallel_group/wait_for_one_success.cpp /src/examples/cpp17/ /src/examples/cpp17/coroutines_ts/ /src/examples/cpp17/coroutines_ts/chat_server.cpp /src/examples/cpp17/coroutines_ts/echo_server.cpp +/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/src/examples/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp /src/examples/cpp17/coroutines_ts/range_based_for.cpp /src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp /src/examples/cpp17/Makefile.am /src/examples/cpp17/Makefile.in +/src/examples/cpp20/ +/src/examples/cpp20/channels/ +/src/examples/cpp20/channels/throttling_proxy.cpp +/src/examples/cpp20/coroutines/ +/src/examples/cpp20/coroutines/chat_server.cpp +/src/examples/cpp20/coroutines/echo_server.cpp +/src/examples/cpp20/coroutines/echo_server_with_as_single_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_default.cpp +/src/examples/cpp20/coroutines/echo_server_with_deferred.cpp +/src/examples/cpp20/coroutines/echo_server_with_deferred_default.cpp +/src/examples/cpp20/coroutines/refactored_echo_server.cpp +/src/examples/cpp20/coroutines/timeout.cpp +/src/examples/cpp20/Makefile.am +/src/examples/cpp20/Makefile.in +/src/examples/cpp20/operations/ +/src/examples/cpp20/operations/callback_wrapper.cpp +/src/examples/cpp20/operations/c_callback_wrapper.cpp +/src/examples/cpp20/operations/composed_1.cpp +/src/examples/cpp20/operations/composed_2.cpp +/src/examples/cpp20/operations/composed_3.cpp +/src/examples/cpp20/operations/composed_4.cpp +/src/examples/cpp20/operations/composed_5.cpp +/src/examples/cpp20/operations/composed_6.cpp +/src/examples/cpp20/operations/composed_7.cpp +/src/examples/cpp20/operations/composed_8.cpp +/src/examples/cpp20/type_erasure/ +/src/examples/cpp20/type_erasure/line_reader.hpp +/src/examples/cpp20/type_erasure/main.cpp +/src/examples/cpp20/type_erasure/sleep.cpp +/src/examples/cpp20/type_erasure/sleep.hpp +/src/examples/cpp20/type_erasure/stdin_line_reader.cpp +/src/examples/cpp20/type_erasure/stdin_line_reader.hpp /src/Makefile.am /src/Makefile.in /src/Makefile.mgw @@ -5485,6 +6998,7 @@ /src/tests/properties/Makefile.am /src/tests/properties/Makefile.in /src/tests/unit/ +/src/tests/unit/append.cpp /src/tests/unit/archetypes/ /src/tests/unit/archetypes/async_ops.hpp /src/tests/unit/archetypes/async_result.hpp @@ -5492,33 +7006,52 @@ /src/tests/unit/archetypes/io_control_command.hpp /src/tests/unit/archetypes/settable_socket_option.hpp /src/tests/unit/associated_allocator.cpp +/src/tests/unit/associated_cancellation_slot.cpp /src/tests/unit/associated_executor.cpp +/src/tests/unit/associated_immediate_executor.cpp +/src/tests/unit/associator.cpp +/src/tests/unit/as_tuple.cpp /src/tests/unit/async_result.cpp /src/tests/unit/awaitable.cpp /src/tests/unit/basic_datagram_socket.cpp /src/tests/unit/basic_deadline_timer.cpp +/src/tests/unit/basic_file.cpp +/src/tests/unit/basic_random_access_file.cpp /src/tests/unit/basic_raw_socket.cpp +/src/tests/unit/basic_readable_pipe.cpp /src/tests/unit/basic_seq_packet_socket.cpp /src/tests/unit/basic_serial_port.cpp /src/tests/unit/basic_signal_set.cpp /src/tests/unit/basic_socket_acceptor.cpp /src/tests/unit/basic_socket.cpp /src/tests/unit/basic_streambuf.cpp +/src/tests/unit/basic_stream_file.cpp /src/tests/unit/basic_stream_socket.cpp /src/tests/unit/basic_waitable_timer.cpp +/src/tests/unit/basic_writable_pipe.cpp +/src/tests/unit/bind_allocator.cpp +/src/tests/unit/bind_cancellation_slot.cpp /src/tests/unit/bind_executor.cpp +/src/tests/unit/bind_immediate_executor.cpp /src/tests/unit/buffer.cpp /src/tests/unit/buffered_read_stream.cpp /src/tests/unit/buffered_stream.cpp /src/tests/unit/buffered_write_stream.cpp +/src/tests/unit/buffer_registration.cpp /src/tests/unit/buffers_iterator.cpp +/src/tests/unit/cancellation_signal.cpp +/src/tests/unit/cancellation_state.cpp +/src/tests/unit/cancellation_type.cpp /src/tests/unit/completion_condition.cpp /src/tests/unit/compose.cpp /src/tests/unit/connect.cpp +/src/tests/unit/connect_pipe.cpp +/src/tests/unit/consign.cpp /src/tests/unit/coroutine.cpp /src/tests/unit/co_spawn.cpp /src/tests/unit/deadline_timer.cpp /src/tests/unit/defer.cpp +/src/tests/unit/deferred.cpp /src/tests/unit/detached.cpp /src/tests/unit/dispatch.cpp /src/tests/unit/error.cpp @@ -5550,6 +7083,26 @@ /src/tests/unit/execution/submit.cpp /src/tests/unit/executor.cpp /src/tests/unit/executor_work_guard.cpp +/src/tests/unit/experimental/ +/src/tests/unit/experimental/awaitable_operators.cpp +/src/tests/unit/experimental/basic_channel.cpp +/src/tests/unit/experimental/basic_concurrent_channel.cpp +/src/tests/unit/experimental/channel.cpp +/src/tests/unit/experimental/channel_traits.cpp +/src/tests/unit/experimental/co_composed.cpp +/src/tests/unit/experimental/concurrent_channel.cpp +/src/tests/unit/experimental/coro/ +/src/tests/unit/experimental/coro/allocator.cpp +/src/tests/unit/experimental/coro/cancel.cpp +/src/tests/unit/experimental/coro/co_spawn.cpp +/src/tests/unit/experimental/coro/exception.cpp +/src/tests/unit/experimental/coro/executor.cpp +/src/tests/unit/experimental/coro/partial.cpp +/src/tests/unit/experimental/coro/simple_test.cpp +/src/tests/unit/experimental/coro/stack_test.cpp +/src/tests/unit/experimental/coro/use_coro.cpp +/src/tests/unit/experimental/promise.cpp +/src/tests/unit/file_base.cpp /src/tests/unit/generic/ /src/tests/unit/generic/basic_endpoint.cpp /src/tests/unit/generic/datagram_protocol.cpp @@ -5588,6 +7141,7 @@ /src/tests/unit/local/basic_endpoint.cpp /src/tests/unit/local/connect_pair.cpp /src/tests/unit/local/datagram_protocol.cpp +/src/tests/unit/local/seq_packet_protocol.cpp /src/tests/unit/local/stream_protocol.cpp /src/tests/unit/packaged_task.cpp /src/tests/unit/placeholders.cpp @@ -5598,12 +7152,18 @@ /src/tests/unit/posix/descriptor.cpp /src/tests/unit/posix/stream_descriptor.cpp /src/tests/unit/post.cpp +/src/tests/unit/prepend.cpp +/src/tests/unit/random_access_file.cpp +/src/tests/unit/readable_pipe.cpp /src/tests/unit/read_at.cpp /src/tests/unit/read.cpp /src/tests/unit/read_until.cpp +/src/tests/unit/recycling_allocator.cpp /src/tests/unit/redirect_error.cpp +/src/tests/unit/registered_buffer.cpp /src/tests/unit/serial_port_base.cpp /src/tests/unit/serial_port.cpp +/src/tests/unit/signal_set_base.cpp /src/tests/unit/signal_set.cpp /src/tests/unit/socket_base.cpp /src/tests/unit/ssl/ @@ -5618,6 +7178,7 @@ /src/tests/unit/steady_timer.cpp /src/tests/unit/strand.cpp /src/tests/unit/streambuf.cpp +/src/tests/unit/stream_file.cpp /src/tests/unit/system_context.cpp /src/tests/unit/system_executor.cpp /src/tests/unit/system_timer.cpp @@ -5649,6 +7210,7 @@ /src/tests/unit/windows/overlapped_ptr.cpp /src/tests/unit/windows/random_access_handle.cpp /src/tests/unit/windows/stream_handle.cpp +/src/tests/unit/writable_pipe.cpp /src/tests/unit/write_at.cpp /src/tests/unit/write.cpp /src/tools/ diff --git a/tidal-link/link/modules/asio-standalone/asio/asio.pc.in b/tidal-link/link/modules/asio-standalone/asio/asio.pc.in new file mode 100644 index 000000000..b93eb673d --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/asio.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: A cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} +Lflags: +Requires: +Requires.private: diff --git a/tidal-link/link/modules/asio-standalone/asio/autogen.sh b/tidal-link/link/modules/asio-standalone/asio/autogen.sh old mode 100644 new mode 100755 diff --git a/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest b/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest index 9c6c6e2bc..8258b2a8a 100644 --- a/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest +++ b/tidal-link/link/modules/asio-standalone/asio/boost_asio.manifest @@ -1,15 +1,25 @@ / /boost/ /boost/asio/ +/boost/asio/any_completion_executor.hpp +/boost/asio/any_completion_handler.hpp /boost/asio/any_io_executor.hpp +/boost/asio/append.hpp /boost/asio/associated_allocator.hpp +/boost/asio/associated_cancellation_slot.hpp /boost/asio/associated_executor.hpp +/boost/asio/associated_immediate_executor.hpp +/boost/asio/associator.hpp +/boost/asio/as_tuple.hpp /boost/asio/async_result.hpp /boost/asio/awaitable.hpp /boost/asio/basic_datagram_socket.hpp /boost/asio/basic_deadline_timer.hpp +/boost/asio/basic_file.hpp /boost/asio/basic_io_object.hpp +/boost/asio/basic_random_access_file.hpp /boost/asio/basic_raw_socket.hpp +/boost/asio/basic_readable_pipe.hpp /boost/asio/basic_seq_packet_socket.hpp /boost/asio/basic_serial_port.hpp /boost/asio/basic_signal_set.hpp @@ -19,9 +29,14 @@ /boost/asio/basic_socket_streambuf.hpp /boost/asio/basic_streambuf_fwd.hpp /boost/asio/basic_streambuf.hpp +/boost/asio/basic_stream_file.hpp /boost/asio/basic_stream_socket.hpp /boost/asio/basic_waitable_timer.hpp +/boost/asio/basic_writable_pipe.hpp +/boost/asio/bind_allocator.hpp +/boost/asio/bind_cancellation_slot.hpp /boost/asio/bind_executor.hpp +/boost/asio/bind_immediate_executor.hpp /boost/asio/buffered_read_stream_fwd.hpp /boost/asio/buffered_read_stream.hpp /boost/asio/buffered_stream_fwd.hpp @@ -29,20 +44,28 @@ /boost/asio/buffered_write_stream_fwd.hpp /boost/asio/buffered_write_stream.hpp /boost/asio/buffer.hpp +/boost/asio/buffer_registration.hpp /boost/asio/buffers_iterator.hpp +/boost/asio/cancellation_signal.hpp +/boost/asio/cancellation_state.hpp +/boost/asio/cancellation_type.hpp /boost/asio/completion_condition.hpp /boost/asio/compose.hpp /boost/asio/connect.hpp +/boost/asio/connect_pipe.hpp +/boost/asio/consign.hpp /boost/asio/coroutine.hpp /boost/asio/co_spawn.hpp /boost/asio/deadline_timer.hpp /boost/asio/defer.hpp +/boost/asio/deferred.hpp /boost/asio/detached.hpp /boost/asio/detail/ /boost/asio/detail/array_fwd.hpp /boost/asio/detail/array.hpp /boost/asio/detail/assert.hpp /boost/asio/detail/atomic_count.hpp +/boost/asio/detail/base_from_cancellation_state.hpp /boost/asio/detail/base_from_completion_cond.hpp /boost/asio/detail/bind_handler.hpp /boost/asio/detail/blocking_executor_op.hpp @@ -54,6 +77,7 @@ /boost/asio/detail/chrono.hpp /boost/asio/detail/chrono_time_traits.hpp /boost/asio/detail/completion_handler.hpp +/boost/asio/detail/composed_work.hpp /boost/asio/detail/concurrency_hint.hpp /boost/asio/detail/conditionally_enabled_event.hpp /boost/asio/detail/conditionally_enabled_mutex.hpp @@ -71,6 +95,7 @@ /boost/asio/detail/epoll_reactor.hpp /boost/asio/detail/eventfd_select_interrupter.hpp /boost/asio/detail/event.hpp +/boost/asio/detail/exception.hpp /boost/asio/detail/executor_function.hpp /boost/asio/detail/executor_op.hpp /boost/asio/detail/fd_set_adapter.hpp @@ -98,16 +123,21 @@ /boost/asio/detail/impl/epoll_reactor.ipp /boost/asio/detail/impl/eventfd_select_interrupter.ipp /boost/asio/detail/impl/handler_tracking.ipp +/boost/asio/detail/impl/io_uring_descriptor_service.ipp +/boost/asio/detail/impl/io_uring_file_service.ipp +/boost/asio/detail/impl/io_uring_service.hpp +/boost/asio/detail/impl/io_uring_service.ipp +/boost/asio/detail/impl/io_uring_socket_service_base.ipp /boost/asio/detail/impl/kqueue_reactor.hpp /boost/asio/detail/impl/kqueue_reactor.ipp /boost/asio/detail/impl/null_event.ipp /boost/asio/detail/impl/pipe_select_interrupter.ipp /boost/asio/detail/impl/posix_event.ipp /boost/asio/detail/impl/posix_mutex.ipp +/boost/asio/detail/impl/posix_serial_port_service.ipp /boost/asio/detail/impl/posix_thread.ipp /boost/asio/detail/impl/posix_tss_ptr.ipp /boost/asio/detail/impl/reactive_descriptor_service.ipp -/boost/asio/detail/impl/reactive_serial_port_service.ipp /boost/asio/detail/impl/reactive_socket_service_base.ipp /boost/asio/detail/impl/resolver_service_base.ipp /boost/asio/detail/impl/scheduler.ipp @@ -122,10 +152,12 @@ /boost/asio/detail/impl/strand_executor_service.ipp /boost/asio/detail/impl/strand_service.hpp /boost/asio/detail/impl/strand_service.ipp +/boost/asio/detail/impl/thread_context.ipp /boost/asio/detail/impl/throw_error.ipp /boost/asio/detail/impl/timer_queue_ptime.ipp /boost/asio/detail/impl/timer_queue_set.ipp /boost/asio/detail/impl/win_event.ipp +/boost/asio/detail/impl/win_iocp_file_service.ipp /boost/asio/detail/impl/win_iocp_handle_service.ipp /boost/asio/detail/impl/win_iocp_io_context.hpp /boost/asio/detail/impl/win_iocp_io_context.ipp @@ -140,8 +172,30 @@ /boost/asio/detail/impl/win_static_mutex.ipp /boost/asio/detail/impl/win_thread.ipp /boost/asio/detail/impl/win_tss_ptr.ipp +/boost/asio/detail/initiate_defer.hpp +/boost/asio/detail/initiate_dispatch.hpp +/boost/asio/detail/initiate_post.hpp /boost/asio/detail/io_control.hpp /boost/asio/detail/io_object_impl.hpp +/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +/boost/asio/detail/io_uring_descriptor_read_op.hpp +/boost/asio/detail/io_uring_descriptor_service.hpp +/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +/boost/asio/detail/io_uring_descriptor_write_op.hpp +/boost/asio/detail/io_uring_file_service.hpp +/boost/asio/detail/io_uring_null_buffers_op.hpp +/boost/asio/detail/io_uring_operation.hpp +/boost/asio/detail/io_uring_service.hpp +/boost/asio/detail/io_uring_socket_accept_op.hpp +/boost/asio/detail/io_uring_socket_connect_op.hpp +/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +/boost/asio/detail/io_uring_socket_recv_op.hpp +/boost/asio/detail/io_uring_socket_send_op.hpp +/boost/asio/detail/io_uring_socket_sendto_op.hpp +/boost/asio/detail/io_uring_socket_service_base.hpp +/boost/asio/detail/io_uring_socket_service.hpp +/boost/asio/detail/io_uring_wait_op.hpp /boost/asio/detail/is_buffer_sequence.hpp /boost/asio/detail/is_executor.hpp /boost/asio/detail/keyword_tss_ptr.hpp @@ -173,6 +227,7 @@ /boost/asio/detail/posix_fd_set_adapter.hpp /boost/asio/detail/posix_global.hpp /boost/asio/detail/posix_mutex.hpp +/boost/asio/detail/posix_serial_port_service.hpp /boost/asio/detail/posix_signal_blocker.hpp /boost/asio/detail/posix_static_mutex.hpp /boost/asio/detail/posix_thread.hpp @@ -180,7 +235,6 @@ /boost/asio/detail/push_options.hpp /boost/asio/detail/reactive_descriptor_service.hpp /boost/asio/detail/reactive_null_buffers_op.hpp -/boost/asio/detail/reactive_serial_port_service.hpp /boost/asio/detail/reactive_socket_accept_op.hpp /boost/asio/detail/reactive_socket_connect_op.hpp /boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -191,7 +245,6 @@ /boost/asio/detail/reactive_socket_service_base.hpp /boost/asio/detail/reactive_socket_service.hpp /boost/asio/detail/reactive_wait_op.hpp -/boost/asio/detail/reactor_fwd.hpp /boost/asio/detail/reactor.hpp /boost/asio/detail/reactor_op.hpp /boost/asio/detail/reactor_op_queue.hpp @@ -204,6 +257,7 @@ /boost/asio/detail/resolver_service.hpp /boost/asio/detail/scheduler.hpp /boost/asio/detail/scheduler_operation.hpp +/boost/asio/detail/scheduler_task.hpp /boost/asio/detail/scheduler_thread_info.hpp /boost/asio/detail/scoped_lock.hpp /boost/asio/detail/scoped_ptr.hpp @@ -246,6 +300,7 @@ /boost/asio/detail/timer_scheduler.hpp /boost/asio/detail/tss_ptr.hpp /boost/asio/detail/type_traits.hpp +/boost/asio/detail/utility.hpp /boost/asio/detail/variadic_templates.hpp /boost/asio/detail/wait_handler.hpp /boost/asio/detail/wait_op.hpp @@ -255,6 +310,7 @@ /boost/asio/detail/win_fd_set_adapter.hpp /boost/asio/detail/win_fenced_block.hpp /boost/asio/detail/win_global.hpp +/boost/asio/detail/win_iocp_file_service.hpp /boost/asio/detail/win_iocp_handle_read_op.hpp /boost/asio/detail/win_iocp_handle_service.hpp /boost/asio/detail/win_iocp_handle_write_op.hpp @@ -339,6 +395,53 @@ /boost/asio/execution/submit.hpp /boost/asio/executor.hpp /boost/asio/executor_work_guard.hpp +/boost/asio/experimental/ +/boost/asio/experimental/append.hpp +/boost/asio/experimental/as_single.hpp +/boost/asio/experimental/as_tuple.hpp +/boost/asio/experimental/awaitable_operators.hpp +/boost/asio/experimental/basic_channel.hpp +/boost/asio/experimental/basic_concurrent_channel.hpp +/boost/asio/experimental/cancellation_condition.hpp +/boost/asio/experimental/channel_error.hpp +/boost/asio/experimental/channel.hpp +/boost/asio/experimental/channel_traits.hpp +/boost/asio/experimental/co_composed.hpp +/boost/asio/experimental/concurrent_channel.hpp +/boost/asio/experimental/coro.hpp +/boost/asio/experimental/coro_traits.hpp +/boost/asio/experimental/co_spawn.hpp +/boost/asio/experimental/deferred.hpp +/boost/asio/experimental/detail/ +/boost/asio/experimental/detail/channel_handler.hpp +/boost/asio/experimental/detail/channel_message.hpp +/boost/asio/experimental/detail/channel_operation.hpp +/boost/asio/experimental/detail/channel_payload.hpp +/boost/asio/experimental/detail/channel_receive_op.hpp +/boost/asio/experimental/detail/channel_send_functions.hpp +/boost/asio/experimental/detail/channel_send_op.hpp +/boost/asio/experimental/detail/channel_service.hpp +/boost/asio/experimental/detail/coro_completion_handler.hpp +/boost/asio/experimental/detail/coro_promise_allocator.hpp +/boost/asio/experimental/detail/has_signature.hpp +/boost/asio/experimental/detail/impl/ +/boost/asio/experimental/detail/impl/channel_service.hpp +/boost/asio/experimental/detail/partial_promise.hpp +/boost/asio/experimental/impl/ +/boost/asio/experimental/impl/as_single.hpp +/boost/asio/experimental/impl/channel_error.ipp +/boost/asio/experimental/impl/co_composed.hpp +/boost/asio/experimental/impl/coro.hpp +/boost/asio/experimental/impl/parallel_group.hpp +/boost/asio/experimental/impl/promise.hpp +/boost/asio/experimental/impl/use_coro.hpp +/boost/asio/experimental/impl/use_promise.hpp +/boost/asio/experimental/parallel_group.hpp +/boost/asio/experimental/prepend.hpp +/boost/asio/experimental/promise.hpp +/boost/asio/experimental/use_coro.hpp +/boost/asio/experimental/use_promise.hpp +/boost/asio/file_base.hpp /boost/asio/generic/ /boost/asio/generic/basic_endpoint.hpp /boost/asio/generic/datagram_protocol.hpp @@ -355,15 +458,21 @@ /boost/asio/high_resolution_timer.hpp /boost/asio.hpp /boost/asio/impl/ +/boost/asio/impl/any_completion_executor.ipp +/boost/asio/impl/any_io_executor.ipp +/boost/asio/impl/append.hpp +/boost/asio/impl/as_tuple.hpp /boost/asio/impl/awaitable.hpp /boost/asio/impl/buffered_read_stream.hpp /boost/asio/impl/buffered_write_stream.hpp -/boost/asio/impl/compose.hpp +/boost/asio/impl/cancellation_signal.ipp /boost/asio/impl/connect.hpp +/boost/asio/impl/connect_pipe.hpp +/boost/asio/impl/connect_pipe.ipp +/boost/asio/impl/consign.hpp /boost/asio/impl/co_spawn.hpp -/boost/asio/impl/defer.hpp +/boost/asio/impl/deferred.hpp /boost/asio/impl/detached.hpp -/boost/asio/impl/dispatch.hpp /boost/asio/impl/error.ipp /boost/asio/impl/execution_context.hpp /boost/asio/impl/execution_context.ipp @@ -373,7 +482,7 @@ /boost/asio/impl/io_context.hpp /boost/asio/impl/io_context.ipp /boost/asio/impl/multiple_exceptions.ipp -/boost/asio/impl/post.hpp +/boost/asio/impl/prepend.hpp /boost/asio/impl/read_at.hpp /boost/asio/impl/read.hpp /boost/asio/impl/read_until.hpp @@ -381,7 +490,6 @@ /boost/asio/impl/serial_port_base.hpp /boost/asio/impl/serial_port_base.ipp /boost/asio/impl/spawn.hpp -/boost/asio/impl/src.cpp /boost/asio/impl/src.hpp /boost/asio/impl/system_context.hpp /boost/asio/impl/system_context.ipp @@ -441,6 +549,7 @@ /boost/asio/ip/unicast.hpp /boost/asio/ip/v6_only.hpp /boost/asio/is_applicable_property.hpp +/boost/asio/is_contiguous_iterator.hpp /boost/asio/is_executor.hpp /boost/asio/is_read_buffered.hpp /boost/asio/is_write_buffered.hpp @@ -452,6 +561,7 @@ /boost/asio/local/detail/endpoint.hpp /boost/asio/local/detail/impl/ /boost/asio/local/detail/impl/endpoint.ipp +/boost/asio/local/seq_packet_protocol.hpp /boost/asio/local/stream_protocol.hpp /boost/asio/multiple_exceptions.hpp /boost/asio/packaged_task.hpp @@ -464,15 +574,21 @@ /boost/asio/posix/stream_descriptor.hpp /boost/asio/post.hpp /boost/asio/prefer.hpp +/boost/asio/prepend.hpp /boost/asio/query.hpp +/boost/asio/random_access_file.hpp +/boost/asio/readable_pipe.hpp /boost/asio/read_at.hpp /boost/asio/read.hpp /boost/asio/read_until.hpp +/boost/asio/recycling_allocator.hpp /boost/asio/redirect_error.hpp +/boost/asio/registered_buffer.hpp /boost/asio/require_concept.hpp /boost/asio/require.hpp /boost/asio/serial_port_base.hpp /boost/asio/serial_port.hpp +/boost/asio/signal_set_base.hpp /boost/asio/signal_set.hpp /boost/asio/socket_base.hpp /boost/asio/spawn.hpp @@ -514,6 +630,7 @@ /boost/asio/steady_timer.hpp /boost/asio/strand.hpp /boost/asio/streambuf.hpp +/boost/asio/stream_file.hpp /boost/asio/system_context.hpp /boost/asio/system_executor.hpp /boost/asio/system_timer.hpp @@ -577,6 +694,7 @@ /boost/asio/windows/overlapped_ptr.hpp /boost/asio/windows/random_access_handle.hpp /boost/asio/windows/stream_handle.hpp +/boost/asio/writable_pipe.hpp /boost/asio/write_at.hpp /boost/asio/write.hpp /boost/asio/yield.hpp @@ -588,20 +706,56 @@ /boost/system/config.hpp /boost/system/cygwin_error.hpp /boost/system/detail/ +/boost/system/detail/append_int.hpp +/boost/system/detail/cerrno.hpp /boost/system/detail/config.hpp +/boost/system/detail/enable_if.hpp +/boost/system/detail/errc.hpp +/boost/system/detail/error_category.hpp +/boost/system/detail/error_category_impl.hpp +/boost/system/detail/error_code.hpp +/boost/system/detail/error_condition.hpp /boost/system/detail/generic_category.hpp -/boost/system/detail/std_interoperability.hpp -/boost/system/detail/system_category_posix.hpp -/boost/system/detail/system_category_win32.hpp +/boost/system/detail/generic_category_message.hpp +/boost/system/detail/interop_category.hpp +/boost/system/detail/is_same.hpp +/boost/system/detail/mutex.hpp +/boost/system/detail/requires_cxx11.hpp +/boost/system/detail/snprintf.hpp +/boost/system/detail/std_category.hpp +/boost/system/detail/std_category_impl.hpp +/boost/system/detail/system_category_condition_win32.hpp +/boost/system/detail/system_category.hpp +/boost/system/detail/system_category_impl.hpp +/boost/system/detail/system_category_message.hpp +/boost/system/detail/system_category_message_win32.hpp +/boost/system/detail/throws.hpp +/boost/system/errc.hpp +/boost/system/error_category.hpp /boost/system/error_code.hpp +/boost/system/error_condition.hpp +/boost/system/generic_category.hpp +/boost/system/is_error_code_enum.hpp +/boost/system/is_error_condition_enum.hpp /boost/system/linux_error.hpp +/boost/system/result.hpp +/boost/system/system_category.hpp /boost/system/system_error.hpp /boost/system/windows_error.hpp /doc/ /doc/html/ /doc/html/boost_asio/ +/doc/html/boost_asio/async_agent_chain.png +/doc/html/boost_asio/async_agent_model.png +/doc/html/boost_asio/async_child_agent_chain.png /doc/html/boost_asio/async_op1.png /doc/html/boost_asio/async_op2.png +/doc/html/boost_asio/async_op_init_complete.png +/doc/html/boost_asio/async_op_model.png +/doc/html/boost_asio/async_op_phases.png +/doc/html/boost_asio/async_op_trivial_chain.png +/doc/html/boost_asio/completion_token_model.png +/doc/html/boost_asio/completion_token_transform.png /doc/html/boost_asio/example/ /doc/html/boost_asio/example/cpp03/ /doc/html/boost_asio/example/cpp03/allocation/ @@ -756,6 +910,9 @@ /doc/html/boost_asio/example/cpp11/chat/chat_client.cpp /doc/html/boost_asio/example/cpp11/chat/chat_message.hpp /doc/html/boost_asio/example/cpp11/chat/chat_server.cpp +/doc/html/boost_asio/example/cpp11/deferred/ +/doc/html/boost_asio/example/cpp11/deferred/deferred_1.cpp +/doc/html/boost_asio/example/cpp11/deferred/deferred_2.cpp /doc/html/boost_asio/example/cpp11/echo/ /doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp /doc/html/boost_asio/example/cpp11/echo/async_udp_echo_server.cpp @@ -801,6 +958,8 @@ /doc/html/boost_asio/example/cpp11/invocation/prioritised_handlers.cpp /doc/html/boost_asio/example/cpp11/local/ /doc/html/boost_asio/example/cpp11/local/connect_pair.cpp +/doc/html/boost_asio/example/cpp11/local/fd_passing_stream_client.cpp +/doc/html/boost_asio/example/cpp11/local/fd_passing_stream_server.cpp /doc/html/boost_asio/example/cpp11/local/iostream_client.cpp /doc/html/boost_asio/example/cpp11/local/stream_client.cpp /doc/html/boost_asio/example/cpp11/local/stream_server.cpp @@ -818,6 +977,12 @@ /doc/html/boost_asio/example/cpp11/operations/composed_6.cpp /doc/html/boost_asio/example/cpp11/operations/composed_7.cpp /doc/html/boost_asio/example/cpp11/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/ +/doc/html/boost_asio/example/cpp11/parallel_group/ranged_wait_for_all.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_all.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one_error.cpp +/doc/html/boost_asio/example/cpp11/parallel_group/wait_for_one_success.cpp /doc/html/boost_asio/example/cpp11/socks4/ /doc/html/boost_asio/example/cpp11/socks4/socks4.hpp /doc/html/boost_asio/example/cpp11/socks4/sync_client.cpp @@ -835,8 +1000,36 @@ /doc/html/boost_asio/example/cpp11/timeouts/server.cpp /doc/html/boost_asio/example/cpp11/timers/ /doc/html/boost_asio/example/cpp11/timers/time_t_timer.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/ +/doc/html/boost_asio/example/cpp11/type_erasure/line_reader.hpp +/doc/html/boost_asio/example/cpp11/type_erasure/main.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/sleep.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/sleep.hpp +/doc/html/boost_asio/example/cpp11/type_erasure/stdin_line_reader.cpp +/doc/html/boost_asio/example/cpp11/type_erasure/stdin_line_reader.hpp /doc/html/boost_asio/example/cpp14/ +/doc/html/boost_asio/example/cpp14/deferred/ +/doc/html/boost_asio/example/cpp14/deferred/deferred_1.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_2.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_3.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_4.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_5.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_6.cpp +/doc/html/boost_asio/example/cpp14/deferred/deferred_7.cpp +/doc/html/boost_asio/example/cpp14/executors/ +/doc/html/boost_asio/example/cpp14/executors/actor.cpp +/doc/html/boost_asio/example/cpp14/executors/async_1.cpp +/doc/html/boost_asio/example/cpp14/executors/async_2.cpp +/doc/html/boost_asio/example/cpp14/executors/bank_account_1.cpp +/doc/html/boost_asio/example/cpp14/executors/bank_account_2.cpp +/doc/html/boost_asio/example/cpp14/executors/fork_join.cpp +/doc/html/boost_asio/example/cpp14/executors/pipeline.cpp +/doc/html/boost_asio/example/cpp14/executors/priority_scheduler.cpp +/doc/html/boost_asio/example/cpp14/iostreams/ +/doc/html/boost_asio/example/cpp14/iostreams/http_client.cpp /doc/html/boost_asio/example/cpp14/operations/ +/doc/html/boost_asio/example/cpp14/operations/callback_wrapper.cpp +/doc/html/boost_asio/example/cpp14/operations/c_callback_wrapper.cpp /doc/html/boost_asio/example/cpp14/operations/composed_1.cpp /doc/html/boost_asio/example/cpp14/operations/composed_2.cpp /doc/html/boost_asio/example/cpp14/operations/composed_3.cpp @@ -845,37 +1038,92 @@ /doc/html/boost_asio/example/cpp14/operations/composed_6.cpp /doc/html/boost_asio/example/cpp14/operations/composed_7.cpp /doc/html/boost_asio/example/cpp14/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/ +/doc/html/boost_asio/example/cpp14/parallel_group/parallel_sort.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/ranged_wait_for_all.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_all.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_error.cpp +/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_success.cpp /doc/html/boost_asio/example/cpp17/ /doc/html/boost_asio/example/cpp17/coroutines_ts/ /doc/html/boost_asio/example/cpp17/coroutines_ts/chat_server.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp +/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/range_based_for.cpp /doc/html/boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp +/doc/html/boost_asio/example/cpp20/ +/doc/html/boost_asio/example/cpp20/channels/ +/doc/html/boost_asio/example/cpp20/channels/throttling_proxy.cpp +/doc/html/boost_asio/example/cpp20/coroutines/ +/doc/html/boost_asio/example/cpp20/coroutines/chat_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_as_single_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_deferred.cpp +/doc/html/boost_asio/example/cpp20/coroutines/echo_server_with_deferred_default.cpp +/doc/html/boost_asio/example/cpp20/coroutines/refactored_echo_server.cpp +/doc/html/boost_asio/example/cpp20/coroutines/timeout.cpp +/doc/html/boost_asio/example/cpp20/operations/ +/doc/html/boost_asio/example/cpp20/operations/callback_wrapper.cpp +/doc/html/boost_asio/example/cpp20/operations/c_callback_wrapper.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_1.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_2.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_3.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_4.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_5.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_6.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_7.cpp +/doc/html/boost_asio/example/cpp20/operations/composed_8.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/ +/doc/html/boost_asio/example/cpp20/type_erasure/line_reader.hpp +/doc/html/boost_asio/example/cpp20/type_erasure/main.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/sleep.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/sleep.hpp +/doc/html/boost_asio/example/cpp20/type_erasure/stdin_line_reader.cpp +/doc/html/boost_asio/example/cpp20/type_erasure/stdin_line_reader.hpp /doc/html/boost_asio/examples/ /doc/html/boost_asio/examples/cpp03_examples.html /doc/html/boost_asio/examples/cpp11_examples.html /doc/html/boost_asio/examples/cpp14_examples.html /doc/html/boost_asio/examples/cpp17_examples.html +/doc/html/boost_asio/examples/cpp20_examples.html /doc/html/boost_asio/examples.html +/doc/html/boost_asio/higher_level_model.png /doc/html/boost_asio/history.html /doc/html/boost_asio.html /doc/html/boost_asio/index.html /doc/html/boost_asio/net_ts.html /doc/html/boost_asio/overview/ +/doc/html/boost_asio/overview/basics.html +/doc/html/boost_asio/overview/channels.html +/doc/html/boost_asio/overview/composition/ +/doc/html/boost_asio/overview/composition/compose.html +/doc/html/boost_asio/overview/composition/coro.html +/doc/html/boost_asio/overview/composition/coroutine.html +/doc/html/boost_asio/overview/composition/cpp20_coroutines.html +/doc/html/boost_asio/overview/composition/deferred.html +/doc/html/boost_asio/overview/composition/futures.html +/doc/html/boost_asio/overview/composition.html +/doc/html/boost_asio/overview/composition/immediate_completion.html +/doc/html/boost_asio/overview/composition/parallel_group.html +/doc/html/boost_asio/overview/composition/promises.html +/doc/html/boost_asio/overview/composition/spawn.html +/doc/html/boost_asio/overview/composition/token_adapters.html +/doc/html/boost_asio/overview/composition/type_erasure.html /doc/html/boost_asio/overview/core/ /doc/html/boost_asio/overview/core/allocation.html /doc/html/boost_asio/overview/core/async.html -/doc/html/boost_asio/overview/core/basics.html /doc/html/boost_asio/overview/core/buffers.html +/doc/html/boost_asio/overview/core/cancellation.html /doc/html/boost_asio/overview/core/concurrency_hint.html -/doc/html/boost_asio/overview/core/coroutine.html -/doc/html/boost_asio/overview/core/coroutines_ts.html /doc/html/boost_asio/overview/core/handler_tracking.html /doc/html/boost_asio/overview/core.html /doc/html/boost_asio/overview/core/line_based.html /doc/html/boost_asio/overview/core/reactor.html -/doc/html/boost_asio/overview/core/spawn.html /doc/html/boost_asio/overview/core/strands.html /doc/html/boost_asio/overview/core/streams.html /doc/html/boost_asio/overview/core/threads.html @@ -883,20 +1131,33 @@ /doc/html/boost_asio/overview/cpp2011/array.html /doc/html/boost_asio/overview/cpp2011/atomic.html /doc/html/boost_asio/overview/cpp2011/chrono.html -/doc/html/boost_asio/overview/cpp2011/futures.html /doc/html/boost_asio/overview/cpp2011.html /doc/html/boost_asio/overview/cpp2011/move_handlers.html /doc/html/boost_asio/overview/cpp2011/move_objects.html /doc/html/boost_asio/overview/cpp2011/shared_ptr.html /doc/html/boost_asio/overview/cpp2011/variadic.html +/doc/html/boost_asio/overview/files.html /doc/html/boost_asio/overview.html /doc/html/boost_asio/overview/implementation.html +/doc/html/boost_asio/overview/model/ +/doc/html/boost_asio/overview/model/allocators.html +/doc/html/boost_asio/overview/model/associators.html +/doc/html/boost_asio/overview/model/async_agents.html +/doc/html/boost_asio/overview/model/async_ops.html +/doc/html/boost_asio/overview/model/cancellation.html +/doc/html/boost_asio/overview/model/child_agents.html +/doc/html/boost_asio/overview/model/completion_tokens.html +/doc/html/boost_asio/overview/model/executors.html +/doc/html/boost_asio/overview/model/higher_levels.html +/doc/html/boost_asio/overview/model.html +/doc/html/boost_asio/overview/model/library_elements.html /doc/html/boost_asio/overview/networking/ /doc/html/boost_asio/overview/networking/bsd_sockets.html /doc/html/boost_asio/overview/networking.html /doc/html/boost_asio/overview/networking/iostreams.html /doc/html/boost_asio/overview/networking/other_protocols.html /doc/html/boost_asio/overview/networking/protocols.html +/doc/html/boost_asio/overview/pipes.html /doc/html/boost_asio/overview/posix/ /doc/html/boost_asio/overview/posix/fork.html /doc/html/boost_asio/overview/posix.html @@ -916,7 +1177,201 @@ /doc/html/boost_asio/reference/ /doc/html/boost_asio/reference/AcceptableProtocol.html /doc/html/boost_asio/reference/AcceptHandler.html +/doc/html/boost_asio/reference/AcceptToken.html +/doc/html/boost_asio/reference/allocator_binder/ +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/ +/doc/html/boost_asio/reference/allocator_binder/_allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload1.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload2.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload3.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload4.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload5.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload6.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload7.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload8.html +/doc/html/boost_asio/reference/allocator_binder/allocator_binder/overload9.html +/doc/html/boost_asio/reference/allocator_binder/allocator_type.html +/doc/html/boost_asio/reference/allocator_binder/argument_type.html +/doc/html/boost_asio/reference/allocator_binder/first_argument_type.html +/doc/html/boost_asio/reference/allocator_binder/get/ +/doc/html/boost_asio/reference/allocator_binder/get_allocator.html +/doc/html/boost_asio/reference/allocator_binder/get.html +/doc/html/boost_asio/reference/allocator_binder/get/overload1.html +/doc/html/boost_asio/reference/allocator_binder/get/overload2.html +/doc/html/boost_asio/reference/allocator_binder.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/allocator_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/allocator_binder/result_type.html +/doc/html/boost_asio/reference/allocator_binder/second_argument_type.html +/doc/html/boost_asio/reference/allocator_binder/target_type.html +/doc/html/boost_asio/reference/any_completion_executor/ +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/ +/doc/html/boost_asio/reference/any_completion_executor/_any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload10.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload4.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload5.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload6.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload7.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload8.html +/doc/html/boost_asio/reference/any_completion_executor/any_completion_executor/overload9.html +/doc/html/boost_asio/reference/any_completion_executor/context.html +/doc/html/boost_asio/reference/any_completion_executor/execute.html +/doc/html/boost_asio/reference/any_completion_executor.html +/doc/html/boost_asio/reference/any_completion_executor/operator_bool.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq__eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/ +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/operator_not__eq_/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/ +/doc/html/boost_asio/reference/any_completion_executor/prefer.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload3.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload4.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload5.html +/doc/html/boost_asio/reference/any_completion_executor/prefer/overload6.html +/doc/html/boost_asio/reference/any_completion_executor/query.html +/doc/html/boost_asio/reference/any_completion_executor/require/ +/doc/html/boost_asio/reference/any_completion_executor/require.html +/doc/html/boost_asio/reference/any_completion_executor/require/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/require/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/swap/ +/doc/html/boost_asio/reference/any_completion_executor/swap.html +/doc/html/boost_asio/reference/any_completion_executor/swap/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/swap/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/target/ +/doc/html/boost_asio/reference/any_completion_executor/target.html +/doc/html/boost_asio/reference/any_completion_executor/target/overload1.html +/doc/html/boost_asio/reference/any_completion_executor/target/overload2.html +/doc/html/boost_asio/reference/any_completion_executor/target_type.html +/doc/html/boost_asio/reference/any_completion_handler/ +/doc/html/boost_asio/reference/any_completion_handler_allocator/ +/doc/html/boost_asio/reference/any_completion_handler_allocator/allocate.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/deallocate.html +/doc/html/boost_asio/reference/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/ +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/any_completion_handler_allocator.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/ +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt___rebind/other.html +/doc/html/boost_asio/reference/any_completion_handler_allocator_lt__void_comma__Signatures_ellipsis__gt_/value_type.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind/ +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind.html +/doc/html/boost_asio/reference/any_completion_handler_allocator__rebind/other.html +/doc/html/boost_asio/reference/any_completion_handler_allocator/value_type.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/ +/doc/html/boost_asio/reference/any_completion_handler/_any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload3.html +/doc/html/boost_asio/reference/any_completion_handler/any_completion_handler/overload4.html +/doc/html/boost_asio/reference/any_completion_handler/get_allocator.html +/doc/html/boost_asio/reference/any_completion_handler/get_cancellation_slot.html +/doc/html/boost_asio/reference/any_completion_handler.html +/doc/html/boost_asio/reference/any_completion_handler/operator_bool.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_lp__rp_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/ +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_completion_handler/operator_not_.html +/doc/html/boost_asio/reference/any_completion_handler/swap.html +/doc/html/boost_asio/reference/any_io_executor/ +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/ +/doc/html/boost_asio/reference/any_io_executor/_any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload10.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload1.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload2.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload3.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload4.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload5.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload6.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload7.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload8.html +/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload9.html +/doc/html/boost_asio/reference/any_io_executor/context.html +/doc/html/boost_asio/reference/any_io_executor/execute.html /doc/html/boost_asio/reference/any_io_executor.html +/doc/html/boost_asio/reference/any_io_executor/operator_bool.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/ +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload1.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload2.html +/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload3.html +/doc/html/boost_asio/reference/any_io_executor/prefer/ +/doc/html/boost_asio/reference/any_io_executor/prefer.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload1.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload2.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload3.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload4.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload5.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload6.html +/doc/html/boost_asio/reference/any_io_executor/prefer/overload7.html +/doc/html/boost_asio/reference/any_io_executor/query.html +/doc/html/boost_asio/reference/any_io_executor/require/ +/doc/html/boost_asio/reference/any_io_executor/require.html +/doc/html/boost_asio/reference/any_io_executor/require/overload1.html +/doc/html/boost_asio/reference/any_io_executor/require/overload2.html +/doc/html/boost_asio/reference/any_io_executor/require/overload3.html +/doc/html/boost_asio/reference/any_io_executor/swap/ +/doc/html/boost_asio/reference/any_io_executor/swap.html +/doc/html/boost_asio/reference/any_io_executor/swap/overload1.html +/doc/html/boost_asio/reference/any_io_executor/swap/overload2.html +/doc/html/boost_asio/reference/any_io_executor/target/ +/doc/html/boost_asio/reference/any_io_executor/target.html +/doc/html/boost_asio/reference/any_io_executor/target/overload1.html +/doc/html/boost_asio/reference/any_io_executor/target/overload2.html +/doc/html/boost_asio/reference/any_io_executor/target_type.html +/doc/html/boost_asio/reference/append.html +/doc/html/boost_asio/reference/append_t/ +/doc/html/boost_asio/reference/append_t/append_t.html +/doc/html/boost_asio/reference/append_t.html +/doc/html/boost_asio/reference/append_t/token_.html +/doc/html/boost_asio/reference/append_t/values_.html /doc/html/boost_asio/reference/asio_handler_allocate.html /doc/html/boost_asio/reference/asio_handler_deallocate.html /doc/html/boost_asio/reference/asio_handler_invoke/ @@ -925,13 +1380,74 @@ /doc/html/boost_asio/reference/asio_handler_invoke/overload2.html /doc/html/boost_asio/reference/asio_handler_is_continuation.html /doc/html/boost_asio/reference/associated_allocator/ -/doc/html/boost_asio/reference/associated_allocator/get.html +/doc/html/boost_asio/reference/associated_allocator/decltype/ +/doc/html/boost_asio/reference/associated_allocator/decltype.html +/doc/html/boost_asio/reference/associated_allocator/decltype/overload1.html +/doc/html/boost_asio/reference/associated_allocator/decltype/overload2.html /doc/html/boost_asio/reference/associated_allocator.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/ +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html +/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html +/doc/html/boost_asio/reference/associated_allocator/noexcept.html /doc/html/boost_asio/reference/associated_allocator/type.html +/doc/html/boost_asio/reference/associated_cancellation_slot/ +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/ +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype.html +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/overload1.html +/doc/html/boost_asio/reference/associated_cancellation_slot/decltype/overload2.html +/doc/html/boost_asio/reference/associated_cancellation_slot.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/ +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/ +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_.html +/doc/html/boost_asio/reference/associated_cancellation_slot_lt__reference_wrapper_lt__T__gt__comma__CancellationSlot__gt_/type.html +/doc/html/boost_asio/reference/associated_cancellation_slot/noexcept.html +/doc/html/boost_asio/reference/associated_cancellation_slot/type.html /doc/html/boost_asio/reference/associated_executor/ -/doc/html/boost_asio/reference/associated_executor/get.html +/doc/html/boost_asio/reference/associated_executor/decltype/ +/doc/html/boost_asio/reference/associated_executor/decltype.html +/doc/html/boost_asio/reference/associated_executor/decltype/overload1.html +/doc/html/boost_asio/reference/associated_executor/decltype/overload2.html /doc/html/boost_asio/reference/associated_executor.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/ +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload1.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get/overload2.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/html/boost_asio/reference/associated_executor/noexcept.html /doc/html/boost_asio/reference/associated_executor/type.html +/doc/html/boost_asio/reference/associated_immediate_executor/ +/doc/html/boost_asio/reference/associated_immediate_executor/decltype.html +/doc/html/boost_asio/reference/associated_immediate_executor.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html +/doc/html/boost_asio/reference/associated_immediate_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html +/doc/html/boost_asio/reference/associated_immediate_executor/noexcept.html +/doc/html/boost_asio/reference/associated_immediate_executor/type.html +/doc/html/boost_asio/reference/associator.html +/doc/html/boost_asio/reference/as_tuple.html +/doc/html/boost_asio/reference/as_tuple_t/ +/doc/html/boost_asio/reference/as_tuple_t/as_default_on.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/ +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/overload1.html +/doc/html/boost_asio/reference/as_tuple_t/as_tuple_t/overload2.html +/doc/html/boost_asio/reference/as_tuple_t__default_constructor_tag.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/ +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/as_tuple_t__executor_with_default.html +/doc/html/boost_asio/reference/as_tuple_t.html +/doc/html/boost_asio/reference/as_tuple_t/token_.html /doc/html/boost_asio/reference/async_completion/ /doc/html/boost_asio/reference/async_completion/async_completion.html /doc/html/boost_asio/reference/async_completion/completion_handler.html @@ -989,6 +1505,11 @@ /doc/html/boost_asio/reference/async_result/get.html /doc/html/boost_asio/reference/async_result.html /doc/html/boost_asio/reference/async_result/initiate.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/ +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/handler_type.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/initiate.html +/doc/html/boost_asio/reference/async_result_lt__basic_yield_context_lt__Executor__gt__comma__Signature__gt_/return_type.html /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html /doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html @@ -1021,6 +1542,7 @@ /doc/html/boost_asio/reference/awaitable/awaitable/overload2.html /doc/html/boost_asio/reference/awaitable/executor_type.html /doc/html/boost_asio/reference/awaitable.html +/doc/html/boost_asio/reference/awaitable/operator_eq_.html /doc/html/boost_asio/reference/awaitable/valid.html /doc/html/boost_asio/reference/awaitable/value_type.html /doc/html/boost_asio/reference/bad_executor/ @@ -1100,7 +1622,6 @@ /doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/impl_.html /doc/html/boost_asio/reference/basic_datagram_socket/io_control/ /doc/html/boost_asio/reference/basic_datagram_socket/io_control.html /doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload1.html @@ -1240,6 +1761,81 @@ /doc/html/boost_asio/reference/basic_deadline_timer/wait.html /doc/html/boost_asio/reference/basic_deadline_timer/wait/overload1.html /doc/html/boost_asio/reference/basic_deadline_timer/wait/overload2.html +/doc/html/boost_asio/reference/basic_file/ +/doc/html/boost_asio/reference/basic_file/append.html +/doc/html/boost_asio/reference/basic_file/assign/ +/doc/html/boost_asio/reference/basic_file/assign.html +/doc/html/boost_asio/reference/basic_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_file/basic_file/ +/doc/html/boost_asio/reference/basic_file/_basic_file.html +/doc/html/boost_asio/reference/basic_file/basic_file.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload10.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload1.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload2.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload3.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload4.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload5.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload6.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload7.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload8.html +/doc/html/boost_asio/reference/basic_file/basic_file/overload9.html +/doc/html/boost_asio/reference/basic_file/cancel/ +/doc/html/boost_asio/reference/basic_file/cancel.html +/doc/html/boost_asio/reference/basic_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_file/close/ +/doc/html/boost_asio/reference/basic_file/close.html +/doc/html/boost_asio/reference/basic_file/close/overload1.html +/doc/html/boost_asio/reference/basic_file/close/overload2.html +/doc/html/boost_asio/reference/basic_file/create.html +/doc/html/boost_asio/reference/basic_file/exclusive.html +/doc/html/boost_asio/reference/basic_file/executor_type.html +/doc/html/boost_asio/reference/basic_file/flags.html +/doc/html/boost_asio/reference/basic_file/get_executor.html +/doc/html/boost_asio/reference/basic_file.html +/doc/html/boost_asio/reference/basic_file/is_open.html +/doc/html/boost_asio/reference/basic_file/native_handle.html +/doc/html/boost_asio/reference/basic_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_file/open/ +/doc/html/boost_asio/reference/basic_file/open.html +/doc/html/boost_asio/reference/basic_file/open/overload1.html +/doc/html/boost_asio/reference/basic_file/open/overload2.html +/doc/html/boost_asio/reference/basic_file/open/overload3.html +/doc/html/boost_asio/reference/basic_file/open/overload4.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_file/read_only.html +/doc/html/boost_asio/reference/basic_file/read_write.html +/doc/html/boost_asio/reference/basic_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_file/release/ +/doc/html/boost_asio/reference/basic_file/release.html +/doc/html/boost_asio/reference/basic_file/release/overload1.html +/doc/html/boost_asio/reference/basic_file/release/overload2.html +/doc/html/boost_asio/reference/basic_file/resize/ +/doc/html/boost_asio/reference/basic_file/resize.html +/doc/html/boost_asio/reference/basic_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_file/seek_basis.html +/doc/html/boost_asio/reference/basic_file/size/ +/doc/html/boost_asio/reference/basic_file/size.html +/doc/html/boost_asio/reference/basic_file/size/overload1.html +/doc/html/boost_asio/reference/basic_file/size/overload2.html +/doc/html/boost_asio/reference/basic_file/sync_all/ +/doc/html/boost_asio/reference/basic_file/sync_all.html +/doc/html/boost_asio/reference/basic_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_file/sync_data/ +/doc/html/boost_asio/reference/basic_file/sync_data.html +/doc/html/boost_asio/reference/basic_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_file/truncate.html +/doc/html/boost_asio/reference/basic_file/write_only.html /doc/html/boost_asio/reference/basic_io_object/ /doc/html/boost_asio/reference/basic_io_object/basic_io_object/ /doc/html/boost_asio/reference/basic_io_object/_basic_io_object.html @@ -1263,6 +1859,91 @@ /doc/html/boost_asio/reference/basic_io_object/implementation_type.html /doc/html/boost_asio/reference/basic_io_object/operator_eq_.html /doc/html/boost_asio/reference/basic_io_object/service_type.html +/doc/html/boost_asio/reference/basic_random_access_file/ +/doc/html/boost_asio/reference/basic_random_access_file/append.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/ +/doc/html/boost_asio/reference/basic_random_access_file/assign.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/async_read_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/async_write_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/ +/doc/html/boost_asio/reference/basic_random_access_file/_basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload10.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload3.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload4.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload5.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload6.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload7.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload8.html +/doc/html/boost_asio/reference/basic_random_access_file/basic_random_access_file/overload9.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/ +/doc/html/boost_asio/reference/basic_random_access_file/cancel.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/close/ +/doc/html/boost_asio/reference/basic_random_access_file/close.html +/doc/html/boost_asio/reference/basic_random_access_file/close/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/close/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/create.html +/doc/html/boost_asio/reference/basic_random_access_file/exclusive.html +/doc/html/boost_asio/reference/basic_random_access_file/executor_type.html +/doc/html/boost_asio/reference/basic_random_access_file/flags.html +/doc/html/boost_asio/reference/basic_random_access_file/get_executor.html +/doc/html/boost_asio/reference/basic_random_access_file.html +/doc/html/boost_asio/reference/basic_random_access_file/is_open.html +/doc/html/boost_asio/reference/basic_random_access_file/native_handle.html +/doc/html/boost_asio/reference/basic_random_access_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_random_access_file/open/ +/doc/html/boost_asio/reference/basic_random_access_file/open.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload3.html +/doc/html/boost_asio/reference/basic_random_access_file/open/overload4.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/read_only.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/ +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/read_some_at/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/read_write.html +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_random_access_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_random_access_file/release/ +/doc/html/boost_asio/reference/basic_random_access_file/release.html +/doc/html/boost_asio/reference/basic_random_access_file/release/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/release/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/ +/doc/html/boost_asio/reference/basic_random_access_file/resize.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/seek_basis.html +/doc/html/boost_asio/reference/basic_random_access_file/size/ +/doc/html/boost_asio/reference/basic_random_access_file/size.html +/doc/html/boost_asio/reference/basic_random_access_file/size/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/size/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/ +/doc/html/boost_asio/reference/basic_random_access_file/sync_all.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/ +/doc/html/boost_asio/reference/basic_random_access_file/sync_data.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_random_access_file/truncate.html +/doc/html/boost_asio/reference/basic_random_access_file/write_only.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/ +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/overload1.html +/doc/html/boost_asio/reference/basic_random_access_file/write_some_at/overload2.html /doc/html/boost_asio/reference/basic_raw_socket/ /doc/html/boost_asio/reference/basic_raw_socket/assign/ /doc/html/boost_asio/reference/basic_raw_socket/assign.html @@ -1336,7 +2017,6 @@ /doc/html/boost_asio/reference/basic_raw_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_raw_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/impl_.html /doc/html/boost_asio/reference/basic_raw_socket/io_control/ /doc/html/boost_asio/reference/basic_raw_socket/io_control.html /doc/html/boost_asio/reference/basic_raw_socket/io_control/overload1.html @@ -1432,6 +2112,55 @@ /doc/html/boost_asio/reference/basic_raw_socket/wait/overload1.html /doc/html/boost_asio/reference/basic_raw_socket/wait/overload2.html /doc/html/boost_asio/reference/basic_raw_socket/wait_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/ +/doc/html/boost_asio/reference/basic_readable_pipe/assign/ +/doc/html/boost_asio/reference/basic_readable_pipe/assign.html +/doc/html/boost_asio/reference/basic_readable_pipe/assign/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/assign/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/async_read_some.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/ +/doc/html/boost_asio/reference/basic_readable_pipe/_basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload3.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload4.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload5.html +/doc/html/boost_asio/reference/basic_readable_pipe/basic_readable_pipe/overload6.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/ +/doc/html/boost_asio/reference/basic_readable_pipe/cancel.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/cancel/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/ +/doc/html/boost_asio/reference/basic_readable_pipe/close.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/close/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/executor_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/get_executor.html +/doc/html/boost_asio/reference/basic_readable_pipe.html +/doc/html/boost_asio/reference/basic_readable_pipe/is_open.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/ +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/lowest_layer_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/native_handle.html +/doc/html/boost_asio/reference/basic_readable_pipe/native_handle_type.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/ +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/ +/doc/html/boost_asio/reference/basic_readable_pipe/read_some.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/read_some/overload2.html +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor/ +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor.html +/doc/html/boost_asio/reference/basic_readable_pipe__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/ +/doc/html/boost_asio/reference/basic_readable_pipe/release.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/overload1.html +/doc/html/boost_asio/reference/basic_readable_pipe/release/overload2.html /doc/html/boost_asio/reference/basic_seq_packet_socket/ /doc/html/boost_asio/reference/basic_seq_packet_socket/assign/ /doc/html/boost_asio/reference/basic_seq_packet_socket/assign.html @@ -1494,7 +2223,6 @@ /doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/impl_.html /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/ /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control.html /doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload1.html @@ -1589,6 +2317,7 @@ /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/ /doc/html/boost_asio/reference/basic_serial_port/_basic_serial_port.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port.html +/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload10.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload1.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload2.html /doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload3.html @@ -1625,7 +2354,10 @@ /doc/html/boost_asio/reference/basic_serial_port/open.html /doc/html/boost_asio/reference/basic_serial_port/open/overload1.html /doc/html/boost_asio/reference/basic_serial_port/open/overload2.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/ /doc/html/boost_asio/reference/basic_serial_port/operator_eq_.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_serial_port/operator_eq_/overload2.html /doc/html/boost_asio/reference/basic_serial_port/read_some/ /doc/html/boost_asio/reference/basic_serial_port/read_some.html /doc/html/boost_asio/reference/basic_serial_port/read_some/overload1.html @@ -1650,6 +2382,8 @@ /doc/html/boost_asio/reference/basic_signal_set/add.html /doc/html/boost_asio/reference/basic_signal_set/add/overload1.html /doc/html/boost_asio/reference/basic_signal_set/add/overload2.html +/doc/html/boost_asio/reference/basic_signal_set/add/overload3.html +/doc/html/boost_asio/reference/basic_signal_set/add/overload4.html /doc/html/boost_asio/reference/basic_signal_set/async_wait.html /doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/ /doc/html/boost_asio/reference/basic_signal_set/_basic_signal_set.html @@ -1671,6 +2405,8 @@ /doc/html/boost_asio/reference/basic_signal_set/clear/overload1.html /doc/html/boost_asio/reference/basic_signal_set/clear/overload2.html /doc/html/boost_asio/reference/basic_signal_set/executor_type.html +/doc/html/boost_asio/reference/basic_signal_set/flags.html +/doc/html/boost_asio/reference/basic_signal_set/flags_t.html /doc/html/boost_asio/reference/basic_signal_set/get_executor.html /doc/html/boost_asio/reference/basic_signal_set.html /doc/html/boost_asio/reference/basic_signal_set__rebind_executor/ @@ -1875,7 +2611,6 @@ /doc/html/boost_asio/reference/basic_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/impl_.html /doc/html/boost_asio/reference/basic_socket/io_control/ /doc/html/boost_asio/reference/basic_socket/io_control.html /doc/html/boost_asio/reference/basic_socket/io_control/overload1.html @@ -2051,6 +2786,95 @@ /doc/html/boost_asio/reference/basic_streambuf/reserve.html /doc/html/boost_asio/reference/basic_streambuf/size.html /doc/html/boost_asio/reference/basic_streambuf/underflow.html +/doc/html/boost_asio/reference/basic_stream_file/ +/doc/html/boost_asio/reference/basic_stream_file/append.html +/doc/html/boost_asio/reference/basic_stream_file/assign/ +/doc/html/boost_asio/reference/basic_stream_file/assign.html +/doc/html/boost_asio/reference/basic_stream_file/assign/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/assign/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/async_read_some.html +/doc/html/boost_asio/reference/basic_stream_file/async_write_some.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/ +/doc/html/boost_asio/reference/basic_stream_file/_basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload10.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload3.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload4.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload5.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload6.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload7.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload8.html +/doc/html/boost_asio/reference/basic_stream_file/basic_stream_file/overload9.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/ +/doc/html/boost_asio/reference/basic_stream_file/cancel.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/cancel/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/close/ +/doc/html/boost_asio/reference/basic_stream_file/close.html +/doc/html/boost_asio/reference/basic_stream_file/close/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/close/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/create.html +/doc/html/boost_asio/reference/basic_stream_file/exclusive.html +/doc/html/boost_asio/reference/basic_stream_file/executor_type.html +/doc/html/boost_asio/reference/basic_stream_file/flags.html +/doc/html/boost_asio/reference/basic_stream_file/get_executor.html +/doc/html/boost_asio/reference/basic_stream_file.html +/doc/html/boost_asio/reference/basic_stream_file/is_open.html +/doc/html/boost_asio/reference/basic_stream_file/native_handle.html +/doc/html/boost_asio/reference/basic_stream_file/native_handle_type.html +/doc/html/boost_asio/reference/basic_stream_file/open/ +/doc/html/boost_asio/reference/basic_stream_file/open.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload3.html +/doc/html/boost_asio/reference/basic_stream_file/open/overload4.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/ +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/read_only.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/ +/doc/html/boost_asio/reference/basic_stream_file/read_some.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/read_some/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/read_write.html +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor/ +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor.html +/doc/html/boost_asio/reference/basic_stream_file__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_stream_file/release/ +/doc/html/boost_asio/reference/basic_stream_file/release.html +/doc/html/boost_asio/reference/basic_stream_file/release/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/release/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/resize/ +/doc/html/boost_asio/reference/basic_stream_file/resize.html +/doc/html/boost_asio/reference/basic_stream_file/resize/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/resize/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/seek/ +/doc/html/boost_asio/reference/basic_stream_file/seek_basis.html +/doc/html/boost_asio/reference/basic_stream_file/seek.html +/doc/html/boost_asio/reference/basic_stream_file/seek/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/seek/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/size/ +/doc/html/boost_asio/reference/basic_stream_file/size.html +/doc/html/boost_asio/reference/basic_stream_file/size/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/size/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/ +/doc/html/boost_asio/reference/basic_stream_file/sync_all.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all_on_write.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/sync_all/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/ +/doc/html/boost_asio/reference/basic_stream_file/sync_data.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/sync_data/overload2.html +/doc/html/boost_asio/reference/basic_stream_file/truncate.html +/doc/html/boost_asio/reference/basic_stream_file/write_only.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/ +/doc/html/boost_asio/reference/basic_stream_file/write_some.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/overload1.html +/doc/html/boost_asio/reference/basic_stream_file/write_some/overload2.html /doc/html/boost_asio/reference/basic_stream_socket/ /doc/html/boost_asio/reference/basic_stream_socket/assign/ /doc/html/boost_asio/reference/basic_stream_socket/assign.html @@ -2118,7 +2942,6 @@ /doc/html/boost_asio/reference/basic_stream_socket/get_option/overload1.html /doc/html/boost_asio/reference/basic_stream_socket/get_option/overload2.html /doc/html/boost_asio/reference/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/impl_.html /doc/html/boost_asio/reference/basic_stream_socket/io_control/ /doc/html/boost_asio/reference/basic_stream_socket/io_control.html /doc/html/boost_asio/reference/basic_stream_socket/io_control/overload1.html @@ -2295,19 +3118,81 @@ /doc/html/boost_asio/reference/basic_waitable_timer/wait.html /doc/html/boost_asio/reference/basic_waitable_timer/wait/overload1.html /doc/html/boost_asio/reference/basic_waitable_timer/wait/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/ +/doc/html/boost_asio/reference/basic_writable_pipe/assign/ +/doc/html/boost_asio/reference/basic_writable_pipe/assign.html +/doc/html/boost_asio/reference/basic_writable_pipe/assign/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/assign/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/async_write_some.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/ +/doc/html/boost_asio/reference/basic_writable_pipe/_basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload3.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload4.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload5.html +/doc/html/boost_asio/reference/basic_writable_pipe/basic_writable_pipe/overload6.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/ +/doc/html/boost_asio/reference/basic_writable_pipe/cancel.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/cancel/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/ +/doc/html/boost_asio/reference/basic_writable_pipe/close.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/close/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/executor_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/get_executor.html +/doc/html/boost_asio/reference/basic_writable_pipe.html +/doc/html/boost_asio/reference/basic_writable_pipe/is_open.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/ +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/lowest_layer_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/native_handle.html +/doc/html/boost_asio/reference/basic_writable_pipe/native_handle_type.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/ +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/operator_eq_/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor/ +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor.html +/doc/html/boost_asio/reference/basic_writable_pipe__rebind_executor/other.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/ +/doc/html/boost_asio/reference/basic_writable_pipe/release.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/release/overload2.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/ +/doc/html/boost_asio/reference/basic_writable_pipe/write_some.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/overload1.html +/doc/html/boost_asio/reference/basic_writable_pipe/write_some/overload2.html /doc/html/boost_asio/reference/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/ /doc/html/boost_asio/reference/basic_yield_context/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/callee_type.html -/doc/html/boost_asio/reference/basic_yield_context/caller_type.html +/doc/html/boost_asio/reference/basic_yield_context/cancellation_slot_type.html +/doc/html/boost_asio/reference/basic_yield_context/cancelled.html +/doc/html/boost_asio/reference/basic_yield_context/executor_type.html +/doc/html/boost_asio/reference/basic_yield_context/get_cancellation_slot.html +/doc/html/boost_asio/reference/basic_yield_context/get_cancellation_state.html +/doc/html/boost_asio/reference/basic_yield_context/get_executor.html /doc/html/boost_asio/reference/basic_yield_context.html /doc/html/boost_asio/reference/basic_yield_context/operator_lb__rb_.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/ +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload1.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload2.html +/doc/html/boost_asio/reference/basic_yield_context/reset_cancellation_state/overload3.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/ +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/overload1.html +/doc/html/boost_asio/reference/basic_yield_context/throw_if_cancelled/overload2.html +/doc/html/boost_asio/reference/bind_allocator.html +/doc/html/boost_asio/reference/bind_cancellation_slot.html /doc/html/boost_asio/reference/bind_executor/ /doc/html/boost_asio/reference/bind_executor.html /doc/html/boost_asio/reference/bind_executor/overload1.html /doc/html/boost_asio/reference/bind_executor/overload2.html +/doc/html/boost_asio/reference/bind_immediate_executor.html /doc/html/boost_asio/reference/buffer/ /doc/html/boost_asio/reference/buffer_cast/ /doc/html/boost_asio/reference/buffer_cast.html @@ -2318,6 +3203,7 @@ /doc/html/boost_asio/reference/buffer_copy/overload1.html /doc/html/boost_asio/reference/buffer_copy/overload2.html /doc/html/boost_asio/reference/BufferedHandshakeHandler.html +/doc/html/boost_asio/reference/BufferedHandshakeToken.html /doc/html/boost_asio/reference/buffered_read_stream/ /doc/html/boost_asio/reference/buffered_read_stream/async_fill.html /doc/html/boost_asio/reference/buffered_read_stream/async_read_some.html @@ -2452,6 +3338,10 @@ /doc/html/boost_asio/reference/buffered_write_stream/write_some/overload1.html /doc/html/boost_asio/reference/buffered_write_stream/write_some/overload2.html /doc/html/boost_asio/reference/buffer.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/ +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/overload1.html +/doc/html/boost_asio/reference/buffer_literals__operator_quot__quot__buf/overload2.html /doc/html/boost_asio/reference/buffer/overload10.html /doc/html/boost_asio/reference/buffer/overload11.html /doc/html/boost_asio/reference/buffer/overload12.html @@ -2477,13 +3367,42 @@ /doc/html/boost_asio/reference/buffer/overload30.html /doc/html/boost_asio/reference/buffer/overload31.html /doc/html/boost_asio/reference/buffer/overload32.html +/doc/html/boost_asio/reference/buffer/overload33.html +/doc/html/boost_asio/reference/buffer/overload34.html +/doc/html/boost_asio/reference/buffer/overload35.html +/doc/html/boost_asio/reference/buffer/overload36.html +/doc/html/boost_asio/reference/buffer/overload37.html +/doc/html/boost_asio/reference/buffer/overload38.html +/doc/html/boost_asio/reference/buffer/overload39.html /doc/html/boost_asio/reference/buffer/overload3.html +/doc/html/boost_asio/reference/buffer/overload40.html +/doc/html/boost_asio/reference/buffer/overload41.html +/doc/html/boost_asio/reference/buffer/overload42.html /doc/html/boost_asio/reference/buffer/overload4.html /doc/html/boost_asio/reference/buffer/overload5.html /doc/html/boost_asio/reference/buffer/overload6.html /doc/html/boost_asio/reference/buffer/overload7.html /doc/html/boost_asio/reference/buffer/overload8.html /doc/html/boost_asio/reference/buffer/overload9.html +/doc/html/boost_asio/reference/buffer_registration/ +/doc/html/boost_asio/reference/buffer_registration/allocator_type.html +/doc/html/boost_asio/reference/buffer_registration/at.html +/doc/html/boost_asio/reference/buffer_registration/begin.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/ +/doc/html/boost_asio/reference/buffer_registration/_buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload1.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload2.html +/doc/html/boost_asio/reference/buffer_registration/buffer_registration/overload3.html +/doc/html/boost_asio/reference/buffer_registration/cbegin.html +/doc/html/boost_asio/reference/buffer_registration/cend.html +/doc/html/boost_asio/reference/buffer_registration/const_iterator.html +/doc/html/boost_asio/reference/buffer_registration/end.html +/doc/html/boost_asio/reference/buffer_registration.html +/doc/html/boost_asio/reference/buffer_registration/iterator.html +/doc/html/boost_asio/reference/buffer_registration/operator_eq_.html +/doc/html/boost_asio/reference/buffer_registration/operator_lb__rb_.html +/doc/html/boost_asio/reference/buffer_registration/size.html /doc/html/boost_asio/reference/buffers_begin.html /doc/html/boost_asio/reference/buffers_end.html /doc/html/boost_asio/reference/buffer_sequence_begin/ @@ -2492,12 +3411,16 @@ /doc/html/boost_asio/reference/buffer_sequence_begin/overload2.html /doc/html/boost_asio/reference/buffer_sequence_begin/overload3.html /doc/html/boost_asio/reference/buffer_sequence_begin/overload4.html +/doc/html/boost_asio/reference/buffer_sequence_begin/overload5.html +/doc/html/boost_asio/reference/buffer_sequence_begin/overload6.html /doc/html/boost_asio/reference/buffer_sequence_end/ /doc/html/boost_asio/reference/buffer_sequence_end.html /doc/html/boost_asio/reference/buffer_sequence_end/overload1.html /doc/html/boost_asio/reference/buffer_sequence_end/overload2.html /doc/html/boost_asio/reference/buffer_sequence_end/overload3.html /doc/html/boost_asio/reference/buffer_sequence_end/overload4.html +/doc/html/boost_asio/reference/buffer_sequence_end/overload5.html +/doc/html/boost_asio/reference/buffer_sequence_end/overload6.html /doc/html/boost_asio/reference/buffers_iterator/ /doc/html/boost_asio/reference/buffers_iterator/begin.html /doc/html/boost_asio/reference/buffers_iterator/buffers_iterator.html @@ -2536,12 +3459,77 @@ /doc/html/boost_asio/reference/buffers_iterator/reference.html /doc/html/boost_asio/reference/buffers_iterator/value_type.html /doc/html/boost_asio/reference/buffer_size.html +/doc/html/boost_asio/reference/cancellation_filter/ +/doc/html/boost_asio/reference/cancellation_filter.html +/doc/html/boost_asio/reference/cancellation_filter/operator_lp__rp_.html +/doc/html/boost_asio/reference/CancellationHandler.html +/doc/html/boost_asio/reference/cancellation_signal/ +/doc/html/boost_asio/reference/cancellation_signal/_cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/emit.html +/doc/html/boost_asio/reference/cancellation_signal.html +/doc/html/boost_asio/reference/cancellation_signal/slot.html +/doc/html/boost_asio/reference/cancellation_slot/ +/doc/html/boost_asio/reference/cancellation_slot/assign.html +/doc/html/boost_asio/reference/cancellation_slot_binder/ +/doc/html/boost_asio/reference/cancellation_slot_binder/argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/ +/doc/html/boost_asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html +/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/first_argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/ +/doc/html/boost_asio/reference/cancellation_slot_binder/get_cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/cancellation_slot_binder/result_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/second_argument_type.html +/doc/html/boost_asio/reference/cancellation_slot_binder/target_type.html +/doc/html/boost_asio/reference/cancellation_slot/cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot/clear.html +/doc/html/boost_asio/reference/cancellation_slot/emplace.html +/doc/html/boost_asio/reference/cancellation_slot/has_handler.html +/doc/html/boost_asio/reference/CancellationSlot.html +/doc/html/boost_asio/reference/cancellation_slot.html +/doc/html/boost_asio/reference/cancellation_slot/is_connected.html +/doc/html/boost_asio/reference/cancellation_slot/operator_eq__eq_.html +/doc/html/boost_asio/reference/cancellation_slot/operator_not__eq_.html +/doc/html/boost_asio/reference/cancellation_state/ +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/ +/doc/html/boost_asio/reference/cancellation_state/cancellation_state.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload1.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload2.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload3.html +/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload4.html +/doc/html/boost_asio/reference/cancellation_state/cancelled.html +/doc/html/boost_asio/reference/cancellation_state/clear.html +/doc/html/boost_asio/reference/cancellation_state.html +/doc/html/boost_asio/reference/cancellation_state/slot.html +/doc/html/boost_asio/reference/cancellation_type.html +/doc/html/boost_asio/reference/cancellation_type_t.html /doc/html/boost_asio/reference/can_prefer.html /doc/html/boost_asio/reference/can_query.html /doc/html/boost_asio/reference/can_require_concept.html /doc/html/boost_asio/reference/can_require.html /doc/html/boost_asio/reference/CompletionCondition.html -/doc/html/boost_asio/reference/CompletionHandler.html +/doc/html/boost_asio/reference/completion_signature_of/ +/doc/html/boost_asio/reference/completion_signature_of.html +/doc/html/boost_asio/reference/completion_signature_of/type.html /doc/html/boost_asio/reference/connect/ /doc/html/boost_asio/reference/ConnectCondition.html /doc/html/boost_asio/reference/ConnectHandler.html @@ -2558,6 +3546,15 @@ /doc/html/boost_asio/reference/connect/overload7.html /doc/html/boost_asio/reference/connect/overload8.html /doc/html/boost_asio/reference/connect/overload9.html +/doc/html/boost_asio/reference/connect_pipe/ +/doc/html/boost_asio/reference/connect_pipe.html +/doc/html/boost_asio/reference/connect_pipe/overload1.html +/doc/html/boost_asio/reference/connect_pipe/overload2.html +/doc/html/boost_asio/reference/ConnectToken.html +/doc/html/boost_asio/reference/consign.html +/doc/html/boost_asio/reference/consign_t/ +/doc/html/boost_asio/reference/consign_t/consign_t.html +/doc/html/boost_asio/reference/consign_t.html /doc/html/boost_asio/reference/const_buffer/ /doc/html/boost_asio/reference/const_buffer/const_buffer/ /doc/html/boost_asio/reference/const_buffer/const_buffer.html @@ -2590,6 +3587,21 @@ /doc/html/boost_asio/reference/const_buffers_1/value_type.html /doc/html/boost_asio/reference/ConstBufferSequence.html /doc/html/boost_asio/reference/const_buffer/size.html +/doc/html/boost_asio/reference/const_registered_buffer/ +/doc/html/boost_asio/reference/const_registered_buffer/buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/ +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/overload1.html +/doc/html/boost_asio/reference/const_registered_buffer/const_registered_buffer/overload2.html +/doc/html/boost_asio/reference/const_registered_buffer/data.html +/doc/html/boost_asio/reference/const_registered_buffer.html +/doc/html/boost_asio/reference/const_registered_buffer/id.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/ +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus__eq_.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/overload1.html +/doc/html/boost_asio/reference/const_registered_buffer/operator_plus_/overload2.html +/doc/html/boost_asio/reference/const_registered_buffer/size.html /doc/html/boost_asio/reference/coroutine/ /doc/html/boost_asio/reference/coroutine/coroutine.html /doc/html/boost_asio/reference/coroutine.html @@ -2613,6 +3625,62 @@ /doc/html/boost_asio/reference/defer/overload1.html /doc/html/boost_asio/reference/defer/overload2.html /doc/html/boost_asio/reference/defer/overload3.html +/doc/html/boost_asio/reference/deferred_async_operation/ +/doc/html/boost_asio/reference/deferred_async_operation/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/ +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/deferred_async_operation.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_.html +/doc/html/boost_asio/reference/deferred_async_operation_lt__deferred_signatures_lt__Signatures_ellipsis__gt__comma__Initiation_comma__InitArgs_ellipsis__gt_/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_async_operation/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_conditional/ +/doc/html/boost_asio/reference/deferred_conditional/deferred_conditional.html +/doc/html/boost_asio/reference/deferred_conditional.html +/doc/html/boost_asio/reference/deferred_conditional/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_conditional/otherwise.html +/doc/html/boost_asio/reference/deferred_conditional/then.html +/doc/html/boost_asio/reference/deferred_function/ +/doc/html/boost_asio/reference/deferred_function/deferred_function.html +/doc/html/boost_asio/reference/deferred_function/function_.html +/doc/html/boost_asio/reference/deferred_function.html +/doc/html/boost_asio/reference/deferred_function/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred.html +/doc/html/boost_asio/reference/deferred_init_tag.html +/doc/html/boost_asio/reference/deferred_noop/ +/doc/html/boost_asio/reference/deferred_noop.html +/doc/html/boost_asio/reference/deferred_noop/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_sequence/ +/doc/html/boost_asio/reference/deferred_sequence/deferred_sequence.html +/doc/html/boost_asio/reference/deferred_sequence.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/ +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/deferred_sequence/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/deferred_signatures.html +/doc/html/boost_asio/reference/deferred_t/ +/doc/html/boost_asio/reference/deferred_t/as_default_on.html +/doc/html/boost_asio/reference/deferred_t/deferred_t.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default/ +/doc/html/boost_asio/reference/deferred_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/deferred_t__executor_with_default.html +/doc/html/boost_asio/reference/deferred_t.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/ +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/deferred_t/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/deferred_t/values.html +/doc/html/boost_asio/reference/deferred_t/when.html +/doc/html/boost_asio/reference/deferred_values/ +/doc/html/boost_asio/reference/deferred_values/deferred_values.html +/doc/html/boost_asio/reference/deferred_values/detail__index_sequence_for.html +/doc/html/boost_asio/reference/deferred_values.html +/doc/html/boost_asio/reference/deferred_values__initiate/ +/doc/html/boost_asio/reference/deferred_values__initiate.html +/doc/html/boost_asio/reference/deferred_values__initiate/operator_lp__rp_.html +/doc/html/boost_asio/reference/deferred_values/operator_lp__rp_.html /doc/html/boost_asio/reference/detached.html /doc/html/boost_asio/reference/detached_t/ /doc/html/boost_asio/reference/detached_t/as_default_on.html @@ -2625,6 +3693,7 @@ /doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html /doc/html/boost_asio/reference/detached_t__executor_with_default.html /doc/html/boost_asio/reference/detached_t.html +/doc/html/boost_asio/reference/disable_cancellation.html /doc/html/boost_asio/reference/dispatch/ /doc/html/boost_asio/reference/dispatch.html /doc/html/boost_asio/reference/dispatch/overload1.html @@ -2683,11 +3752,15 @@ /doc/html/boost_asio/reference/dynamic_vector_buffer/prepare.html /doc/html/boost_asio/reference/dynamic_vector_buffer/shrink.html /doc/html/boost_asio/reference/dynamic_vector_buffer/size.html +/doc/html/boost_asio/reference/enable_partial_cancellation.html +/doc/html/boost_asio/reference/enable_terminal_cancellation.html +/doc/html/boost_asio/reference/enable_total_cancellation.html /doc/html/boost_asio/reference/Endpoint.html /doc/html/boost_asio/reference/EndpointSequence.html /doc/html/boost_asio/reference/error__addrinfo_category.html /doc/html/boost_asio/reference/error__addrinfo_errors.html /doc/html/boost_asio/reference/error__basic_errors.html +/doc/html/boost_asio/reference/error__clear.html /doc/html/boost_asio/reference/error__get_addrinfo_category.html /doc/html/boost_asio/reference/error__get_misc_category.html /doc/html/boost_asio/reference/error__get_netdb_category.html @@ -2719,12 +3792,16 @@ /doc/html/boost_asio/reference/execution__any_executor/any_executor/ /doc/html/boost_asio/reference/execution__any_executor/_any_executor.html /doc/html/boost_asio/reference/execution__any_executor/any_executor.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload10.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload1.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload2.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload3.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload4.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload5.html /doc/html/boost_asio/reference/execution__any_executor/any_executor/overload6.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload7.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload8.html +/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload9.html /doc/html/boost_asio/reference/execution__any_executor/context.html /doc/html/boost_asio/reference/execution__any_executor/execute.html /doc/html/boost_asio/reference/execution__any_executor.html @@ -3158,6 +4235,254 @@ /doc/html/boost_asio/reference/executor_work_guard.html /doc/html/boost_asio/reference/executor_work_guard/owns_work.html /doc/html/boost_asio/reference/executor_work_guard/reset.html +/doc/html/boost_asio/reference/experimental__as_single.html +/doc/html/boost_asio/reference/experimental__as_single_t/ +/doc/html/boost_asio/reference/experimental__as_single_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/ +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload1.html +/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload2.html +/doc/html/boost_asio/reference/experimental__as_single_t__default_constructor_tag.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html +/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__as_single_t.html +/doc/html/boost_asio/reference/experimental__as_single_t/token_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/ +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html +/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html +/doc/html/boost_asio/reference/experimental__basic_channel/ +/doc/html/boost_asio/reference/experimental__basic_channel/async_receive.html +/doc/html/boost_asio/reference/experimental__basic_channel/async_send.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/ +/doc/html/boost_asio/reference/experimental__basic_channel/_basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload1.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload2.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload3.html +/doc/html/boost_asio/reference/experimental__basic_channel/basic_channel/overload4.html +/doc/html/boost_asio/reference/experimental__basic_channel/cancel.html +/doc/html/boost_asio/reference/experimental__basic_channel/capacity.html +/doc/html/boost_asio/reference/experimental__basic_channel/close.html +/doc/html/boost_asio/reference/experimental__basic_channel/executor_type.html +/doc/html/boost_asio/reference/experimental__basic_channel/get_executor.html +/doc/html/boost_asio/reference/experimental__basic_channel.html +/doc/html/boost_asio/reference/experimental__basic_channel/is_open.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/ +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__basic_channel/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__basic_channel/ready.html +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor/ +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor.html +/doc/html/boost_asio/reference/experimental__basic_channel__rebind_executor/other.html +/doc/html/boost_asio/reference/experimental__basic_channel/reset.html +/doc/html/boost_asio/reference/experimental__basic_channel/traits_type.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_receive.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_send.html +/doc/html/boost_asio/reference/experimental__basic_channel/try_send_n.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/async_receive.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/async_send.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/_basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload1.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload2.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload3.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/basic_concurrent_channel/overload4.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/cancel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/capacity.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/close.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/executor_type.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/get_executor.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/is_open.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/ready.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor/ +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel__rebind_executor/other.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/reset.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/traits_type.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_receive.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_send.html +/doc/html/boost_asio/reference/experimental__basic_concurrent_channel/try_send_n.html +/doc/html/boost_asio/reference/experimental__channel_traits/ +/doc/html/boost_asio/reference/experimental__channel_traits__container/ +/doc/html/boost_asio/reference/experimental__channel_traits__container.html +/doc/html/boost_asio/reference/experimental__channel_traits__container/type.html +/doc/html/boost_asio/reference/experimental__channel_traits.html +/doc/html/boost_asio/reference/experimental__channel_traits/invoke_receive_cancelled.html +/doc/html/boost_asio/reference/experimental__channel_traits/invoke_receive_closed.html +/doc/html/boost_asio/reference/experimental__channel_traits__rebind/ +/doc/html/boost_asio/reference/experimental__channel_traits__rebind.html +/doc/html/boost_asio/reference/experimental__channel_traits__rebind/other.html +/doc/html/boost_asio/reference/experimental__channel_traits/receive_cancelled_signature.html +/doc/html/boost_asio/reference/experimental__channel_traits/receive_closed_signature.html +/doc/html/boost_asio/reference/experimental__co_composed.html +/doc/html/boost_asio/reference/experimental__coro/ +/doc/html/boost_asio/reference/experimental__coro/async_resume/ +/doc/html/boost_asio/reference/experimental__coro/async_resume.html +/doc/html/boost_asio/reference/experimental__coro/async_resume/overload1.html +/doc/html/boost_asio/reference/experimental__coro/async_resume/overload2.html +/doc/html/boost_asio/reference/experimental__coro/coro/ +/doc/html/boost_asio/reference/experimental__coro/_coro.html +/doc/html/boost_asio/reference/experimental__coro/coro.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload1.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload2.html +/doc/html/boost_asio/reference/experimental__coro/coro/overload3.html +/doc/html/boost_asio/reference/experimental__coro/get_allocator.html +/doc/html/boost_asio/reference/experimental__coro/get_executor.html +/doc/html/boost_asio/reference/experimental__coro.html +/doc/html/boost_asio/reference/experimental__coro/is_noexcept.html +/doc/html/boost_asio/reference/experimental__coro/is_open.html +/doc/html/boost_asio/reference/experimental__coro/operator_bool.html +/doc/html/boost_asio/reference/experimental__coro/operator_co_await.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/ +/doc/html/boost_asio/reference/experimental__coro/operator_eq_.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload1.html +/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload2.html +/doc/html/boost_asio/reference/experimental__coro/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__coro_traits/ +/doc/html/boost_asio/reference/experimental__coro_traits.html +/doc/html/boost_asio/reference/experimental__coro_traits/is_noexcept.html +/doc/html/boost_asio/reference/experimental__co_spawn/ +/doc/html/boost_asio/reference/experimental__co_spawn.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload1.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload2.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload3.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload4.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload5.html +/doc/html/boost_asio/reference/experimental__co_spawn/overload6.html +/doc/html/boost_asio/reference/experimental__error__channel_category.html +/doc/html/boost_asio/reference/experimental__error__channel_errors.html +/doc/html/boost_asio/reference/experimental__error__get_channel_category.html +/doc/html/boost_asio/reference/experimental__error__make_error_code.html +/doc/html/boost_asio/reference/experimental__is_async_operation_range/ +/doc/html/boost_asio/reference/experimental__is_async_operation_range.html +/doc/html/boost_asio/reference/experimental__is_async_operation_range/value.html +/doc/html/boost_asio/reference/experimental__is_promise.html +/doc/html/boost_asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html +/doc/html/boost_asio/reference/experimental__is_promise_v.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/ +/doc/html/boost_asio/reference/experimental__make_parallel_group.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload1.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload2.html +/doc/html/boost_asio/reference/experimental__make_parallel_group/overload3.html +/doc/html/boost_asio/reference/experimental__parallel_group/ +/doc/html/boost_asio/reference/experimental__parallel_group/async_wait.html +/doc/html/boost_asio/reference/experimental__parallel_group.html +/doc/html/boost_asio/reference/experimental__parallel_group/parallel_group.html +/doc/html/boost_asio/reference/experimental__parallel_group/signature.html +/doc/html/boost_asio/reference/experimental__promise/ +/doc/html/boost_asio/reference/experimental__promise/cancel.html +/doc/html/boost_asio/reference/experimental__promise/completed.html +/doc/html/boost_asio/reference/experimental__promise.html +/doc/html/boost_asio/reference/experimental__promise/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__promise/promise/ +/doc/html/boost_asio/reference/experimental__promise/_promise.html +/doc/html/boost_asio/reference/experimental__promise/promise.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload1.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload2.html +/doc/html/boost_asio/reference/experimental__promise/promise/overload3.html +/doc/html/boost_asio/reference/experimental__promise_value_type.html +/doc/html/boost_asio/reference/experimental__promise_value_type_lt__gt_.html +/doc/html/boost_asio/reference/experimental__promise_value_type_lt__T__gt_.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/ +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/async_wait.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/ranged_parallel_group.html +/doc/html/boost_asio/reference/experimental__ranged_parallel_group/signature.html +/doc/html/boost_asio/reference/experimental__use_coro.html +/doc/html/boost_asio/reference/experimental__use_coro_t/ +/doc/html/boost_asio/reference/experimental__use_coro_t/allocator_type.html +/doc/html/boost_asio/reference/experimental__use_coro_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_coro_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_coro_t/get_allocator.html +/doc/html/boost_asio/reference/experimental__use_coro_t.html +/doc/html/boost_asio/reference/experimental__use_coro_t/rebind.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/ +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/overload1.html +/doc/html/boost_asio/reference/experimental__use_coro_t/use_coro_t/overload2.html +/doc/html/boost_asio/reference/experimental__use_promise.html +/doc/html/boost_asio/reference/experimental__use_promise_t/ +/doc/html/boost_asio/reference/experimental__use_promise_t/allocator_type.html +/doc/html/boost_asio/reference/experimental__use_promise_t/as_default_on.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/default_completion_token_type.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/ +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload1.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default/executor_with_default/overload2.html +/doc/html/boost_asio/reference/experimental__use_promise_t__executor_with_default.html +/doc/html/boost_asio/reference/experimental__use_promise_t/get_allocator.html +/doc/html/boost_asio/reference/experimental__use_promise_t.html +/doc/html/boost_asio/reference/experimental__use_promise_t/rebind.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/ +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/overload1.html +/doc/html/boost_asio/reference/experimental__use_promise_t/use_promise_t/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_all/ +/doc/html/boost_asio/reference/experimental__wait_for_all.html +/doc/html/boost_asio/reference/experimental__wait_for_all/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html +/doc/html/boost_asio/reference/experimental__wait_for_one_error/wait_for_one_error.html +/doc/html/boost_asio/reference/experimental__wait_for_one.html +/doc/html/boost_asio/reference/experimental__wait_for_one/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/ +/doc/html/boost_asio/reference/experimental__wait_for_one_success.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html +/doc/html/boost_asio/reference/experimental__wait_for_one_success/wait_for_one_success.html +/doc/html/boost_asio/reference/experimental__wait_for_one/wait_for_one.html +/doc/html/boost_asio/reference/file_base/ +/doc/html/boost_asio/reference/file_base/append.html +/doc/html/boost_asio/reference/file_base/create.html +/doc/html/boost_asio/reference/file_base/exclusive.html +/doc/html/boost_asio/reference/file_base/_file_base.html +/doc/html/boost_asio/reference/file_base/flags.html +/doc/html/boost_asio/reference/file_base.html +/doc/html/boost_asio/reference/file_base/read_only.html +/doc/html/boost_asio/reference/file_base/read_write.html +/doc/html/boost_asio/reference/file_base/seek_basis.html +/doc/html/boost_asio/reference/file_base/sync_all_on_write.html +/doc/html/boost_asio/reference/file_base/truncate.html +/doc/html/boost_asio/reference/file_base/write_only.html /doc/html/boost_asio/reference/generic__basic_endpoint/ /doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/ /doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint.html @@ -3240,17 +4565,55 @@ /doc/html/boost_asio/reference/get_associated_allocator.html /doc/html/boost_asio/reference/get_associated_allocator/overload1.html /doc/html/boost_asio/reference/get_associated_allocator/overload2.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/ +/doc/html/boost_asio/reference/get_associated_cancellation_slot.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload1.html +/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload2.html /doc/html/boost_asio/reference/get_associated_executor/ /doc/html/boost_asio/reference/get_associated_executor.html /doc/html/boost_asio/reference/get_associated_executor/overload1.html /doc/html/boost_asio/reference/get_associated_executor/overload2.html /doc/html/boost_asio/reference/get_associated_executor/overload3.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/ +/doc/html/boost_asio/reference/get_associated_immediate_executor.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/overload1.html +/doc/html/boost_asio/reference/get_associated_immediate_executor/overload2.html /doc/html/boost_asio/reference/GettableSerialPortOption.html /doc/html/boost_asio/reference/GettableSocketOption.html /doc/html/boost_asio/reference/Handler.html /doc/html/boost_asio/reference/HandshakeHandler.html +/doc/html/boost_asio/reference/HandshakeToken.html /doc/html/boost_asio/reference/high_resolution_timer.html /doc/html/boost_asio/reference.html +/doc/html/boost_asio/reference/immediate_executor_binder/ +/doc/html/boost_asio/reference/immediate_executor_binder/argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/first_argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/ +/doc/html/boost_asio/reference/immediate_executor_binder/get.html +/doc/html/boost_asio/reference/immediate_executor_binder/get_immediate_executor.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/get/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/ +/doc/html/boost_asio/reference/immediate_executor_binder/_immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload3.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload4.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload5.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload6.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload7.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload8.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_binder/overload9.html +/doc/html/boost_asio/reference/immediate_executor_binder/immediate_executor_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/ +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/overload1.html +/doc/html/boost_asio/reference/immediate_executor_binder/operator_lp__rp_/overload2.html +/doc/html/boost_asio/reference/immediate_executor_binder/result_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/second_argument_type.html +/doc/html/boost_asio/reference/immediate_executor_binder/target_type.html /doc/html/boost_asio/reference/InternetProtocol.html /doc/html/boost_asio/reference/invalid_service_owner/ /doc/html/boost_asio/reference/invalid_service_owner.html @@ -3689,6 +5052,7 @@ /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload1.html /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload2.html /doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload3.html +/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload4.html /doc/html/boost_asio/reference/ip__basic_resolver/cancel.html /doc/html/boost_asio/reference/ip__basic_resolver/canonical_name.html /doc/html/boost_asio/reference/ip__basic_resolver/endpoint_type.html @@ -3746,7 +5110,10 @@ /doc/html/boost_asio/reference/ip__basic_resolver_iterator/value_type.html /doc/html/boost_asio/reference/ip__basic_resolver/numeric_host.html /doc/html/boost_asio/reference/ip__basic_resolver/numeric_service.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/ /doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload1.html +/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload2.html /doc/html/boost_asio/reference/ip__basic_resolver/passive.html /doc/html/boost_asio/reference/ip__basic_resolver/protocol_type.html /doc/html/boost_asio/reference/ip__basic_resolver_query/ @@ -3920,6 +5287,7 @@ /doc/html/boost_asio/reference/ip__network_v6/to_string.html /doc/html/boost_asio/reference/ip__network_v6/to_string/overload1.html /doc/html/boost_asio/reference/ip__network_v6/to_string/overload2.html +/doc/html/boost_asio/reference/ip__port_type.html /doc/html/boost_asio/reference/ip__resolver_base/ /doc/html/boost_asio/reference/ip__resolver_base/address_configured.html /doc/html/boost_asio/reference/ip__resolver_base/all_matching.html @@ -3942,6 +5310,7 @@ /doc/html/boost_asio/reference/ip__resolver_query_base/passive.html /doc/html/boost_asio/reference/ip__resolver_query_base/_resolver_query_base.html /doc/html/boost_asio/reference/ip__resolver_query_base/v4_mapped.html +/doc/html/boost_asio/reference/ip__scope_id_type.html /doc/html/boost_asio/reference/ip__tcp/ /doc/html/boost_asio/reference/ip__tcp/acceptor.html /doc/html/boost_asio/reference/ip__tcp/endpoint.html @@ -3973,7 +5342,10 @@ /doc/html/boost_asio/reference/ip__v4_mapped_t.html /doc/html/boost_asio/reference/ip__v6_only.html /doc/html/boost_asio/reference/is_applicable_property.html +/doc/html/boost_asio/reference/is_async_operation.html /doc/html/boost_asio/reference/is_const_buffer_sequence.html +/doc/html/boost_asio/reference/is_contiguous_iterator.html +/doc/html/boost_asio/reference/is_deferred.html /doc/html/boost_asio/reference/is_dynamic_buffer.html /doc/html/boost_asio/reference/is_dynamic_buffer_v1.html /doc/html/boost_asio/reference/is_dynamic_buffer_v2.html @@ -3986,6 +5358,9 @@ /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/ /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_.html /doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/value.html +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_/ +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_.html +/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__experimental__error__channel_errors__gt_/value.html /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/ /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_.html /doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html @@ -4014,6 +5389,7 @@ /doc/html/boost_asio/reference/is_write_buffered.html /doc/html/boost_asio/reference/is_write_buffered/value.html /doc/html/boost_asio/reference/IteratorConnectHandler.html +/doc/html/boost_asio/reference/IteratorConnectToken.html /doc/html/boost_asio/reference/LegacyCompletionHandler.html /doc/html/boost_asio/reference/local__basic_endpoint/ /doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/ @@ -4057,6 +5433,14 @@ /doc/html/boost_asio/reference/local__datagram_protocol/protocol.html /doc/html/boost_asio/reference/local__datagram_protocol/socket.html /doc/html/boost_asio/reference/local__datagram_protocol/type.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/ +/doc/html/boost_asio/reference/local__seq_packet_protocol/acceptor.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/endpoint.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/family.html +/doc/html/boost_asio/reference/local__seq_packet_protocol.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/protocol.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/socket.html +/doc/html/boost_asio/reference/local__seq_packet_protocol/type.html /doc/html/boost_asio/reference/local__stream_protocol/ /doc/html/boost_asio/reference/local__stream_protocol/acceptor.html /doc/html/boost_asio/reference/local__stream_protocol/endpoint.html @@ -4078,6 +5462,7 @@ /doc/html/boost_asio/reference/make_work_guard/overload4.html /doc/html/boost_asio/reference/make_work_guard/overload5.html /doc/html/boost_asio/reference/MoveAcceptHandler.html +/doc/html/boost_asio/reference/MoveAcceptToken.html /doc/html/boost_asio/reference/multiple_exceptions/ /doc/html/boost_asio/reference/multiple_exceptions/first_exception.html /doc/html/boost_asio/reference/multiple_exceptions.html @@ -4114,6 +5499,19 @@ /doc/html/boost_asio/reference/mutable_buffers_1/value_type.html /doc/html/boost_asio/reference/MutableBufferSequence.html /doc/html/boost_asio/reference/mutable_buffer/size.html +/doc/html/boost_asio/reference/mutable_registered_buffer/ +/doc/html/boost_asio/reference/mutable_registered_buffer/buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/data.html +/doc/html/boost_asio/reference/mutable_registered_buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/id.html +/doc/html/boost_asio/reference/mutable_registered_buffer/mutable_registered_buffer.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/ +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus__eq_.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/overload1.html +/doc/html/boost_asio/reference/mutable_registered_buffer/operator_plus_/overload2.html +/doc/html/boost_asio/reference/mutable_registered_buffer/size.html +/doc/html/boost_asio/reference/NullaryToken.html /doc/html/boost_asio/reference/null_buffers/ /doc/html/boost_asio/reference/null_buffers/begin.html /doc/html/boost_asio/reference/null_buffers/const_iterator.html @@ -4121,6 +5519,7 @@ /doc/html/boost_asio/reference/null_buffers.html /doc/html/boost_asio/reference/null_buffers/value_type.html /doc/html/boost_asio/reference/OperationState.html +/doc/html/boost_asio/reference/operator_pipe_.html /doc/html/boost_asio/reference/placeholders__bytes_transferred.html /doc/html/boost_asio/reference/placeholders__endpoint.html /doc/html/boost_asio/reference/placeholders__error.html @@ -4141,6 +5540,7 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html /doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html +/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload6.html /doc/html/boost_asio/reference/posix__basic_descriptor/bytes_readable.html /doc/html/boost_asio/reference/posix__basic_descriptor/cancel/ /doc/html/boost_asio/reference/posix__basic_descriptor/cancel.html @@ -4153,7 +5553,6 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/executor_type.html /doc/html/boost_asio/reference/posix__basic_descriptor/get_executor.html /doc/html/boost_asio/reference/posix__basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/impl_.html /doc/html/boost_asio/reference/posix__basic_descriptor/io_control/ /doc/html/boost_asio/reference/posix__basic_descriptor/io_control.html /doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload1.html @@ -4176,7 +5575,10 @@ /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload1.html /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload2.html /doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload3.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/ /doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_/overload2.html /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/ /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor.html /doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/other.html @@ -4201,6 +5603,7 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload6.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/bytes_readable.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel.html @@ -4213,7 +5616,6 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/executor_type.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/get_executor.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/impl_.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload1.html @@ -4236,7 +5638,10 @@ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/overload1.html +/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_/overload2.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/ /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some.html /doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload1.html @@ -4270,14 +5675,23 @@ /doc/html/boost_asio/reference/prefer_result/ /doc/html/boost_asio/reference/prefer_result.html /doc/html/boost_asio/reference/prefer_result/type.html +/doc/html/boost_asio/reference/prepend.html +/doc/html/boost_asio/reference/prepend_t/ +/doc/html/boost_asio/reference/prepend_t.html +/doc/html/boost_asio/reference/prepend_t/prepend_t.html +/doc/html/boost_asio/reference/prepend_t/token_.html +/doc/html/boost_asio/reference/prepend_t/values_.html /doc/html/boost_asio/reference/ProtoAllocator.html /doc/html/boost_asio/reference/Protocol.html /doc/html/boost_asio/reference/query.html /doc/html/boost_asio/reference/query_result/ /doc/html/boost_asio/reference/query_result.html /doc/html/boost_asio/reference/query_result/type.html +/doc/html/boost_asio/reference/random_access_file.html /doc/html/boost_asio/reference/RangeConnectHandler.html +/doc/html/boost_asio/reference/RangeConnectToken.html /doc/html/boost_asio/reference/read/ +/doc/html/boost_asio/reference/readable_pipe.html /doc/html/boost_asio/reference/read_at/ /doc/html/boost_asio/reference/read_at.html /doc/html/boost_asio/reference/read_at/overload1.html @@ -4306,6 +5720,7 @@ /doc/html/boost_asio/reference/read/overload7.html /doc/html/boost_asio/reference/read/overload8.html /doc/html/boost_asio/reference/read/overload9.html +/doc/html/boost_asio/reference/ReadToken.html /doc/html/boost_asio/reference/read_until/ /doc/html/boost_asio/reference/read_until.html /doc/html/boost_asio/reference/read_until/overload10.html @@ -4334,12 +5749,51 @@ /doc/html/boost_asio/reference/read_until/overload9.html /doc/html/boost_asio/reference/read_write_operations.html /doc/html/boost_asio/reference/Receiver.html +/doc/html/boost_asio/reference/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator/allocate.html +/doc/html/boost_asio/reference/recycling_allocator/deallocate.html +/doc/html/boost_asio/reference/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/operator_eq__eq_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/operator_not__eq_.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt___rebind/other.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload1.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/recycling_allocator/overload2.html +/doc/html/boost_asio/reference/recycling_allocator_lt__void__gt_/value_type.html +/doc/html/boost_asio/reference/recycling_allocator/operator_eq__eq_.html +/doc/html/boost_asio/reference/recycling_allocator/operator_not__eq_.html +/doc/html/boost_asio/reference/recycling_allocator__rebind/ +/doc/html/boost_asio/reference/recycling_allocator__rebind.html +/doc/html/boost_asio/reference/recycling_allocator__rebind/other.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/ +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/overload1.html +/doc/html/boost_asio/reference/recycling_allocator/recycling_allocator/overload2.html +/doc/html/boost_asio/reference/recycling_allocator/value_type.html /doc/html/boost_asio/reference/redirect_error.html /doc/html/boost_asio/reference/redirect_error_t/ /doc/html/boost_asio/reference/redirect_error_t/ec_.html /doc/html/boost_asio/reference/redirect_error_t.html /doc/html/boost_asio/reference/redirect_error_t/redirect_error_t.html /doc/html/boost_asio/reference/redirect_error_t/token_.html +/doc/html/boost_asio/reference/register_buffers/ +/doc/html/boost_asio/reference/register_buffers.html +/doc/html/boost_asio/reference/register_buffers/overload1.html +/doc/html/boost_asio/reference/register_buffers/overload2.html +/doc/html/boost_asio/reference/register_buffers/overload3.html +/doc/html/boost_asio/reference/register_buffers/overload4.html +/doc/html/boost_asio/reference/registered_buffer_id/ +/doc/html/boost_asio/reference/registered_buffer_id.html +/doc/html/boost_asio/reference/registered_buffer_id/native_handle.html +/doc/html/boost_asio/reference/registered_buffer_id/native_handle_type.html +/doc/html/boost_asio/reference/registered_buffer_id/operator_eq__eq_.html +/doc/html/boost_asio/reference/registered_buffer_id/operator_not__eq_.html +/doc/html/boost_asio/reference/registered_buffer_id/registered_buffer_id.html /doc/html/boost_asio/reference/require_concept.html /doc/html/boost_asio/reference/require_concept_result/ /doc/html/boost_asio/reference/require_concept_result.html @@ -4350,6 +5804,7 @@ /doc/html/boost_asio/reference/require_result/type.html /doc/html/boost_asio/reference/ResolveHandler.html /doc/html/boost_asio/reference/resolver_errc__try_again.html +/doc/html/boost_asio/reference/ResolveToken.html /doc/html/boost_asio/reference/Scheduler.html /doc/html/boost_asio/reference/Sender.html /doc/html/boost_asio/reference/serial_port_base/ @@ -4396,8 +5851,15 @@ /doc/html/boost_asio/reference/SettableSerialPortOption.html /doc/html/boost_asio/reference/SettableSocketOption.html /doc/html/boost_asio/reference/ShutdownHandler.html +/doc/html/boost_asio/reference/ShutdownToken.html /doc/html/boost_asio/reference/SignalHandler.html +/doc/html/boost_asio/reference/signal_set_base/ +/doc/html/boost_asio/reference/signal_set_base/flags.html +/doc/html/boost_asio/reference/signal_set_base/flags_t.html +/doc/html/boost_asio/reference/signal_set_base.html +/doc/html/boost_asio/reference/signal_set_base/_signal_set_base.html /doc/html/boost_asio/reference/signal_set.html +/doc/html/boost_asio/reference/SignalToken.html /doc/html/boost_asio/reference/socket_base/ /doc/html/boost_asio/reference/socket_base/broadcast.html /doc/html/boost_asio/reference/socket_base/bytes_readable.html @@ -4425,6 +5887,10 @@ /doc/html/boost_asio/reference/socket_base/wait_type.html /doc/html/boost_asio/reference/spawn/ /doc/html/boost_asio/reference/spawn.html +/doc/html/boost_asio/reference/spawn/overload10.html +/doc/html/boost_asio/reference/spawn/overload11.html +/doc/html/boost_asio/reference/spawn/overload12.html +/doc/html/boost_asio/reference/spawn/overload13.html /doc/html/boost_asio/reference/spawn/overload1.html /doc/html/boost_asio/reference/spawn/overload2.html /doc/html/boost_asio/reference/spawn/overload3.html @@ -4432,6 +5898,8 @@ /doc/html/boost_asio/reference/spawn/overload5.html /doc/html/boost_asio/reference/spawn/overload6.html /doc/html/boost_asio/reference/spawn/overload7.html +/doc/html/boost_asio/reference/spawn/overload8.html +/doc/html/boost_asio/reference/spawn/overload9.html /doc/html/boost_asio/reference/ssl__context/ /doc/html/boost_asio/reference/ssl__context/add_certificate_authority/ /doc/html/boost_asio/reference/ssl__context/add_certificate_authority.html @@ -4603,6 +6071,7 @@ /doc/html/boost_asio/reference/ssl__stream/next_layer/overload1.html /doc/html/boost_asio/reference/ssl__stream/next_layer/overload2.html /doc/html/boost_asio/reference/ssl__stream/next_layer_type.html +/doc/html/boost_asio/reference/ssl__stream/operator_eq_.html /doc/html/boost_asio/reference/ssl__stream/read_some/ /doc/html/boost_asio/reference/ssl__stream/read_some.html /doc/html/boost_asio/reference/ssl__stream/read_some/overload1.html @@ -4628,6 +6097,7 @@ /doc/html/boost_asio/reference/ssl__stream/stream.html /doc/html/boost_asio/reference/ssl__stream/stream/overload1.html /doc/html/boost_asio/reference/ssl__stream/stream/overload2.html +/doc/html/boost_asio/reference/ssl__stream/stream/overload3.html /doc/html/boost_asio/reference/ssl__stream/write_some/ /doc/html/boost_asio/reference/ssl__stream/write_some.html /doc/html/boost_asio/reference/ssl__stream/write_some/overload1.html @@ -4645,12 +6115,15 @@ /doc/html/boost_asio/reference/static_thread_pool.html /doc/html/boost_asio/reference/steady_timer.html /doc/html/boost_asio/reference/strand/ +/doc/html/boost_asio/reference/strand/context.html /doc/html/boost_asio/reference/strand/defer.html /doc/html/boost_asio/reference/strand/dispatch.html /doc/html/boost_asio/reference/strand/execute.html /doc/html/boost_asio/reference/strand/get_inner_executor.html /doc/html/boost_asio/reference/strand.html /doc/html/boost_asio/reference/strand/inner_executor_type.html +/doc/html/boost_asio/reference/strand/on_work_finished.html +/doc/html/boost_asio/reference/strand/on_work_started.html /doc/html/boost_asio/reference/strand/operator_eq_/ /doc/html/boost_asio/reference/strand/operator_eq__eq_.html /doc/html/boost_asio/reference/strand/operator_eq_.html @@ -4674,6 +6147,7 @@ /doc/html/boost_asio/reference/strand/strand/overload5.html /doc/html/boost_asio/reference/strand/strand/overload6.html /doc/html/boost_asio/reference/streambuf.html +/doc/html/boost_asio/reference/stream_file.html /doc/html/boost_asio/reference/synchronous_socket_operations.html /doc/html/boost_asio/reference/SyncRandomAccessReadDevice.html /doc/html/boost_asio/reference/SyncRandomAccessWriteDevice.html @@ -4700,10 +6174,23 @@ /doc/html/boost_asio/reference/system_context/use_service/overload2.html /doc/html/boost_asio/reference/system_executor.html /doc/html/boost_asio/reference/system_timer.html +/doc/html/boost_asio/reference/this_coro__cancellation_state.html +/doc/html/boost_asio/reference/this_coro__cancellation_state_t/ +/doc/html/boost_asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html +/doc/html/boost_asio/reference/this_coro__cancellation_state_t.html /doc/html/boost_asio/reference/this_coro__executor.html /doc/html/boost_asio/reference/this_coro__executor_t/ /doc/html/boost_asio/reference/this_coro__executor_t/executor_t.html /doc/html/boost_asio/reference/this_coro__executor_t.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/ +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload1.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload2.html +/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload3.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/ +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload1.html +/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload2.html /doc/html/boost_asio/reference/thread_pool/ /doc/html/boost_asio/reference/thread_pool/add_service.html /doc/html/boost_asio/reference/thread_pool/attach.html @@ -4714,11 +6201,13 @@ /doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/bulk_execute.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/connect.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/context.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/defer.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/dispatch.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/execute.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/index_type.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_finished.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_started.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/ @@ -4755,6 +6244,7 @@ /doc/html/boost_asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/schedule.html /doc/html/boost_asio/reference/thread_pool__basic_executor_type/sender_type.html +/doc/html/boost_asio/reference/thread_pool__basic_executor_type/shape_type.html /doc/html/boost_asio/reference/thread_pool/destroy.html /doc/html/boost_asio/reference/thread_pool/executor.html /doc/html/boost_asio/reference/thread_pool/executor_type.html @@ -4797,10 +6287,7 @@ /doc/html/boost_asio/reference/use_awaitable_t/as_default_on.html /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/ /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/ /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default/overload2.html /doc/html/boost_asio/reference/use_awaitable_t__executor_with_default.html /doc/html/boost_asio/reference/use_awaitable_t.html /doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/ @@ -4821,6 +6308,7 @@ /doc/html/boost_asio/reference/use_future_t/use_future_t/overload2.html /doc/html/boost_asio/reference/uses_executor.html /doc/html/boost_asio/reference/WaitHandler.html +/doc/html/boost_asio/reference/WaitToken.html /doc/html/boost_asio/reference/wait_traits/ /doc/html/boost_asio/reference/WaitTraits.html /doc/html/boost_asio/reference/wait_traits.html @@ -4841,6 +6329,7 @@ /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_object_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_object_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload1.html @@ -4860,7 +6349,10 @@ /doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_object_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_object_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/other.html @@ -4881,6 +6373,7 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload1.html @@ -4892,7 +6385,6 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer.html @@ -4901,10 +6393,17 @@ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/ +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_overlapped_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/assign.html @@ -4919,6 +6418,7 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload1.html @@ -4930,7 +6430,6 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer.html @@ -4939,7 +6438,10 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html @@ -4947,6 +6449,10 @@ /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/ +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_random_access_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/ /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at.html /doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html @@ -4965,6 +6471,7 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html /doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload6.html /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/ /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel.html /doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload1.html @@ -4976,7 +6483,6 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/executor_type.html /doc/html/boost_asio/reference/windows__basic_stream_handle/get_executor.html /doc/html/boost_asio/reference/windows__basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/impl_.html /doc/html/boost_asio/reference/windows__basic_stream_handle/is_open.html /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/ /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer.html @@ -4985,7 +6491,10 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer_type.html /doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle.html /doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle_type.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/ /doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/overload1.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_/overload2.html /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/ /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some.html /doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload1.html @@ -4993,6 +6502,10 @@ /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/ /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor.html /doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/other.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/ +/doc/html/boost_asio/reference/windows__basic_stream_handle/release.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/overload1.html +/doc/html/boost_asio/reference/windows__basic_stream_handle/release/overload2.html /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/ /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some.html /doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload1.html @@ -5020,6 +6533,7 @@ /doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload3.html /doc/html/boost_asio/reference/windows__random_access_handle.html /doc/html/boost_asio/reference/windows__stream_handle.html +/doc/html/boost_asio/reference/writable_pipe.html /doc/html/boost_asio/reference/write/ /doc/html/boost_asio/reference/write_at/ /doc/html/boost_asio/reference/write_at.html @@ -5049,7 +6563,9 @@ /doc/html/boost_asio/reference/write/overload7.html /doc/html/boost_asio/reference/write/overload8.html /doc/html/boost_asio/reference/write/overload9.html +/doc/html/boost_asio/reference/WriteToken.html /doc/html/boost_asio/reference/yield_context.html +/doc/html/boost_asio/std_executors.html /doc/html/boost_asio/sync_op.png /doc/html/boost_asio/tutorial/ /doc/html/boost_asio/tutorial.html @@ -5092,167 +6608,15 @@ /doc/html/boost_asio/using.html /libs/ /libs/asio/ +/libs/asio/CMakeLists.txt /libs/asio/doc/ /libs/asio/doc/asio.qbk /libs/asio/doc/doxy2qbk.pl /libs/asio/doc/examples.qbk /libs/asio/doc/history.qbk -/libs/asio/doc/html/ -/libs/asio/doc/html/boost_asio/ -/libs/asio/doc/html/boost_asio/example/ -/libs/asio/doc/html/boost_asio/example/cpp03/ -/libs/asio/doc/html/boost_asio/example/cpp03/allocation/ -/libs/asio/doc/html/boost_asio/example/cpp03/buffers/ -/libs/asio/doc/html/boost_asio/example/cpp03/chat/ -/libs/asio/doc/html/boost_asio/example/cpp03/echo/ -/libs/asio/doc/html/boost_asio/example/cpp03/fork/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/client/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server2/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server3/ -/libs/asio/doc/html/boost_asio/example/cpp03/http/server4/ -/libs/asio/doc/html/boost_asio/example/cpp03/icmp/ -/libs/asio/doc/html/boost_asio/example/cpp03/invocation/ -/libs/asio/doc/html/boost_asio/example/cpp03/iostreams/ -/libs/asio/doc/html/boost_asio/example/cpp03/local/ -/libs/asio/doc/html/boost_asio/example/cpp03/multicast/ -/libs/asio/doc/html/boost_asio/example/cpp03/nonblocking/ -/libs/asio/doc/html/boost_asio/example/cpp03/porthopper/ -/libs/asio/doc/html/boost_asio/example/cpp03/serialization/ -/libs/asio/doc/html/boost_asio/example/cpp03/services/ -/libs/asio/doc/html/boost_asio/example/cpp03/socks4/ -/libs/asio/doc/html/boost_asio/example/cpp03/spawn/ -/libs/asio/doc/html/boost_asio/example/cpp03/ssl/ -/libs/asio/doc/html/boost_asio/example/cpp03/timeouts/ -/libs/asio/doc/html/boost_asio/example/cpp03/timers/ -/libs/asio/doc/html/boost_asio/example/cpp03/windows/ -/libs/asio/doc/html/boost_asio/example/cpp11/ -/libs/asio/doc/html/boost_asio/example/cpp11/allocation/ -/libs/asio/doc/html/boost_asio/example/cpp11/buffers/ -/libs/asio/doc/html/boost_asio/example/cpp11/chat/ -/libs/asio/doc/html/boost_asio/example/cpp11/echo/ -/libs/asio/doc/html/boost_asio/example/cpp11/executors/ -/libs/asio/doc/html/boost_asio/example/cpp11/fork/ -/libs/asio/doc/html/boost_asio/example/cpp11/futures/ -/libs/asio/doc/html/boost_asio/example/cpp11/handler_tracking/ -/libs/asio/doc/html/boost_asio/example/cpp11/http/ -/libs/asio/doc/html/boost_asio/example/cpp11/http/server/ -/libs/asio/doc/html/boost_asio/example/cpp11/invocation/ -/libs/asio/doc/html/boost_asio/example/cpp11/local/ -/libs/asio/doc/html/boost_asio/example/cpp11/multicast/ -/libs/asio/doc/html/boost_asio/example/cpp11/nonblocking/ -/libs/asio/doc/html/boost_asio/example/cpp11/operations/ -/libs/asio/doc/html/boost_asio/example/cpp11/socks4/ -/libs/asio/doc/html/boost_asio/example/cpp11/spawn/ -/libs/asio/doc/html/boost_asio/example/cpp11/ssl/ -/libs/asio/doc/html/boost_asio/example/cpp11/timeouts/ -/libs/asio/doc/html/boost_asio/example/cpp11/timers/ -/libs/asio/doc/html/boost_asio/example/cpp14/ -/libs/asio/doc/html/boost_asio/example/cpp14/operations/ -/libs/asio/doc/html/boost_asio/example/cpp17/ -/libs/asio/doc/html/boost_asio/example/cpp17/coroutines_ts/ -/libs/asio/doc/html/boost_asio/examples/ -/libs/asio/doc/html/boost_asio/examples/cpp03_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp11_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp14_examples.html -/libs/asio/doc/html/boost_asio/examples/cpp17_examples.html -/libs/asio/doc/html/boost_asio/examples.html -/libs/asio/doc/html/boost_asio/history.html -/libs/asio/doc/html/boost_asio/index.html -/libs/asio/doc/html/boost_asio/net_ts.html -/libs/asio/doc/html/boost_asio/overview/ -/libs/asio/doc/html/boost_asio/overview/core/ -/libs/asio/doc/html/boost_asio/overview/core/allocation.html -/libs/asio/doc/html/boost_asio/overview/core/async.html -/libs/asio/doc/html/boost_asio/overview/core/basics.html -/libs/asio/doc/html/boost_asio/overview/core/buffers.html -/libs/asio/doc/html/boost_asio/overview/core/concurrency_hint.html -/libs/asio/doc/html/boost_asio/overview/core/coroutine.html -/libs/asio/doc/html/boost_asio/overview/core/coroutines_ts.html -/libs/asio/doc/html/boost_asio/overview/core/handler_tracking.html -/libs/asio/doc/html/boost_asio/overview/core.html -/libs/asio/doc/html/boost_asio/overview/core/line_based.html -/libs/asio/doc/html/boost_asio/overview/core/reactor.html -/libs/asio/doc/html/boost_asio/overview/core/spawn.html -/libs/asio/doc/html/boost_asio/overview/core/strands.html -/libs/asio/doc/html/boost_asio/overview/core/streams.html -/libs/asio/doc/html/boost_asio/overview/core/threads.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/ -/libs/asio/doc/html/boost_asio/overview/cpp2011/array.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/atomic.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/chrono.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/futures.html -/libs/asio/doc/html/boost_asio/overview/cpp2011.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/move_handlers.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/move_objects.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/shared_ptr.html -/libs/asio/doc/html/boost_asio/overview/cpp2011/variadic.html -/libs/asio/doc/html/boost_asio/overview.html -/libs/asio/doc/html/boost_asio/overview/implementation.html -/libs/asio/doc/html/boost_asio/overview/networking/ -/libs/asio/doc/html/boost_asio/overview/networking/bsd_sockets.html -/libs/asio/doc/html/boost_asio/overview/networking.html -/libs/asio/doc/html/boost_asio/overview/networking/iostreams.html -/libs/asio/doc/html/boost_asio/overview/networking/other_protocols.html -/libs/asio/doc/html/boost_asio/overview/networking/protocols.html -/libs/asio/doc/html/boost_asio/overview/posix/ -/libs/asio/doc/html/boost_asio/overview/posix/fork.html -/libs/asio/doc/html/boost_asio/overview/posix.html -/libs/asio/doc/html/boost_asio/overview/posix/local.html -/libs/asio/doc/html/boost_asio/overview/posix/stream_descriptor.html -/libs/asio/doc/html/boost_asio/overview/rationale.html -/libs/asio/doc/html/boost_asio/overview/serial_ports.html -/libs/asio/doc/html/boost_asio/overview/signals.html -/libs/asio/doc/html/boost_asio/overview/ssl.html -/libs/asio/doc/html/boost_asio/overview/timers.html -/libs/asio/doc/html/boost_asio/overview/windows/ -/libs/asio/doc/html/boost_asio/overview/windows.html -/libs/asio/doc/html/boost_asio/overview/windows/object_handle.html -/libs/asio/doc/html/boost_asio/overview/windows/random_access_handle.html -/libs/asio/doc/html/boost_asio/overview/windows/stream_handle.html -/libs/asio/doc/html/boost_asio/tutorial/ -/libs/asio/doc/html/boost_asio/tutorial.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime1/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime2/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime3/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime4/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime5/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime6/src.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7/ -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7.html -/libs/asio/doc/html/boost_asio/tutorial/tutdaytime7/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer1/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer2/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer3/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer4/src.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5/ -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5.html -/libs/asio/doc/html/boost_asio/tutorial/tuttimer5/src.html -/libs/asio/doc/html/boost_asio/using.html -/libs/asio/doc/html/index.html /libs/asio/doc/index.xml /libs/asio/doc/Jamfile.v2 +/libs/asio/doc/model_dox.txt /libs/asio/doc/net_ts.qbk /libs/asio/doc/noncopyable_dox.txt /libs/asio/doc/overview/ @@ -5265,18 +6629,51 @@ /libs/asio/doc/overview/basics.qbk /libs/asio/doc/overview/bsd_sockets.qbk /libs/asio/doc/overview/buffers.qbk +/libs/asio/doc/overview/cancellation.qbk +/libs/asio/doc/overview/channels.qbk +/libs/asio/doc/overview/compose.qbk /libs/asio/doc/overview/concurrency_hint.qbk +/libs/asio/doc/overview/coro.qbk /libs/asio/doc/overview/coroutine.qbk -/libs/asio/doc/overview/coroutines_ts.qbk /libs/asio/doc/overview/cpp2011.qbk +/libs/asio/doc/overview/cpp20_coroutines.qbk +/libs/asio/doc/overview/deferred.qbk +/libs/asio/doc/overview/files.qbk +/libs/asio/doc/overview/futures.qbk /libs/asio/doc/overview/handler_tracking.qbk +/libs/asio/doc/overview/immediate_completion.qbk /libs/asio/doc/overview/implementation.qbk /libs/asio/doc/overview/iostreams.qbk /libs/asio/doc/overview/line_based.qbk +/libs/asio/doc/overview/model/ +/libs/asio/doc/overview/model/allocators.qbk +/libs/asio/doc/overview/model/associators.qbk +/libs/asio/doc/overview/model/async_agent_chain.png +/libs/asio/doc/overview/model/async_agent_model.png +/libs/asio/doc/overview/model/async_agents.qbk +/libs/asio/doc/overview/model/async_child_agent_chain.png +/libs/asio/doc/overview/model/async_op_init_complete.png +/libs/asio/doc/overview/model/async_op_model.png +/libs/asio/doc/overview/model/async_op_phases.png +/libs/asio/doc/overview/model/async_ops.qbk +/libs/asio/doc/overview/model/async_op_trivial_chain.png +/libs/asio/doc/overview/model/cancellation.qbk +/libs/asio/doc/overview/model/child_agents.qbk +/libs/asio/doc/overview/model/completion_token_model.png +/libs/asio/doc/overview/model/completion_tokens.qbk +/libs/asio/doc/overview/model/completion_token_transform.png +/libs/asio/doc/overview/model/executors.qbk +/libs/asio/doc/overview/model/higher_level_model.png +/libs/asio/doc/overview/model/higher_levels.qbk +/libs/asio/doc/overview/model/library_elements.qbk +/libs/asio/doc/overview/model.qbk /libs/asio/doc/overview/other_protocols.qbk +/libs/asio/doc/overview/parallel_group.qbk +/libs/asio/doc/overview/pipes.qbk /libs/asio/doc/overview/posix.qbk /libs/asio/doc/overview/proactor.dot /libs/asio/doc/overview/proactor.png +/libs/asio/doc/overview/promises.qbk /libs/asio/doc/overview/protocols.qbk /libs/asio/doc/overview.qbk /libs/asio/doc/overview/rationale.qbk @@ -5291,7 +6688,11 @@ /libs/asio/doc/overview/sync_op.png /libs/asio/doc/overview/threads.qbk /libs/asio/doc/overview/timers.qbk +/libs/asio/doc/overview/token_adapters.qbk +/libs/asio/doc/overview/type_erasure.qbk /libs/asio/doc/overview/windows.qbk +/libs/asio/doc/platform_macros.pl +/libs/asio/doc/platform_macros.qbk /libs/asio/doc/quickref.xml /libs/asio/doc/reference.dox /libs/asio/doc/reference.qbk @@ -5299,6 +6700,7 @@ /libs/asio/doc/requirements/ /libs/asio/doc/requirements/AcceptableProtocol.qbk /libs/asio/doc/requirements/AcceptHandler.qbk +/libs/asio/doc/requirements/AcceptToken.qbk /libs/asio/doc/requirements/asynchronous_operations.qbk /libs/asio/doc/requirements/asynchronous_socket_operations.qbk /libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk @@ -5306,10 +6708,13 @@ /libs/asio/doc/requirements/AsyncReadStream.qbk /libs/asio/doc/requirements/AsyncWriteStream.qbk /libs/asio/doc/requirements/BufferedHandshakeHandler.qbk +/libs/asio/doc/requirements/BufferedHandshakeToken.qbk +/libs/asio/doc/requirements/CancellationHandler.qbk +/libs/asio/doc/requirements/CancellationSlot.qbk /libs/asio/doc/requirements/CompletionCondition.qbk -/libs/asio/doc/requirements/CompletionHandler.qbk /libs/asio/doc/requirements/ConnectCondition.qbk /libs/asio/doc/requirements/ConnectHandler.qbk +/libs/asio/doc/requirements/ConnectToken.qbk /libs/asio/doc/requirements/ConstBufferSequence.qbk /libs/asio/doc/requirements/DynamicBuffer.qbk /libs/asio/doc/requirements/DynamicBuffer_v1.qbk @@ -5322,29 +6727,38 @@ /libs/asio/doc/requirements/GettableSocketOption.qbk /libs/asio/doc/requirements/Handler.qbk /libs/asio/doc/requirements/HandshakeHandler.qbk +/libs/asio/doc/requirements/HandshakeToken.qbk /libs/asio/doc/requirements/InternetProtocol.qbk /libs/asio/doc/requirements/IoControlCommand.qbk /libs/asio/doc/requirements/IoObjectService.qbk /libs/asio/doc/requirements/IteratorConnectHandler.qbk +/libs/asio/doc/requirements/IteratorConnectToken.qbk /libs/asio/doc/requirements/LegacyCompletionHandler.qbk /libs/asio/doc/requirements/MoveAcceptHandler.qbk +/libs/asio/doc/requirements/MoveAcceptToken.qbk /libs/asio/doc/requirements/MutableBufferSequence.qbk +/libs/asio/doc/requirements/NullaryToken.qbk /libs/asio/doc/requirements/OperationState.qbk /libs/asio/doc/requirements/ProtoAllocator.qbk /libs/asio/doc/requirements/Protocol.qbk /libs/asio/doc/requirements.qbk /libs/asio/doc/requirements/RangeConnectHandler.qbk +/libs/asio/doc/requirements/RangeConnectToken.qbk /libs/asio/doc/requirements/ReadHandler.qbk +/libs/asio/doc/requirements/ReadToken.qbk /libs/asio/doc/requirements/read_write_operations.qbk /libs/asio/doc/requirements/Receiver.qbk /libs/asio/doc/requirements/ResolveHandler.qbk +/libs/asio/doc/requirements/ResolveToken.qbk /libs/asio/doc/requirements/Scheduler.qbk /libs/asio/doc/requirements/Sender.qbk /libs/asio/doc/requirements/Service.qbk /libs/asio/doc/requirements/SettableSerialPortOption.qbk /libs/asio/doc/requirements/SettableSocketOption.qbk /libs/asio/doc/requirements/ShutdownHandler.qbk +/libs/asio/doc/requirements/ShutdownToken.qbk /libs/asio/doc/requirements/SignalHandler.qbk +/libs/asio/doc/requirements/SignalToken.qbk /libs/asio/doc/requirements/synchronous_socket_operations.qbk /libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk /libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk @@ -5352,9 +6766,12 @@ /libs/asio/doc/requirements/SyncWriteStream.qbk /libs/asio/doc/requirements/TimeTraits.qbk /libs/asio/doc/requirements/WaitHandler.qbk +/libs/asio/doc/requirements/WaitToken.qbk /libs/asio/doc/requirements/WaitTraits.qbk /libs/asio/doc/requirements/WriteHandler.qbk +/libs/asio/doc/requirements/WriteToken.qbk /libs/asio/doc/std_exception_dox.txt +/libs/asio/doc/std_executors.qbk /libs/asio/doc/tutorial.dox /libs/asio/doc/tutorial.qbk /libs/asio/doc/tutorial.xsl @@ -5520,7 +6937,7 @@ /libs/asio/example/cpp03/ssl/ /libs/asio/example/cpp03/ssl/ca.pem /libs/asio/example/cpp03/ssl/client.cpp -/libs/asio/example/cpp03/ssl/dh2048.pem +/libs/asio/example/cpp03/ssl/dh4096.pem /libs/asio/example/cpp03/ssl/Jamfile.v2 /libs/asio/example/cpp03/ssl/README /libs/asio/example/cpp03/ssl/server.cpp @@ -5579,6 +6996,10 @@ /libs/asio/example/cpp11/chat/chat_message.hpp /libs/asio/example/cpp11/chat/chat_server.cpp /libs/asio/example/cpp11/chat/Jamfile.v2 +/libs/asio/example/cpp11/deferred/ +/libs/asio/example/cpp11/deferred/deferred_1.cpp +/libs/asio/example/cpp11/deferred/deferred_2.cpp +/libs/asio/example/cpp11/deferred/Jamfile.v2 /libs/asio/example/cpp11/echo/ /libs/asio/example/cpp11/echo/async_tcp_echo_server.cpp /libs/asio/example/cpp11/echo/async_udp_echo_server.cpp @@ -5595,6 +7016,10 @@ /libs/asio/example/cpp11/executors/Jamfile.v2 /libs/asio/example/cpp11/executors/pipeline.cpp /libs/asio/example/cpp11/executors/priority_scheduler.cpp +/libs/asio/example/cpp11/files/ +/libs/asio/example/cpp11/files/async_file_copy.cpp +/libs/asio/example/cpp11/files/blocking_file_copy.cpp +/libs/asio/example/cpp11/files/Jamfile.v2 /libs/asio/example/cpp11/fork/ /libs/asio/example/cpp11/fork/daemon.cpp /libs/asio/example/cpp11/fork/Jamfile.v2 @@ -5634,6 +7059,8 @@ /libs/asio/example/cpp11/iostreams/Jamfile.v2 /libs/asio/example/cpp11/local/ /libs/asio/example/cpp11/local/connect_pair.cpp +/libs/asio/example/cpp11/local/fd_passing_stream_client.cpp +/libs/asio/example/cpp11/local/fd_passing_stream_server.cpp /libs/asio/example/cpp11/local/iostream_client.cpp /libs/asio/example/cpp11/local/Jamfile.v2 /libs/asio/example/cpp11/local/stream_client.cpp @@ -5655,6 +7082,13 @@ /libs/asio/example/cpp11/operations/composed_7.cpp /libs/asio/example/cpp11/operations/composed_8.cpp /libs/asio/example/cpp11/operations/Jamfile.v2 +/libs/asio/example/cpp11/parallel_group/ +/libs/asio/example/cpp11/parallel_group/Jamfile.v2 +/libs/asio/example/cpp11/parallel_group/ranged_wait_for_all.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_all.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one_error.cpp +/libs/asio/example/cpp11/parallel_group/wait_for_one_success.cpp /libs/asio/example/cpp11/socks4/ /libs/asio/example/cpp11/socks4/Jamfile.v2 /libs/asio/example/cpp11/socks4/socks4.hpp @@ -5666,7 +7100,7 @@ /libs/asio/example/cpp11/ssl/ /libs/asio/example/cpp11/ssl/ca.pem /libs/asio/example/cpp11/ssl/client.cpp -/libs/asio/example/cpp11/ssl/dh2048.pem +/libs/asio/example/cpp11/ssl/dh4096.pem /libs/asio/example/cpp11/ssl/Jamfile.v2 /libs/asio/example/cpp11/ssl/README /libs/asio/example/cpp11/ssl/server.cpp @@ -5681,7 +7115,24 @@ /libs/asio/example/cpp11/timers/ /libs/asio/example/cpp11/timers/Jamfile.v2 /libs/asio/example/cpp11/timers/time_t_timer.cpp +/libs/asio/example/cpp11/type_erasure/ +/libs/asio/example/cpp11/type_erasure/Jamfile.v2 +/libs/asio/example/cpp11/type_erasure/line_reader.hpp +/libs/asio/example/cpp11/type_erasure/main.cpp +/libs/asio/example/cpp11/type_erasure/sleep.cpp +/libs/asio/example/cpp11/type_erasure/sleep.hpp +/libs/asio/example/cpp11/type_erasure/stdin_line_reader.cpp +/libs/asio/example/cpp11/type_erasure/stdin_line_reader.hpp /libs/asio/example/cpp14/ +/libs/asio/example/cpp14/deferred/ +/libs/asio/example/cpp14/deferred/deferred_1.cpp +/libs/asio/example/cpp14/deferred/deferred_2.cpp +/libs/asio/example/cpp14/deferred/deferred_3.cpp +/libs/asio/example/cpp14/deferred/deferred_4.cpp +/libs/asio/example/cpp14/deferred/deferred_5.cpp +/libs/asio/example/cpp14/deferred/deferred_6.cpp +/libs/asio/example/cpp14/deferred/deferred_7.cpp +/libs/asio/example/cpp14/deferred/Jamfile.v2 /libs/asio/example/cpp14/executors/ /libs/asio/example/cpp14/executors/actor.cpp /libs/asio/example/cpp14/executors/async_1.cpp @@ -5692,7 +7143,12 @@ /libs/asio/example/cpp14/executors/Jamfile.v2 /libs/asio/example/cpp14/executors/pipeline.cpp /libs/asio/example/cpp14/executors/priority_scheduler.cpp +/libs/asio/example/cpp14/iostreams/ +/libs/asio/example/cpp14/iostreams/http_client.cpp +/libs/asio/example/cpp14/iostreams/Jamfile.v2 /libs/asio/example/cpp14/operations/ +/libs/asio/example/cpp14/operations/callback_wrapper.cpp +/libs/asio/example/cpp14/operations/c_callback_wrapper.cpp /libs/asio/example/cpp14/operations/composed_1.cpp /libs/asio/example/cpp14/operations/composed_2.cpp /libs/asio/example/cpp14/operations/composed_3.cpp @@ -5702,13 +7158,57 @@ /libs/asio/example/cpp14/operations/composed_7.cpp /libs/asio/example/cpp14/operations/composed_8.cpp /libs/asio/example/cpp14/operations/Jamfile.v2 +/libs/asio/example/cpp14/parallel_group/ +/libs/asio/example/cpp14/parallel_group/Jamfile.v2 +/libs/asio/example/cpp14/parallel_group/parallel_sort.cpp +/libs/asio/example/cpp14/parallel_group/ranged_wait_for_all.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_all.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one_error.cpp +/libs/asio/example/cpp14/parallel_group/wait_for_one_success.cpp /libs/asio/example/cpp17/ /libs/asio/example/cpp17/coroutines_ts/ /libs/asio/example/cpp17/coroutines_ts/chat_server.cpp /libs/asio/example/cpp17/coroutines_ts/echo_server.cpp +/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp +/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp /libs/asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp /libs/asio/example/cpp17/coroutines_ts/range_based_for.cpp /libs/asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp +/libs/asio/example/cpp20/ +/libs/asio/example/cpp20/channels/ +/libs/asio/example/cpp20/channels/throttling_proxy.cpp +/libs/asio/example/cpp20/coroutines/ +/libs/asio/example/cpp20/coroutines/chat_server.cpp +/libs/asio/example/cpp20/coroutines/echo_server.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_as_single_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_as_tuple_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_default.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_deferred.cpp +/libs/asio/example/cpp20/coroutines/echo_server_with_deferred_default.cpp +/libs/asio/example/cpp20/coroutines/Jamfile.v2 +/libs/asio/example/cpp20/coroutines/refactored_echo_server.cpp +/libs/asio/example/cpp20/coroutines/timeout.cpp +/libs/asio/example/cpp20/operations/ +/libs/asio/example/cpp20/operations/callback_wrapper.cpp +/libs/asio/example/cpp20/operations/c_callback_wrapper.cpp +/libs/asio/example/cpp20/operations/composed_1.cpp +/libs/asio/example/cpp20/operations/composed_2.cpp +/libs/asio/example/cpp20/operations/composed_3.cpp +/libs/asio/example/cpp20/operations/composed_4.cpp +/libs/asio/example/cpp20/operations/composed_5.cpp +/libs/asio/example/cpp20/operations/composed_6.cpp +/libs/asio/example/cpp20/operations/composed_7.cpp +/libs/asio/example/cpp20/operations/composed_8.cpp +/libs/asio/example/cpp20/operations/Jamfile.v2 +/libs/asio/example/cpp20/type_erasure/ +/libs/asio/example/cpp20/type_erasure/Jamfile.v2 +/libs/asio/example/cpp20/type_erasure/line_reader.hpp +/libs/asio/example/cpp20/type_erasure/main.cpp +/libs/asio/example/cpp20/type_erasure/sleep.cpp +/libs/asio/example/cpp20/type_erasure/sleep.hpp +/libs/asio/example/cpp20/type_erasure/stdin_line_reader.cpp +/libs/asio/example/cpp20/type_erasure/stdin_line_reader.hpp /libs/asio/.github/ /libs/asio/.github/ISSUE_TEMPLATE/ /libs/asio/.github/ISSUE_TEMPLATE/config.yml @@ -5718,6 +7218,7 @@ /libs/asio/meta/ /libs/asio/meta/libraries.json /libs/asio/test/ +/libs/asio/test/append.cpp /libs/asio/test/archetypes/ /libs/asio/test/archetypes/async_ops.hpp /libs/asio/test/archetypes/async_result.hpp @@ -5725,33 +7226,52 @@ /libs/asio/test/archetypes/io_control_command.hpp /libs/asio/test/archetypes/settable_socket_option.hpp /libs/asio/test/associated_allocator.cpp +/libs/asio/test/associated_cancellation_slot.cpp /libs/asio/test/associated_executor.cpp +/libs/asio/test/associated_immediate_executor.cpp +/libs/asio/test/associator.cpp +/libs/asio/test/as_tuple.cpp /libs/asio/test/async_result.cpp /libs/asio/test/awaitable.cpp /libs/asio/test/basic_datagram_socket.cpp /libs/asio/test/basic_deadline_timer.cpp +/libs/asio/test/basic_file.cpp +/libs/asio/test/basic_random_access_file.cpp /libs/asio/test/basic_raw_socket.cpp +/libs/asio/test/basic_readable_pipe.cpp /libs/asio/test/basic_seq_packet_socket.cpp /libs/asio/test/basic_serial_port.cpp /libs/asio/test/basic_signal_set.cpp /libs/asio/test/basic_socket_acceptor.cpp /libs/asio/test/basic_socket.cpp /libs/asio/test/basic_streambuf.cpp +/libs/asio/test/basic_stream_file.cpp /libs/asio/test/basic_stream_socket.cpp /libs/asio/test/basic_waitable_timer.cpp +/libs/asio/test/basic_writable_pipe.cpp +/libs/asio/test/bind_allocator.cpp +/libs/asio/test/bind_cancellation_slot.cpp /libs/asio/test/bind_executor.cpp +/libs/asio/test/bind_immediate_executor.cpp /libs/asio/test/buffer.cpp /libs/asio/test/buffered_read_stream.cpp /libs/asio/test/buffered_stream.cpp /libs/asio/test/buffered_write_stream.cpp +/libs/asio/test/buffer_registration.cpp /libs/asio/test/buffers_iterator.cpp +/libs/asio/test/cancellation_signal.cpp +/libs/asio/test/cancellation_state.cpp +/libs/asio/test/cancellation_type.cpp /libs/asio/test/completion_condition.cpp /libs/asio/test/compose.cpp /libs/asio/test/connect.cpp +/libs/asio/test/connect_pipe.cpp +/libs/asio/test/consign.cpp /libs/asio/test/coroutine.cpp /libs/asio/test/co_spawn.cpp /libs/asio/test/deadline_timer.cpp /libs/asio/test/defer.cpp +/libs/asio/test/deferred.cpp /libs/asio/test/detached.cpp /libs/asio/test/dispatch.cpp /libs/asio/test/error.cpp @@ -5784,6 +7304,28 @@ /libs/asio/test/execution/submit.cpp /libs/asio/test/executor.cpp /libs/asio/test/executor_work_guard.cpp +/libs/asio/test/experimental/ +/libs/asio/test/experimental/awaitable_operators.cpp +/libs/asio/test/experimental/basic_channel.cpp +/libs/asio/test/experimental/basic_concurrent_channel.cpp +/libs/asio/test/experimental/channel.cpp +/libs/asio/test/experimental/channel_traits.cpp +/libs/asio/test/experimental/co_composed.cpp +/libs/asio/test/experimental/concurrent_channel.cpp +/libs/asio/test/experimental/coro/ +/libs/asio/test/experimental/coro/allocator.cpp +/libs/asio/test/experimental/coro/cancel.cpp +/libs/asio/test/experimental/coro/co_spawn.cpp +/libs/asio/test/experimental/coro/exception.cpp +/libs/asio/test/experimental/coro/executor.cpp +/libs/asio/test/experimental/coro/Jamfile.v2 +/libs/asio/test/experimental/coro/partial.cpp +/libs/asio/test/experimental/coro/simple_test.cpp +/libs/asio/test/experimental/coro/stack_test.cpp +/libs/asio/test/experimental/coro/use_coro.cpp +/libs/asio/test/experimental/Jamfile.v2 +/libs/asio/test/experimental/promise.cpp +/libs/asio/test/file_base.cpp /libs/asio/test/generic/ /libs/asio/test/generic/basic_endpoint.cpp /libs/asio/test/generic/datagram_protocol.cpp @@ -5831,6 +7373,7 @@ /libs/asio/test/local/basic_endpoint.cpp /libs/asio/test/local/connect_pair.cpp /libs/asio/test/local/datagram_protocol.cpp +/libs/asio/test/local/seq_packet_protocol.cpp /libs/asio/test/local/stream_protocol.cpp /libs/asio/test/packaged_task.cpp /libs/asio/test/placeholders.cpp @@ -5841,6 +7384,7 @@ /libs/asio/test/posix/descriptor.cpp /libs/asio/test/posix/stream_descriptor.cpp /libs/asio/test/post.cpp +/libs/asio/test/prepend.cpp /libs/asio/test/properties/ /libs/asio/test/properties/cpp03/ /libs/asio/test/properties/cpp03/can_prefer_free_prefer.cpp @@ -6019,12 +7563,17 @@ /libs/asio/test/properties/cpp14/require_free.cpp /libs/asio/test/properties/cpp14/require_member.cpp /libs/asio/test/properties/cpp14/require_static.cpp +/libs/asio/test/random_access_file.cpp +/libs/asio/test/readable_pipe.cpp /libs/asio/test/read_at.cpp /libs/asio/test/read.cpp /libs/asio/test/read_until.cpp +/libs/asio/test/recycling_allocator.cpp /libs/asio/test/redirect_error.cpp +/libs/asio/test/registered_buffer.cpp /libs/asio/test/serial_port_base.cpp /libs/asio/test/serial_port.cpp +/libs/asio/test/signal_set_base.cpp /libs/asio/test/signal_set.cpp /libs/asio/test/socket_base.cpp /libs/asio/test/ssl/ @@ -6040,6 +7589,7 @@ /libs/asio/test/steady_timer.cpp /libs/asio/test/strand.cpp /libs/asio/test/streambuf.cpp +/libs/asio/test/stream_file.cpp /libs/asio/test/system_context.cpp /libs/asio/test/system_executor.cpp /libs/asio/test/system_timer.cpp @@ -6070,6 +7620,7 @@ /libs/asio/test/windows/overlapped_ptr.cpp /libs/asio/test/windows/random_access_handle.cpp /libs/asio/test/windows/stream_handle.cpp +/libs/asio/test/writable_pipe.cpp /libs/asio/test/write_at.cpp /libs/asio/test/write.cpp /libs/asio/tools/ @@ -6094,9 +7645,20 @@ /libs/system/doc/system/introduction.adoc /libs/system/doc/system/rationale.adoc /libs/system/doc/system/reference.adoc +/libs/system/doc/system/usage.adoc +/libs/system/.drone/ +/libs/system/.drone/drone.bat +/libs/system/.drone/drone.sh +/libs/system/.drone.jsonnet +/libs/system/extra/ +/libs/system/extra/boost_system.natvis +/libs/system/.github/ +/libs/system/.github/workflows/ +/libs/system/.github/workflows/ci.yml /libs/system/index.html /libs/system/meta/ /libs/system/meta/libraries.json +/libs/system/README.md /libs/system/src/ /libs/system/src/error_code.cpp /libs/system/test/ @@ -6104,21 +7666,46 @@ /libs/system/test/before_main_test.cpp /libs/system/test/cmake_install_test/ /libs/system/test/cmake_install_test/CMakeLists.txt +/libs/system/test/cmake_install_test/main.cpp /libs/system/test/CMakeLists.txt /libs/system/test/cmake_subdir_test/ /libs/system/test/cmake_subdir_test/CMakeLists.txt /libs/system/test/config_test.cpp +/libs/system/test/constexpr_test2.cpp /libs/system/test/constexpr_test.cpp +/libs/system/test/cygwin_error_test.cpp /libs/system/test/dynamic_link_test.cpp +/libs/system/test/ec_hash_value_test.cpp +/libs/system/test/ec_location_test2.cpp +/libs/system/test/ec_location_test3.cpp +/libs/system/test/ec_location_test4.cpp +/libs/system/test/ec_location_test.cpp +/libs/system/test/ec_what_test.cpp +/libs/system/test/ec_wstream_test.cpp +/libs/system/test/errc_test2.cpp +/libs/system/test/errc_test3.cpp +/libs/system/test/errc_test4.cpp +/libs/system/test/errc_test.cpp +/libs/system/test/error_category_test2.cpp /libs/system/test/error_category_test.cpp +/libs/system/test/error_code_test2.cpp +/libs/system/test/error_code_test3.cpp /libs/system/test/error_code_test.cpp /libs/system/test/error_code_user_test.cpp +/libs/system/test/error_condition_test2.cpp +/libs/system/test/error_condition_test3.cpp +/libs/system/test/error_condition_test.cpp /libs/system/test/failed_constexpr_test.cpp /libs/system/test/failed_test.cpp +/libs/system/test/generic_category_test2.cpp +/libs/system/test/generic_category_test3.cpp /libs/system/test/generic_category_test.cpp /libs/system/test/header_only_test.cpp /libs/system/test/initialization_test.cpp +/libs/system/test/is_error_code_enum_test.cpp +/libs/system/test/is_error_condition_enum_test.cpp /libs/system/test/Jamfile.v2 +/libs/system/test/linux_error_test.cpp /libs/system/test/msvc/ /libs/system/test/msvc/common.props /libs/system/test/msvc/config_test/ @@ -6135,19 +7722,64 @@ /libs/system/test/msvc/system-dll/system-dll.vcxproj /libs/system/test/msvc/system.sln /libs/system/test/quick.cpp +/libs/system/test/result_convert_construct.cpp +/libs/system/test/result_copy_assign.cpp +/libs/system/test/result_copy_construct.cpp +/libs/system/test/result_default_construct.cpp +/libs/system/test/result_emplace.cpp +/libs/system/test/result_eq.cpp +/libs/system/test/result_errc_construct.cpp +/libs/system/test/result_error_access.cpp +/libs/system/test/result_error_construct2.cpp +/libs/system/test/result_error_construct3.cpp +/libs/system/test/result_error_construct4.cpp +/libs/system/test/result_error_construct.cpp +/libs/system/test/result_move_assign.cpp +/libs/system/test/result_move_construct.cpp +/libs/system/test/result_range_for.cpp +/libs/system/test/result_swap.cpp +/libs/system/test/result_typedefs.cpp +/libs/system/test/result_value_access.cpp +/libs/system/test/result_value_construct2.cpp +/libs/system/test/result_value_construct3.cpp +/libs/system/test/result_value_construct4.cpp +/libs/system/test/result_value_construct5.cpp +/libs/system/test/result_value_construct.cpp /libs/system/test/single_instance_1.cpp /libs/system/test/single_instance_2.cpp /libs/system/test/single_instance_test.cpp +/libs/system/test/snprintf_test.cpp +/libs/system/test/std_interop_test10.cpp +/libs/system/test/std_interop_test11.cpp +/libs/system/test/std_interop_test12.cpp +/libs/system/test/std_interop_test13.cpp +/libs/system/test/std_interop_test14.cpp +/libs/system/test/std_interop_test15.cpp +/libs/system/test/std_interop_test16.cpp +/libs/system/test/std_interop_test2.cpp +/libs/system/test/std_interop_test3.cpp +/libs/system/test/std_interop_test4.cpp +/libs/system/test/std_interop_test5.cpp +/libs/system/test/std_interop_test6.cpp +/libs/system/test/std_interop_test7.cpp +/libs/system/test/std_interop_test8.cpp +/libs/system/test/std_interop_test9.cpp /libs/system/test/std_interop_test.cpp /libs/system/test/std_mismatch_test.cpp /libs/system/test/std_single_instance_1.cpp /libs/system/test/std_single_instance_2.cpp /libs/system/test/std_single_instance_test.cpp +/libs/system/test/system_category_test2.cpp +/libs/system/test/system_category_test3.cpp /libs/system/test/system_category_test.cpp +/libs/system/test/system_error_test2.cpp +/libs/system/test/system_error_test3.cpp /libs/system/test/system_error_test.cpp /libs/system/test/throws_assign_fail.cpp /libs/system/test/throw_test.cpp /libs/system/test/warnings_test.cpp +/libs/system/test/win32_generic_test.cpp /libs/system/test/win32_hresult_test.cpp +/libs/system/test/windows_error_test.cpp /libs/system/.travis.yml /README.txt diff --git a/tidal-link/link/modules/asio-standalone/asio/boostify.pl b/tidal-link/link/modules/asio-standalone/asio/boostify.pl old mode 100644 new mode 100755 index 460aab952..485206c31 --- a/tidal-link/link/modules/asio-standalone/asio/boostify.pl +++ b/tidal-link/link/modules/asio-standalone/asio/boostify.pl @@ -100,11 +100,17 @@ sub copy_source_file my $is_xsl = 0; $is_xsl = 1 if ($from =~ /.xsl$/); + my $is_quickref = 0; + $is_quickref = 1 if ($from =~ /quickref.xml$/); + my $is_test = 0; $is_test = 1 if ($from =~ /tests\/unit/); my $is_coroutine_related = 0; - $is_coroutine_related = 1 if ($from =~ /await/); + $is_coroutine_related = 1 if ($from =~ /await/ || $from =~ /partial_promise/ || $from =~ /co_composed/); + + my $is_hash_related = 0; + $is_hash_related = 1 if ($from =~ /ip\/address/ || $from =~ /ip\/basic_endpoint/); # Open the files. open(my $input, "<$from") or die("Can't open $from for reading"); @@ -136,8 +142,8 @@ sub copy_source_file $line =~ s/ASIO_/BOOST_ASIO_/g; } - # Extra replacements for quickbook and XSL source only. - if ($is_qbk || $is_xsl) + # Extra replacements for quickbook, XSL and quickref.xml source only. + if ($is_qbk || $is_xsl || $is_quickref) { $line =~ s/asio\.examples/boost_asio.examples/g; $line =~ s/asio\.history/boost_asio.history/g; @@ -156,6 +162,7 @@ sub copy_source_file $line =~ s/\^asio/^boost\/asio/g; $line =~ s/namespaceasio/namespaceboost_1_1asio/g; $line =~ s/ \(\[\@examples\/diffs.*$//; + $line =~ s/boost\/tools\/boostbook/tools\/boostbook/g; } # Conditional replacements. @@ -274,7 +281,7 @@ sub copy_source_file print_line($output, $1 . "boost::thread" . $2, $from, $lineno); } } - elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related) + elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related && !$is_hash_related) { print_line($output, "namespace boost {", $from, $lineno); print_line($output, "namespace system {", $from, $lineno); @@ -285,7 +292,12 @@ sub copy_source_file $line =~ s/asio::/boost::asio::/g if !$is_xsl; print_line($output, $line, $from, $lineno); } - elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related) + elsif ($line =~ /ec\.assign\(0, ec\.category\(\)\)/) + { + $line =~ s/ec\.assign\(0, ec\.category\(\)\)/ec = boost::system::error_code()/g; + print_line($output, $line, $from, $lineno); + } + elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related && !$is_hash_related) { print_line($output, "} // namespace system", $from, $lineno); print_line($output, "} // namespace boost", $from, $lineno); @@ -319,6 +331,16 @@ sub copy_source_file $line =~ s/asio_handler_invoke_helpers/boost_asio_handler_invoke_helpers/g; print_line($output, $line, $from, $lineno); } + elsif ($line =~ /asio_(prefer|query|require|require_concept)_fn/) + { + $line =~ s/asio_(prefer|query|require|require_concept)_fn/boost_asio_$1_fn/g; + print_line($output, $line, $from, $lineno); + } + elsif ($line =~ /asio_execution_/ && !($line =~ /_is_unspecialised/)) + { + $line =~ s/asio_execution_/boost_asio_execution_/g; + print_line($output, $line, $from, $lineno); + } elsif ($line =~ /[\\@]ref boost_bind/) { $line =~ s/[\\@]ref boost_bind/boost::bind()/g; @@ -350,6 +372,25 @@ sub copy_source_file print_line($output, "//", $from, $lineno); print_line($output, $line, $from, $lineno); } + elsif ($is_quickref) + { + if ($line =~ /asio\.reference\.error_code">/) + { + # Line is removed. + } + elsif ($line =~ /asio\.reference\.system_error">/) + { + # Line is removed. + } + elsif ($line =~ /asio\.reference\.thread">/) + { + # Line is removed. + } + else + { + print_line($output, $line, $from, $lineno); + } + } else { print_line($output, $line, $from, $lineno); @@ -373,6 +414,8 @@ sub copy_include_files "include/asio/execution/detail", "include/asio/execution/impl", "include/asio/experimental", + "include/asio/experimental/detail", + "include/asio/experimental/detail/impl", "include/asio/experimental/impl", "include/asio/generic", "include/asio/generic/detail", @@ -399,7 +442,7 @@ sub copy_include_files foreach my $dir (@dirs) { our $boost_dir; - my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp"), glob("$dir/*cpp") ); + my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp") ); foreach my $file (@files) { if ($file ne "include/asio/thread.hpp" @@ -437,6 +480,8 @@ sub copy_unit_tests "src/tests/unit", "src/tests/unit/archetypes", "src/tests/unit/execution", + "src/tests/unit/experimental", + "src/tests/unit/experimental/coro", "src/tests/unit/generic", "src/tests/unit/ip", "src/tests/unit/local", @@ -549,9 +594,11 @@ sub copy_examples "src/examples/cpp11/allocation", "src/examples/cpp11/buffers", "src/examples/cpp11/chat", + "src/examples/cpp11/deferred", "src/examples/cpp11/echo", "src/examples/cpp11/executors", "src/examples/cpp11/fork", + "src/examples/cpp11/files", "src/examples/cpp11/futures", "src/examples/cpp11/handler_tracking", "src/examples/cpp11/http/server", @@ -561,14 +608,23 @@ sub copy_examples "src/examples/cpp11/multicast", "src/examples/cpp11/nonblocking", "src/examples/cpp11/operations", + "src/examples/cpp11/parallel_group", "src/examples/cpp11/socks4", "src/examples/cpp11/spawn", "src/examples/cpp11/ssl", "src/examples/cpp11/timeouts", "src/examples/cpp11/timers", + "src/examples/cpp11/type_erasure", + "src/examples/cpp14/deferred", "src/examples/cpp14/executors", + "src/examples/cpp14/iostreams", "src/examples/cpp14/operations", - "src/examples/cpp17/coroutines_ts"); + "src/examples/cpp14/parallel_group", + "src/examples/cpp17/coroutines_ts", + "src/examples/cpp20/channels", + "src/examples/cpp20/coroutines", + "src/examples/cpp20/operations", + "src/examples/cpp20/type_erasure"); our $boost_dir; foreach my $dir (@dirs) @@ -597,10 +653,13 @@ sub copy_doc "src/doc/asio.qbk", "src/doc/examples.qbk", "src/doc/net_ts.qbk", + "src/doc/overview.qbk", + "src/doc/quickref.xml", "src/doc/reference.xsl", "src/doc/std_executors.qbk", "src/doc/tutorial.xsl", glob("src/doc/overview/*.qbk"), + glob("src/doc/overview/model/*.qbk"), glob("src/doc/requirements/*.qbk")); foreach my $file (@files) { diff --git a/tidal-link/link/modules/asio-standalone/asio/configure.ac b/tidal-link/link/modules/asio-standalone/asio/configure.ac index fd1954cbc..8eabb6740 100644 --- a/tidal-link/link/modules/asio-standalone/asio/configure.ac +++ b/tidal-link/link/modules/asio-standalone/asio/configure.ac @@ -1,13 +1,14 @@ -AC_INIT(asio, [1.17.0]) +AC_INIT(asio, [1.28.0]) AC_CONFIG_SRCDIR(include/asio.hpp) AM_MAINTAINER_MODE -AM_INIT_AUTOMAKE([tar-ustar]) +AM_INIT_AUTOMAKE([tar-pax]) AC_CANONICAL_HOST AM_PROG_CC_C_O AC_PROG_CXX AC_LANG(C++) AC_PROG_RANLIB +PKG_INSTALLDIR AC_DEFINE(_REENTRANT, [1], [Define this]) @@ -169,13 +170,36 @@ AC_COMPILE_IFELSE( [AC_MSG_RESULT([no]) HAVE_CXX17=no;]) +AC_MSG_CHECKING([whether C++20 is enabled]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if __cplusplus < 202002L]] + [[#error C++20 not available]] + [[#endif]])], + [AC_MSG_RESULT([yes]) + HAVE_CXX20=yes;], + [AC_MSG_RESULT([no]) + HAVE_CXX20=no;]) + AC_MSG_CHECKING([whether coroutines are enabled]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if defined(__clang__)]] - [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] + [[# if (__clang_major__ >= 14)]] + [[# if (__cplusplus >= 202002) && (__cpp_impl_coroutine >= 201902)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] + [[# elif (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] + [[# endif]] + [[# else]] + [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] + [[# if __has_include()]] + [[# define ASIO_HAS_CO_AWAIT 1]] + [[# endif]] [[# endif]] [[# endif]] [[#elif defined(__GNUC__)]] @@ -216,8 +240,12 @@ AM_CONDITIONAL(HAVE_CXX14,test x$HAVE_CXX14 = xyes) AM_CONDITIONAL(HAVE_CXX17,test x$HAVE_CXX17 = xyes) +AM_CONDITIONAL(HAVE_CXX20,test x$HAVE_CXX20 = xyes) + AM_CONDITIONAL(HAVE_COROUTINES,test x$HAVE_COROUTINES = xyes) +AC_CONFIG_FILES([asio.pc]) + AC_OUTPUT([ Makefile include/Makefile @@ -227,4 +255,5 @@ AC_OUTPUT([ src/examples/cpp03/Makefile src/examples/cpp11/Makefile src/examples/cpp14/Makefile - src/examples/cpp17/Makefile]) + src/examples/cpp17/Makefile + src/examples/cpp20/Makefile]) diff --git a/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am b/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am index 265e37ed5..d7a9b9c60 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am +++ b/tidal-link/link/modules/asio-standalone/asio/include/Makefile.am @@ -1,14 +1,24 @@ # find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/ & \\/' | sort nobase_include_HEADERS = \ + asio/any_completion_executor.hpp \ + asio/any_completion_handler.hpp \ asio/any_io_executor.hpp \ + asio/append.hpp \ + asio/as_tuple.hpp \ asio/associated_allocator.hpp \ + asio/associated_cancellation_slot.hpp \ asio/associated_executor.hpp \ + asio/associated_immediate_executor.hpp \ + asio/associator.hpp \ asio/async_result.hpp \ asio/awaitable.hpp \ asio/basic_datagram_socket.hpp \ asio/basic_deadline_timer.hpp \ + asio/basic_file.hpp \ asio/basic_io_object.hpp \ + asio/basic_random_access_file.hpp \ asio/basic_raw_socket.hpp \ + asio/basic_readable_pipe.hpp \ asio/basic_seq_packet_socket.hpp \ asio/basic_serial_port.hpp \ asio/basic_signal_set.hpp \ @@ -18,9 +28,14 @@ nobase_include_HEADERS = \ asio/basic_socket_streambuf.hpp \ asio/basic_streambuf_fwd.hpp \ asio/basic_streambuf.hpp \ + asio/basic_stream_file.hpp \ asio/basic_stream_socket.hpp \ asio/basic_waitable_timer.hpp \ + asio/basic_writable_pipe.hpp \ + asio/bind_allocator.hpp \ + asio/bind_cancellation_slot.hpp \ asio/bind_executor.hpp \ + asio/bind_immediate_executor.hpp \ asio/buffered_read_stream_fwd.hpp \ asio/buffered_read_stream.hpp \ asio/buffered_stream_fwd.hpp \ @@ -28,19 +43,27 @@ nobase_include_HEADERS = \ asio/buffered_write_stream_fwd.hpp \ asio/buffered_write_stream.hpp \ asio/buffer.hpp \ + asio/buffer_registration.hpp \ asio/buffers_iterator.hpp \ + asio/cancellation_signal.hpp \ + asio/cancellation_state.hpp \ + asio/cancellation_type.hpp \ asio/co_spawn.hpp \ asio/completion_condition.hpp \ asio/compose.hpp \ asio/connect.hpp \ + asio/connect_pipe.hpp \ + asio/consign.hpp \ asio/coroutine.hpp \ asio/deadline_timer.hpp \ asio/defer.hpp \ + asio/deferred.hpp \ asio/detached.hpp \ asio/detail/array_fwd.hpp \ asio/detail/array.hpp \ asio/detail/assert.hpp \ asio/detail/atomic_count.hpp \ + asio/detail/base_from_cancellation_state.hpp \ asio/detail/base_from_completion_cond.hpp \ asio/detail/bind_handler.hpp \ asio/detail/blocking_executor_op.hpp \ @@ -52,6 +75,7 @@ nobase_include_HEADERS = \ asio/detail/chrono.hpp \ asio/detail/chrono_time_traits.hpp \ asio/detail/completion_handler.hpp \ + asio/detail/composed_work.hpp \ asio/detail/concurrency_hint.hpp \ asio/detail/conditionally_enabled_event.hpp \ asio/detail/conditionally_enabled_mutex.hpp \ @@ -69,6 +93,7 @@ nobase_include_HEADERS = \ asio/detail/epoll_reactor.hpp \ asio/detail/eventfd_select_interrupter.hpp \ asio/detail/event.hpp \ + asio/detail/exception.hpp \ asio/detail/executor_function.hpp \ asio/detail/executor_op.hpp \ asio/detail/fd_set_adapter.hpp \ @@ -95,16 +120,21 @@ nobase_include_HEADERS = \ asio/detail/impl/epoll_reactor.ipp \ asio/detail/impl/eventfd_select_interrupter.ipp \ asio/detail/impl/handler_tracking.ipp \ + asio/detail/impl/io_uring_descriptor_service.ipp \ + asio/detail/impl/io_uring_file_service.ipp \ + asio/detail/impl/io_uring_service.hpp \ + asio/detail/impl/io_uring_service.ipp \ + asio/detail/impl/io_uring_socket_service_base.ipp \ asio/detail/impl/kqueue_reactor.hpp \ asio/detail/impl/kqueue_reactor.ipp \ asio/detail/impl/null_event.ipp \ asio/detail/impl/pipe_select_interrupter.ipp \ asio/detail/impl/posix_event.ipp \ asio/detail/impl/posix_mutex.ipp \ + asio/detail/impl/posix_serial_port_service.ipp \ asio/detail/impl/posix_thread.ipp \ asio/detail/impl/posix_tss_ptr.ipp \ asio/detail/impl/reactive_descriptor_service.ipp \ - asio/detail/impl/reactive_serial_port_service.ipp \ asio/detail/impl/reactive_socket_service_base.ipp \ asio/detail/impl/resolver_service_base.ipp \ asio/detail/impl/scheduler.ipp \ @@ -119,10 +149,12 @@ nobase_include_HEADERS = \ asio/detail/impl/strand_executor_service.ipp \ asio/detail/impl/strand_service.hpp \ asio/detail/impl/strand_service.ipp \ + asio/detail/impl/thread_context.ipp \ asio/detail/impl/throw_error.ipp \ asio/detail/impl/timer_queue_ptime.ipp \ asio/detail/impl/timer_queue_set.ipp \ asio/detail/impl/win_event.ipp \ + asio/detail/impl/win_iocp_file_service.ipp \ asio/detail/impl/win_iocp_handle_service.ipp \ asio/detail/impl/win_iocp_io_context.hpp \ asio/detail/impl/win_iocp_io_context.ipp \ @@ -137,8 +169,30 @@ nobase_include_HEADERS = \ asio/detail/impl/win_static_mutex.ipp \ asio/detail/impl/win_thread.ipp \ asio/detail/impl/win_tss_ptr.ipp \ + asio/detail/initiate_defer.hpp \ + asio/detail/initiate_dispatch.hpp \ + asio/detail/initiate_post.hpp \ asio/detail/io_control.hpp \ asio/detail/io_object_impl.hpp \ + asio/detail/io_uring_descriptor_read_at_op.hpp \ + asio/detail/io_uring_descriptor_read_op.hpp \ + asio/detail/io_uring_descriptor_service.hpp \ + asio/detail/io_uring_descriptor_write_at_op.hpp \ + asio/detail/io_uring_descriptor_write_op.hpp \ + asio/detail/io_uring_file_service.hpp \ + asio/detail/io_uring_null_buffers_op.hpp \ + asio/detail/io_uring_operation.hpp \ + asio/detail/io_uring_service.hpp \ + asio/detail/io_uring_socket_accept_op.hpp \ + asio/detail/io_uring_socket_connect_op.hpp \ + asio/detail/io_uring_socket_recvfrom_op.hpp \ + asio/detail/io_uring_socket_recvmsg_op.hpp \ + asio/detail/io_uring_socket_recv_op.hpp \ + asio/detail/io_uring_socket_send_op.hpp \ + asio/detail/io_uring_socket_sendto_op.hpp \ + asio/detail/io_uring_socket_service_base.hpp \ + asio/detail/io_uring_socket_service.hpp \ + asio/detail/io_uring_wait_op.hpp \ asio/detail/is_buffer_sequence.hpp \ asio/detail/is_executor.hpp \ asio/detail/keyword_tss_ptr.hpp \ @@ -170,6 +224,7 @@ nobase_include_HEADERS = \ asio/detail/posix_fd_set_adapter.hpp \ asio/detail/posix_global.hpp \ asio/detail/posix_mutex.hpp \ + asio/detail/posix_serial_port_service.hpp \ asio/detail/posix_signal_blocker.hpp \ asio/detail/posix_static_mutex.hpp \ asio/detail/posix_thread.hpp \ @@ -177,7 +232,6 @@ nobase_include_HEADERS = \ asio/detail/push_options.hpp \ asio/detail/reactive_descriptor_service.hpp \ asio/detail/reactive_null_buffers_op.hpp \ - asio/detail/reactive_serial_port_service.hpp \ asio/detail/reactive_socket_accept_op.hpp \ asio/detail/reactive_socket_connect_op.hpp \ asio/detail/reactive_socket_recvfrom_op.hpp \ @@ -188,7 +242,6 @@ nobase_include_HEADERS = \ asio/detail/reactive_socket_service_base.hpp \ asio/detail/reactive_socket_service.hpp \ asio/detail/reactive_wait_op.hpp \ - asio/detail/reactor_fwd.hpp \ asio/detail/reactor.hpp \ asio/detail/reactor_op.hpp \ asio/detail/reactor_op_queue.hpp \ @@ -201,6 +254,7 @@ nobase_include_HEADERS = \ asio/detail/resolver_service.hpp \ asio/detail/scheduler.hpp \ asio/detail/scheduler_operation.hpp \ + asio/detail/scheduler_task.hpp \ asio/detail/scheduler_thread_info.hpp \ asio/detail/scoped_lock.hpp \ asio/detail/scoped_ptr.hpp \ @@ -243,6 +297,7 @@ nobase_include_HEADERS = \ asio/detail/timer_scheduler.hpp \ asio/detail/tss_ptr.hpp \ asio/detail/type_traits.hpp \ + asio/detail/utility.hpp \ asio/detail/variadic_templates.hpp \ asio/detail/wait_handler.hpp \ asio/detail/wait_op.hpp \ @@ -252,6 +307,7 @@ nobase_include_HEADERS = \ asio/detail/win_fd_set_adapter.hpp \ asio/detail/win_fenced_block.hpp \ asio/detail/win_global.hpp \ + asio/detail/win_iocp_file_service.hpp \ asio/detail/win_iocp_handle_read_op.hpp \ asio/detail/win_iocp_handle_service.hpp \ asio/detail/win_iocp_handle_write_op.hpp \ @@ -309,8 +365,8 @@ nobase_include_HEADERS = \ asio/execution/detail/as_operation.hpp \ asio/execution/detail/as_receiver.hpp \ asio/execution/detail/bulk_sender.hpp \ - asio/execution/detail/void_receiver.hpp \ asio/execution/detail/submit_receiver.hpp \ + asio/execution/detail/void_receiver.hpp \ asio/execution/execute.hpp \ asio/execution/executor.hpp \ asio/execution/impl/bad_executor.ipp \ @@ -334,6 +390,49 @@ nobase_include_HEADERS = \ asio/execution/submit.hpp \ asio/executor.hpp \ asio/executor_work_guard.hpp \ + asio/experimental/append.hpp \ + asio/experimental/as_single.hpp \ + asio/experimental/as_tuple.hpp \ + asio/experimental/awaitable_operators.hpp \ + asio/experimental/basic_channel.hpp \ + asio/experimental/basic_concurrent_channel.hpp \ + asio/experimental/cancellation_condition.hpp \ + asio/experimental/channel.hpp \ + asio/experimental/channel_error.hpp \ + asio/experimental/channel_traits.hpp \ + asio/experimental/co_composed.hpp \ + asio/experimental/co_spawn.hpp \ + asio/experimental/concurrent_channel.hpp \ + asio/experimental/coro.hpp \ + asio/experimental/coro_traits.hpp \ + asio/experimental/deferred.hpp \ + asio/experimental/detail/channel_handler.hpp \ + asio/experimental/detail/channel_message.hpp \ + asio/experimental/detail/channel_operation.hpp \ + asio/experimental/detail/channel_payload.hpp \ + asio/experimental/detail/channel_receive_op.hpp \ + asio/experimental/detail/channel_send_functions.hpp \ + asio/experimental/detail/channel_send_op.hpp \ + asio/experimental/detail/channel_service.hpp \ + asio/experimental/detail/coro_completion_handler.hpp \ + asio/experimental/detail/coro_promise_allocator.hpp \ + asio/experimental/detail/has_signature.hpp \ + asio/experimental/detail/impl/channel_service.hpp \ + asio/experimental/detail/partial_promise.hpp \ + asio/experimental/impl/as_single.hpp \ + asio/experimental/impl/channel_error.ipp \ + asio/experimental/impl/co_composed.hpp \ + asio/experimental/impl/coro.hpp \ + asio/experimental/impl/parallel_group.hpp \ + asio/experimental/impl/promise.hpp \ + asio/experimental/impl/use_coro.hpp \ + asio/experimental/impl/use_promise.hpp \ + asio/experimental/parallel_group.hpp \ + asio/experimental/prepend.hpp \ + asio/experimental/promise.hpp \ + asio/experimental/use_coro.hpp \ + asio/experimental/use_promise.hpp \ + asio/file_base.hpp \ asio/generic/basic_endpoint.hpp \ asio/generic/datagram_protocol.hpp \ asio/generic/detail/endpoint.hpp \ @@ -346,15 +445,21 @@ nobase_include_HEADERS = \ asio/handler_invoke_hook.hpp \ asio/high_resolution_timer.hpp \ asio.hpp \ + asio/impl/any_completion_executor.ipp \ + asio/impl/any_io_executor.ipp \ + asio/impl/append.hpp \ + asio/impl/as_tuple.hpp \ asio/impl/awaitable.hpp \ asio/impl/buffered_read_stream.hpp \ asio/impl/buffered_write_stream.hpp \ + asio/impl/cancellation_signal.ipp \ asio/impl/co_spawn.hpp \ - asio/impl/compose.hpp \ asio/impl/connect.hpp \ - asio/impl/defer.hpp \ + asio/impl/connect_pipe.hpp \ + asio/impl/connect_pipe.ipp \ + asio/impl/consign.hpp \ + asio/impl/deferred.hpp \ asio/impl/detached.hpp \ - asio/impl/dispatch.hpp \ asio/impl/error_code.ipp \ asio/impl/error.ipp \ asio/impl/execution_context.hpp \ @@ -365,7 +470,7 @@ nobase_include_HEADERS = \ asio/impl/io_context.hpp \ asio/impl/io_context.ipp \ asio/impl/multiple_exceptions.ipp \ - asio/impl/post.hpp \ + asio/impl/prepend.hpp \ asio/impl/read_at.hpp \ asio/impl/read.hpp \ asio/impl/read_until.hpp \ @@ -373,7 +478,6 @@ nobase_include_HEADERS = \ asio/impl/serial_port_base.hpp \ asio/impl/serial_port_base.ipp \ asio/impl/spawn.hpp \ - asio/impl/src.cpp \ asio/impl/src.hpp \ asio/impl/system_context.hpp \ asio/impl/system_context.ipp \ @@ -429,6 +533,7 @@ nobase_include_HEADERS = \ asio/ip/unicast.hpp \ asio/ip/v6_only.hpp \ asio/is_applicable_property.hpp \ + asio/is_contiguous_iterator.hpp \ asio/is_executor.hpp \ asio/is_read_buffered.hpp \ asio/is_write_buffered.hpp \ @@ -437,6 +542,7 @@ nobase_include_HEADERS = \ asio/local/datagram_protocol.hpp \ asio/local/detail/endpoint.hpp \ asio/local/detail/impl/endpoint.ipp \ + asio/local/seq_packet_protocol.hpp \ asio/local/stream_protocol.hpp \ asio/multiple_exceptions.hpp \ asio/packaged_task.hpp \ @@ -448,15 +554,21 @@ nobase_include_HEADERS = \ asio/posix/stream_descriptor.hpp \ asio/post.hpp \ asio/prefer.hpp \ + asio/prepend.hpp \ asio/query.hpp \ + asio/random_access_file.hpp \ asio/read_at.hpp \ asio/read.hpp \ asio/read_until.hpp \ + asio/readable_pipe.hpp \ + asio/recycling_allocator.hpp \ asio/redirect_error.hpp \ + asio/registered_buffer.hpp \ asio/require.hpp \ asio/require_concept.hpp \ asio/serial_port_base.hpp \ asio/serial_port.hpp \ + asio/signal_set_base.hpp \ asio/signal_set.hpp \ asio/socket_base.hpp \ asio/spawn.hpp \ @@ -494,6 +606,7 @@ nobase_include_HEADERS = \ asio/steady_timer.hpp \ asio/strand.hpp \ asio/streambuf.hpp \ + asio/stream_file.hpp \ asio/system_context.hpp \ asio/system_error.hpp \ asio/system_executor.hpp \ @@ -556,6 +669,7 @@ nobase_include_HEADERS = \ asio/windows/overlapped_ptr.hpp \ asio/windows/random_access_handle.hpp \ asio/windows/stream_handle.hpp \ + asio/writable_pipe.hpp \ asio/write_at.hpp \ asio/write.hpp \ asio/yield.hpp diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp index 345aec71e..a973ab178 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -15,14 +15,25 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) +#include "asio/any_completion_executor.hpp" +#include "asio/any_completion_handler.hpp" +#include "asio/any_io_executor.hpp" +#include "asio/append.hpp" +#include "asio/as_tuple.hpp" #include "asio/associated_allocator.hpp" +#include "asio/associated_cancellation_slot.hpp" #include "asio/associated_executor.hpp" +#include "asio/associated_immediate_executor.hpp" +#include "asio/associator.hpp" #include "asio/async_result.hpp" #include "asio/awaitable.hpp" #include "asio/basic_datagram_socket.hpp" #include "asio/basic_deadline_timer.hpp" +#include "asio/basic_file.hpp" #include "asio/basic_io_object.hpp" +#include "asio/basic_random_access_file.hpp" #include "asio/basic_raw_socket.hpp" +#include "asio/basic_readable_pipe.hpp" #include "asio/basic_seq_packet_socket.hpp" #include "asio/basic_serial_port.hpp" #include "asio/basic_signal_set.hpp" @@ -30,11 +41,17 @@ #include "asio/basic_socket_acceptor.hpp" #include "asio/basic_socket_iostream.hpp" #include "asio/basic_socket_streambuf.hpp" +#include "asio/basic_stream_file.hpp" #include "asio/basic_stream_socket.hpp" #include "asio/basic_streambuf.hpp" #include "asio/basic_waitable_timer.hpp" +#include "asio/basic_writable_pipe.hpp" +#include "asio/bind_allocator.hpp" +#include "asio/bind_cancellation_slot.hpp" #include "asio/bind_executor.hpp" +#include "asio/bind_immediate_executor.hpp" #include "asio/buffer.hpp" +#include "asio/buffer_registration.hpp" #include "asio/buffered_read_stream_fwd.hpp" #include "asio/buffered_read_stream.hpp" #include "asio/buffered_stream_fwd.hpp" @@ -42,13 +59,19 @@ #include "asio/buffered_write_stream_fwd.hpp" #include "asio/buffered_write_stream.hpp" #include "asio/buffers_iterator.hpp" +#include "asio/cancellation_signal.hpp" +#include "asio/cancellation_state.hpp" +#include "asio/cancellation_type.hpp" #include "asio/co_spawn.hpp" #include "asio/completion_condition.hpp" #include "asio/compose.hpp" #include "asio/connect.hpp" +#include "asio/connect_pipe.hpp" +#include "asio/consign.hpp" #include "asio/coroutine.hpp" #include "asio/deadline_timer.hpp" #include "asio/defer.hpp" +#include "asio/deferred.hpp" #include "asio/detached.hpp" #include "asio/dispatch.hpp" #include "asio/error.hpp" @@ -84,6 +107,7 @@ #include "asio/execution_context.hpp" #include "asio/executor.hpp" #include "asio/executor_work_guard.hpp" +#include "asio/file_base.hpp" #include "asio/generic/basic_endpoint.hpp" #include "asio/generic/datagram_protocol.hpp" #include "asio/generic/raw_protocol.hpp" @@ -122,12 +146,14 @@ #include "asio/ip/unicast.hpp" #include "asio/ip/v6_only.hpp" #include "asio/is_applicable_property.hpp" +#include "asio/is_contiguous_iterator.hpp" #include "asio/is_executor.hpp" #include "asio/is_read_buffered.hpp" #include "asio/is_write_buffered.hpp" #include "asio/local/basic_endpoint.hpp" #include "asio/local/connect_pair.hpp" #include "asio/local/datagram_protocol.hpp" +#include "asio/local/seq_packet_protocol.hpp" #include "asio/local/stream_protocol.hpp" #include "asio/multiple_exceptions.hpp" #include "asio/packaged_task.hpp" @@ -139,20 +165,27 @@ #include "asio/posix/stream_descriptor.hpp" #include "asio/post.hpp" #include "asio/prefer.hpp" +#include "asio/prepend.hpp" #include "asio/query.hpp" +#include "asio/random_access_file.hpp" #include "asio/read.hpp" #include "asio/read_at.hpp" #include "asio/read_until.hpp" +#include "asio/readable_pipe.hpp" +#include "asio/recycling_allocator.hpp" #include "asio/redirect_error.hpp" +#include "asio/registered_buffer.hpp" #include "asio/require.hpp" #include "asio/require_concept.hpp" #include "asio/serial_port.hpp" #include "asio/serial_port_base.hpp" #include "asio/signal_set.hpp" +#include "asio/signal_set_base.hpp" #include "asio/socket_base.hpp" #include "asio/static_thread_pool.hpp" #include "asio/steady_timer.hpp" #include "asio/strand.hpp" +#include "asio/stream_file.hpp" #include "asio/streambuf.hpp" #include "asio/system_context.hpp" #include "asio/system_error.hpp" @@ -176,6 +209,7 @@ #include "asio/windows/overlapped_ptr.hpp" #include "asio/windows/random_access_handle.hpp" #include "asio/windows/stream_handle.hpp" +#include "asio/writable_pipe.hpp" #include "asio/write.hpp" #include "asio/write_at.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp new file mode 100644 index 000000000..420927cc1 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_executor.hpp @@ -0,0 +1,342 @@ +// +// any_completion_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ANY_COMPLETION_EXECUTOR_HPP +#define ASIO_ANY_COMPLETION_EXECUTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/executor.hpp" +#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/execution.hpp" +#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +#include "asio/detail/push_options.hpp" + +namespace asio { + +#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +typedef executor any_completion_executor; + +#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +/// Polymorphic executor type for use with I/O objects. +/** + * The @c any_completion_executor type is a polymorphic executor that supports + * the set of properties required for the execution of completion handlers. It + * is defined as the execution::any_executor class template parameterised as + * follows: + * @code execution::any_executor< + * execution::prefer_only, + * execution::prefer_only + * execution::prefer_only, + * execution::prefer_only + * > @endcode + */ +class any_completion_executor : +#if defined(GENERATING_DOCUMENTATION) + public execution::any_executor<...> +#else // defined(GENERATING_DOCUMENTATION) + public execution::any_executor< + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > +#endif // defined(GENERATING_DOCUMENTATION) +{ +public: +#if !defined(GENERATING_DOCUMENTATION) + typedef execution::any_executor< + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > base_type; + + typedef void supportable_properties_type( + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + ); +#endif // !defined(GENERATING_DOCUMENTATION) + + /// Default constructor. + ASIO_DECL any_completion_executor() ASIO_NOEXCEPT; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_completion_executor(nullptr_t) ASIO_NOEXCEPT; + + /// Copy constructor. + ASIO_DECL any_completion_executor( + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move constructor. + ASIO_DECL any_completion_executor( + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor( + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_completion_executor(std::nothrow_t, + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_completion_executor(std::nothrow_t, + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_completion_executor(std::nothrow_t, Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_completion_executor& operator=( + const any_completion_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move assignment operator. + ASIO_DECL any_completion_executor& operator=( + any_completion_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + ASIO_DECL any_completion_executor& operator=(nullptr_t); + + /// Destructor. + ASIO_DECL ~any_completion_executor(); + + /// Swap targets with another polymorphic wrapper. + ASIO_DECL void swap(any_completion_executor& other) ASIO_NOEXCEPT; + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::require and asio::prefer customisation points. + * + * For example: + * @code any_completion_executor ex = ...; + * auto ex2 = asio::require(ex, execution::relationship.fork); @endcode + */ + template + any_completion_executor require(const Property& p, + typename constraint< + traits::require_member::is_valid + >::type = 0) const + { + return static_cast(*this).require(p); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::prefer customisation point. + * + * For example: + * @code any_completion_executor ex = ...; + * auto ex2 = asio::prefer(ex, execution::relationship.fork); @endcode + */ + template + any_completion_executor prefer(const Property& p, + typename constraint< + traits::prefer_member::is_valid + >::type = 0) const + { + return static_cast(*this).prefer(p); + } +}; + +#if !defined(GENERATING_DOCUMENTATION) + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::outstanding_work_t::tracked_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::outstanding_work_t::untracked_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::relationship_t::fork_t&, int) const; + +template <> +ASIO_DECL any_completion_executor any_completion_executor::prefer( + const execution::relationship_t::continuation_t&, int) const; + +namespace traits { + +#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +template <> +struct equality_comparable +{ + static const bool is_valid = true; + static const bool is_noexcept = true; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +template +struct execute_member +{ + static const bool is_valid = true; + static const bool is_noexcept = false; + typedef void result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +template +struct query_member : + query_member +{ +}; + +#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +template +struct require_member : + require_member +{ + typedef any_completion_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +template +struct prefer_member : + prefer_member +{ + typedef any_completion_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +} // namespace traits + +#endif // !defined(GENERATING_DOCUMENTATION) + +#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#if defined(ASIO_HEADER_ONLY) \ + && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/impl/any_completion_executor.ipp" +#endif // defined(ASIO_HEADER_ONLY) + // && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +#endif // ASIO_ANY_COMPLETION_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp new file mode 100644 index 000000000..cd114537f --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_completion_handler.hpp @@ -0,0 +1,762 @@ +// +// any_completion_handler.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ANY_COMPLETION_HANDLER_HPP +#define ASIO_ANY_COMPLETION_HANDLER_HPP + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_MOVE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include +#include +#include +#include +#include "asio/any_completion_executor.hpp" +#include "asio/associated_allocator.hpp" +#include "asio/associated_cancellation_slot.hpp" +#include "asio/associated_executor.hpp" +#include "asio/cancellation_state.hpp" +#include "asio/recycling_allocator.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { +namespace detail { + +class any_completion_handler_impl_base +{ +public: + template + explicit any_completion_handler_impl_base(S&& slot) + : cancel_state_(ASIO_MOVE_CAST(S)(slot), enable_total_cancellation()) + { + } + + cancellation_slot get_cancellation_slot() const ASIO_NOEXCEPT + { + return cancel_state_.slot(); + } + +private: + cancellation_state cancel_state_; +}; + +template +class any_completion_handler_impl : + public any_completion_handler_impl_base +{ +public: + template + any_completion_handler_impl(S&& slot, H&& h) + : any_completion_handler_impl_base(ASIO_MOVE_CAST(S)(slot)), + handler_(ASIO_MOVE_CAST(H)(h)) + { + } + + struct uninit_deleter + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc; + + void operator()(any_completion_handler_impl* ptr) + { + std::allocator_traits::deallocate(alloc, ptr, 1); + } + }; + + struct deleter + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc; + + void operator()(any_completion_handler_impl* ptr) + { + std::allocator_traits::destroy(alloc, ptr); + std::allocator_traits::deallocate(alloc, ptr, 1); + } + }; + + template + static any_completion_handler_impl* create(S&& slot, H&& h) + { + uninit_deleter d{ + (get_associated_allocator)(h, + asio::recycling_allocator())}; + + std::unique_ptr uninit_ptr( + std::allocator_traits::allocate(d.alloc, 1), d); + + any_completion_handler_impl* ptr = + new (uninit_ptr.get()) any_completion_handler_impl( + ASIO_MOVE_CAST(S)(slot), ASIO_MOVE_CAST(H)(h)); + + uninit_ptr.release(); + return ptr; + } + + void destroy() + { + deleter d{ + (get_associated_allocator)(handler_, + asio::recycling_allocator())}; + + d(this); + } + + any_completion_executor executor( + const any_completion_executor& candidate) const ASIO_NOEXCEPT + { + return any_completion_executor(std::nothrow, + (get_associated_executor)(handler_, candidate)); + } + + void* allocate(std::size_t size, std::size_t align) const + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc( + (get_associated_allocator)(handler_, + asio::recycling_allocator())); + + std::size_t space = size + align - 1; + unsigned char* base = + std::allocator_traits::allocate( + alloc, space + sizeof(std::ptrdiff_t)); + + void* p = base; + if (detail::align(align, size, p, space)) + { + std::ptrdiff_t off = static_cast(p) - base; + std::memcpy(static_cast(p) + size, &off, sizeof(off)); + return p; + } + + std::bad_alloc ex; + asio::detail::throw_exception(ex); + return nullptr; + } + + void deallocate(void* p, std::size_t size, std::size_t align) const + { + if (p) + { + typename std::allocator_traits< + associated_allocator_t>>::template + rebind_alloc alloc( + (get_associated_allocator)(handler_, + asio::recycling_allocator())); + + std::ptrdiff_t off; + std::memcpy(&off, static_cast(p) + size, sizeof(off)); + unsigned char* base = static_cast(p) - off; + + std::allocator_traits::deallocate( + alloc, base, size + align -1 + sizeof(std::ptrdiff_t)); + } + } + + template + void call(Args&&... args) + { + deleter d{ + (get_associated_allocator)(handler_, + asio::recycling_allocator())}; + + std::unique_ptr ptr(this, d); + Handler handler(ASIO_MOVE_CAST(Handler)(handler_)); + ptr.reset(); + + ASIO_MOVE_CAST(Handler)(handler)( + ASIO_MOVE_CAST(Args)(args)...); + } + +private: + Handler handler_; +}; + +template +class any_completion_handler_call_fn; + +template +class any_completion_handler_call_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*, Args...); + + constexpr any_completion_handler_call_fn(type fn) + : call_fn_(fn) + { + } + + void call(any_completion_handler_impl_base* impl, Args... args) const + { + call_fn_(impl, ASIO_MOVE_CAST(Args)(args)...); + } + + template + static void impl(any_completion_handler_impl_base* impl, Args... args) + { + static_cast*>(impl)->call( + ASIO_MOVE_CAST(Args)(args)...); + } + +private: + type call_fn_; +}; + +template +class any_completion_handler_call_fns; + +template +class any_completion_handler_call_fns : + public any_completion_handler_call_fn +{ +public: + using any_completion_handler_call_fn< + Signature>::any_completion_handler_call_fn; + using any_completion_handler_call_fn::call; +}; + +template +class any_completion_handler_call_fns : + public any_completion_handler_call_fn, + public any_completion_handler_call_fns +{ +public: + template + constexpr any_completion_handler_call_fns(CallFn fn, CallFns... fns) + : any_completion_handler_call_fn(fn), + any_completion_handler_call_fns(fns...) + { + } + + using any_completion_handler_call_fn::call; + using any_completion_handler_call_fns::call; +}; + +class any_completion_handler_destroy_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*); + + constexpr any_completion_handler_destroy_fn(type fn) + : destroy_fn_(fn) + { + } + + void destroy(any_completion_handler_impl_base* impl) const + { + destroy_fn_(impl); + } + + template + static void impl(any_completion_handler_impl_base* impl) + { + static_cast*>(impl)->destroy(); + } + +private: + type destroy_fn_; +}; + +class any_completion_handler_executor_fn +{ +public: + using type = any_completion_executor(*)( + any_completion_handler_impl_base*, const any_completion_executor&); + + constexpr any_completion_handler_executor_fn(type fn) + : executor_fn_(fn) + { + } + + any_completion_executor executor(any_completion_handler_impl_base* impl, + const any_completion_executor& candidate) const + { + return executor_fn_(impl, candidate); + } + + template + static any_completion_executor impl(any_completion_handler_impl_base* impl, + const any_completion_executor& candidate) + { + return static_cast*>(impl)->executor( + candidate); + } + +private: + type executor_fn_; +}; + +class any_completion_handler_allocate_fn +{ +public: + using type = void*(*)(any_completion_handler_impl_base*, + std::size_t, std::size_t); + + constexpr any_completion_handler_allocate_fn(type fn) + : allocate_fn_(fn) + { + } + + void* allocate(any_completion_handler_impl_base* impl, + std::size_t size, std::size_t align) const + { + return allocate_fn_(impl, size, align); + } + + template + static void* impl(any_completion_handler_impl_base* impl, + std::size_t size, std::size_t align) + { + return static_cast*>(impl)->allocate( + size, align); + } + +private: + type allocate_fn_; +}; + +class any_completion_handler_deallocate_fn +{ +public: + using type = void(*)(any_completion_handler_impl_base*, + void*, std::size_t, std::size_t); + + constexpr any_completion_handler_deallocate_fn(type fn) + : deallocate_fn_(fn) + { + } + + void deallocate(any_completion_handler_impl_base* impl, + void* p, std::size_t size, std::size_t align) const + { + deallocate_fn_(impl, p, size, align); + } + + template + static void impl(any_completion_handler_impl_base* impl, + void* p, std::size_t size, std::size_t align) + { + static_cast*>(impl)->deallocate( + p, size, align); + } + +private: + type deallocate_fn_; +}; + +template +class any_completion_handler_fn_table + : private any_completion_handler_destroy_fn, + private any_completion_handler_executor_fn, + private any_completion_handler_allocate_fn, + private any_completion_handler_deallocate_fn, + private any_completion_handler_call_fns +{ +public: + template + constexpr any_completion_handler_fn_table( + any_completion_handler_destroy_fn::type destroy_fn, + any_completion_handler_executor_fn::type executor_fn, + any_completion_handler_allocate_fn::type allocate_fn, + any_completion_handler_deallocate_fn::type deallocate_fn, + CallFns... call_fns) + : any_completion_handler_destroy_fn(destroy_fn), + any_completion_handler_executor_fn(executor_fn), + any_completion_handler_allocate_fn(allocate_fn), + any_completion_handler_deallocate_fn(deallocate_fn), + any_completion_handler_call_fns(call_fns...) + { + } + + using any_completion_handler_destroy_fn::destroy; + using any_completion_handler_executor_fn::executor; + using any_completion_handler_allocate_fn::allocate; + using any_completion_handler_deallocate_fn::deallocate; + using any_completion_handler_call_fns::call; +}; + +template +struct any_completion_handler_fn_table_instance +{ + static constexpr any_completion_handler_fn_table + value = any_completion_handler_fn_table( + &any_completion_handler_destroy_fn::impl, + &any_completion_handler_executor_fn::impl, + &any_completion_handler_allocate_fn::impl, + &any_completion_handler_deallocate_fn::impl, + &any_completion_handler_call_fn::template impl...); +}; + +template +constexpr any_completion_handler_fn_table +any_completion_handler_fn_table_instance::value; + +} // namespace detail + +template +class any_completion_handler; + +/// An allocator type that forwards memory allocation operations through an +/// instance of @c any_completion_handler. +template +class any_completion_handler_allocator +{ +private: + template + friend class any_completion_handler; + + template + friend class any_completion_handler_allocator; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; + + constexpr any_completion_handler_allocator(int, + const any_completion_handler& h) ASIO_NOEXCEPT + : fn_table_(h.fn_table_), + impl_(h.impl_) + { + } + +public: + /// The type of objects that may be allocated by the allocator. + typedef T value_type; + + /// Rebinds an allocator to another value type. + template + struct rebind + { + /// Specifies the type of the rebound allocator. + typedef any_completion_handler_allocator other; + }; + + /// Construct from another @c any_completion_handler_allocator. + template + constexpr any_completion_handler_allocator( + const any_completion_handler_allocator& a) + ASIO_NOEXCEPT + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ != other.fn_table_ || impl_ != other.impl_; + } + + /// Allocate space for @c n objects of the allocator's value type. + T* allocate(std::size_t n) const + { + return static_cast( + fn_table_->allocate( + impl_, sizeof(T) * n, alignof(T))); + } + + /// Deallocate space for @c n objects of the allocator's value type. + void deallocate(T* p, std::size_t n) const + { + fn_table_->deallocate(impl_, p, sizeof(T) * n, alignof(T)); + } +}; + +/// A protoco-allocator type that may be rebound to obtain an allocator that +/// forwards memory allocation operations through an instance of +/// @c any_completion_handler. +template +class any_completion_handler_allocator +{ +private: + template + friend class any_completion_handler; + + template + friend class any_completion_handler_allocator; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; + + constexpr any_completion_handler_allocator(int, + const any_completion_handler& h) ASIO_NOEXCEPT + : fn_table_(h.fn_table_), + impl_(h.impl_) + { + } + +public: + /// @c void as no objects can be allocated through a proto-allocator. + typedef void value_type; + + /// Rebinds an allocator to another value type. + template + struct rebind + { + /// Specifies the type of the rebound allocator. + typedef any_completion_handler_allocator other; + }; + + /// Construct from another @c any_completion_handler_allocator. + template + constexpr any_completion_handler_allocator( + const any_completion_handler_allocator& a) + ASIO_NOEXCEPT + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const ASIO_NOEXCEPT + { + return fn_table_ != other.fn_table_ || impl_ != other.impl_; + } +}; + +/// Polymorphic wrapper for completion handlers. +/** + * The @c any_completion_handler class template is a polymorphic wrapper for + * completion handlers that propagates the associated executor, associated + * allocator, and associated cancellation slot through a type-erasing interface. + * + * When using @c any_completion_handler, specify one or more completion + * signatures as template parameters. These will dictate the arguments that may + * be passed to the handler through the polymorphic interface. + * + * Typical uses for @c any_completion_handler include: + * + * @li Separate compilation of asynchronous operation implementations. + * + * @li Enabling interoperability between asynchronous operations and virtual + * functions. + */ +template +class any_completion_handler +{ +#if !defined(GENERATING_DOCUMENTATION) +private: + template + friend class any_completion_handler_allocator; + + template + friend struct associated_executor; + + const detail::any_completion_handler_fn_table* fn_table_; + detail::any_completion_handler_impl_base* impl_; +#endif // !defined(GENERATING_DOCUMENTATION) + +public: + /// The associated allocator type. + using allocator_type = any_completion_handler_allocator; + + /// The associated cancellation slot type. + using cancellation_slot_type = cancellation_slot; + + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. + constexpr any_completion_handler() + : fn_table_(nullptr), + impl_(nullptr) + { + } + + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. + constexpr any_completion_handler(nullptr_t) + : fn_table_(nullptr), + impl_(nullptr) + { + } + + /// Construct an @c any_completion_handler to contain the specified target. + template ::type> + any_completion_handler(H&& h, + typename constraint< + !is_same::type, any_completion_handler>::value + >::type = 0) + : fn_table_( + &detail::any_completion_handler_fn_table_instance< + Handler, Signatures...>::value), + impl_(detail::any_completion_handler_impl::create( + (get_associated_cancellation_slot)(h), ASIO_MOVE_CAST(H)(h))) + { + } + + /// Move-construct an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ + any_completion_handler(any_completion_handler&& other) ASIO_NOEXCEPT + : fn_table_(other.fn_table_), + impl_(other.impl_) + { + other.fn_table_ = nullptr; + other.impl_ = nullptr; + } + + /// Move-assign an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ + any_completion_handler& operator=( + any_completion_handler&& other) ASIO_NOEXCEPT + { + any_completion_handler( + ASIO_MOVE_CAST(any_completion_handler)(other)).swap(*this); + return *this; + } + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + any_completion_handler& operator=(nullptr_t) ASIO_NOEXCEPT + { + any_completion_handler().swap(*this); + return *this; + } + + /// Destructor. + ~any_completion_handler() + { + if (impl_) + fn_table_->destroy(impl_); + } + + /// Test if the polymorphic wrapper is empty. + constexpr explicit operator bool() const ASIO_NOEXCEPT + { + return impl_ != nullptr; + } + + /// Test if the polymorphic wrapper is non-empty. + constexpr bool operator!() const ASIO_NOEXCEPT + { + return impl_ == nullptr; + } + + /// Swap the content of an @c any_completion_handler with another. + void swap(any_completion_handler& other) ASIO_NOEXCEPT + { + std::swap(fn_table_, other.fn_table_); + std::swap(impl_, other.impl_); + } + + /// Get the associated allocator. + allocator_type get_allocator() const ASIO_NOEXCEPT + { + return allocator_type(0, *this); + } + + /// Get the associated cancellation slot. + cancellation_slot_type get_cancellation_slot() const ASIO_NOEXCEPT + { + return impl_->get_cancellation_slot(); + } + + /// Function call operator. + /** + * Invokes target completion handler with the supplied arguments. + * + * This function may only be called once, as the target handler is moved from. + * The polymorphic wrapper is left in an empty state. + * + * Throws @c std::bad_function_call if the polymorphic wrapper is empty. + */ + template + auto operator()(Args&&... args) + -> decltype(fn_table_->call(impl_, ASIO_MOVE_CAST(Args)(args)...)) + { + if (detail::any_completion_handler_impl_base* impl = impl_) + { + impl_ = nullptr; + return fn_table_->call(impl, ASIO_MOVE_CAST(Args)(args)...); + } + std::bad_function_call ex; + asio::detail::throw_exception(ex); + } + + /// Equality operator. + friend constexpr bool operator==( + const any_completion_handler& a, nullptr_t) ASIO_NOEXCEPT + { + return a.impl_ == nullptr; + } + + /// Equality operator. + friend constexpr bool operator==( + nullptr_t, const any_completion_handler& b) ASIO_NOEXCEPT + { + return nullptr == b.impl_; + } + + /// Inequality operator. + friend constexpr bool operator!=( + const any_completion_handler& a, nullptr_t) ASIO_NOEXCEPT + { + return a.impl_ != nullptr; + } + + /// Inequality operator. + friend constexpr bool operator!=( + nullptr_t, const any_completion_handler& b) ASIO_NOEXCEPT + { + return nullptr != b.impl_; + } +}; + +template +struct associated_executor, Candidate> +{ + using type = any_completion_executor; + + static type get(const any_completion_handler& handler, + const Candidate& candidate = Candidate()) ASIO_NOEXCEPT + { + return handler.fn_table_->executor(handler.impl_, + any_completion_executor(std::nothrow, candidate)); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_MOVE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_ANY_COMPLETION_HANDLER_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp index 3a4d13b6c..7a77c90d1 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/any_io_executor.hpp @@ -2,7 +2,7 @@ // any_io_executor.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -48,19 +48,301 @@ typedef executor any_io_executor; * execution::prefer_only * > @endcode */ +class any_io_executor : #if defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor<...> any_io_executor; + public execution::any_executor<...> #else // defined(GENERATING_DOCUMENTATION) -typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > any_io_executor; + public execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > #endif // defined(GENERATING_DOCUMENTATION) +{ +public: +#if !defined(GENERATING_DOCUMENTATION) + typedef execution::any_executor< + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + > base_type; + + typedef void supportable_properties_type( + execution::context_as_t, + execution::blocking_t::never_t, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only, + execution::prefer_only + ); +#endif // !defined(GENERATING_DOCUMENTATION) + + /// Default constructor. + ASIO_DECL any_io_executor() ASIO_NOEXCEPT; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_io_executor(nullptr_t) ASIO_NOEXCEPT; + + /// Copy constructor. + ASIO_DECL any_io_executor(const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move constructor. + ASIO_DECL any_io_executor(any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, + execution::any_executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, OtherAnyExecutor e, + typename constraint< + conditional< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_io_executor(std::nothrow_t, + const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_io_executor(std::nothrow_t, + any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) + : base_type(ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Construct a polymorphic wrapper for the specified executor. +#if defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, Executor e); +#else // defined(GENERATING_DOCUMENTATION) + template + any_io_executor(std::nothrow_t, Executor e, + typename constraint< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : base_type(std::nothrow, ASIO_MOVE_CAST(Executor)(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_io_executor& operator=( + const any_io_executor& e) ASIO_NOEXCEPT; + +#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move assignment operator. + ASIO_DECL any_io_executor& operator=( + any_io_executor&& e) ASIO_NOEXCEPT; +#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + ASIO_DECL any_io_executor& operator=(nullptr_t); + + /// Destructor. + ASIO_DECL ~any_io_executor(); + + /// Swap targets with another polymorphic wrapper. + ASIO_DECL void swap(any_io_executor& other) ASIO_NOEXCEPT; + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::require and asio::prefer customisation points. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = asio::require(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor require(const Property& p, + typename constraint< + traits::require_member::is_valid + >::type = 0) const + { + return static_cast(*this).require(p); + } + + /// Obtain a polymorphic wrapper with the specified property. + /** + * Do not call this function directly. It is intended for use with the + * asio::prefer customisation point. + * + * For example: + * @code any_io_executor ex = ...; + * auto ex2 = asio::prefer(ex, execution::blocking.possibly); @endcode + */ + template + any_io_executor prefer(const Property& p, + typename constraint< + traits::prefer_member::is_valid + >::type = 0) const + { + return static_cast(*this).prefer(p); + } +}; + +#if !defined(GENERATING_DOCUMENTATION) + +template <> +ASIO_DECL any_io_executor any_io_executor::require( + const execution::blocking_t::never_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::blocking_t::possibly_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::outstanding_work_t::tracked_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::outstanding_work_t::untracked_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::relationship_t::fork_t&, int) const; + +template <> +ASIO_DECL any_io_executor any_io_executor::prefer( + const execution::relationship_t::continuation_t&, int) const; + +namespace traits { + +#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +template <> +struct equality_comparable +{ + static const bool is_valid = true; + static const bool is_noexcept = true; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +template +struct execute_member +{ + static const bool is_valid = true; + static const bool is_noexcept = false; + typedef void result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +template +struct query_member : + query_member +{ +}; + +#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +template +struct require_member : + require_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) + +#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +template +struct prefer_member : + prefer_member +{ + typedef any_io_executor result_type; +}; + +#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) + +} // namespace traits + +#endif // !defined(GENERATING_DOCUMENTATION) #endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) @@ -68,4 +350,10 @@ typedef execution::any_executor< #include "asio/detail/pop_options.hpp" +#if defined(ASIO_HEADER_ONLY) \ + && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) +# include "asio/impl/any_io_executor.ipp" +#endif // defined(ASIO_HEADER_ONLY) + // && !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + #endif // ASIO_ANY_IO_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp new file mode 100644 index 000000000..9ac4a9504 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/append.hpp @@ -0,0 +1,78 @@ +// +// append.hpp +// ~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_APPEND_HPP +#define ASIO_APPEND_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// Completion token type used to specify that the completion handler +/// arguments should be passed additional values after the results of the +/// operation. +template +class append_t +{ +public: + /// Constructor. + template + ASIO_CONSTEXPR explicit append_t( + ASIO_MOVE_ARG(T) completion_token, + ASIO_MOVE_ARG(V)... values) + : token_(ASIO_MOVE_CAST(T)(completion_token)), + values_(ASIO_MOVE_CAST(V)(values)...) + { + } + +//private: + CompletionToken token_; + std::tuple values_; +}; + +/// Completion token type used to specify that the completion handler +/// arguments should be passed additional values after the results of the +/// operation. +template +ASIO_NODISCARD inline ASIO_CONSTEXPR append_t< + typename decay::type, typename decay::type...> +append(ASIO_MOVE_ARG(CompletionToken) completion_token, + ASIO_MOVE_ARG(Values)... values) +{ + return append_t< + typename decay::type, typename decay::type...>( + ASIO_MOVE_CAST(CompletionToken)(completion_token), + ASIO_MOVE_CAST(Values)(values)...); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/append.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_APPEND_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp new file mode 100644 index 000000000..96ac47c82 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/as_tuple.hpp @@ -0,0 +1,139 @@ +// +// as_tuple.hpp +// ~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_AS_TUPLE_HPP +#define ASIO_AS_TUPLE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#if (defined(ASIO_HAS_STD_TUPLE) \ + && defined(ASIO_HAS_VARIADIC_TEMPLATES)) \ + || defined(GENERATING_DOCUMENTATION) + +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// A @ref completion_token adapter used to specify that the completion handler +/// arguments should be combined into a single tuple argument. +/** + * The as_tuple_t class is used to indicate that any arguments to the + * completion handler should be combined and passed as a single tuple argument. + * The arguments are first moved into a @c std::tuple and that tuple is then + * passed to the completion handler. + */ +template +class as_tuple_t +{ +public: + /// Tag type used to prevent the "default" constructor from being used for + /// conversions. + struct default_constructor_tag {}; + + /// Default constructor. + /** + * This constructor is only valid if the underlying completion token is + * default constructible and move constructible. The underlying completion + * token is itself defaulted as an argument to allow it to capture a source + * location. + */ + ASIO_CONSTEXPR as_tuple_t( + default_constructor_tag = default_constructor_tag(), + CompletionToken token = CompletionToken()) + : token_(ASIO_MOVE_CAST(CompletionToken)(token)) + { + } + + /// Constructor. + template + ASIO_CONSTEXPR explicit as_tuple_t( + ASIO_MOVE_ARG(T) completion_token) + : token_(ASIO_MOVE_CAST(T)(completion_token)) + { + } + + /// Adapts an executor to add the @c as_tuple_t completion token as the + /// default. + template + struct executor_with_default : InnerExecutor + { + /// Specify @c as_tuple_t as the default completion token type. + typedef as_tuple_t default_completion_token_type; + + /// Construct the adapted executor from the inner executor type. + template + executor_with_default(const InnerExecutor1& ex, + typename constraint< + conditional< + !is_same::value, + is_convertible, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : InnerExecutor(ex) + { + } + }; + + /// Type alias to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. +#if defined(ASIO_HAS_ALIAS_TEMPLATES) \ + || defined(GENERATING_DOCUMENTATION) + template + using as_default_on_t = typename T::template rebind_executor< + executor_with_default >::other; +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + // || defined(GENERATING_DOCUMENTATION) + + /// Function helper to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. + template + static typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other + as_default_on(ASIO_MOVE_ARG(T) object) + { + return typename decay::type::template rebind_executor< + executor_with_default::type::executor_type> + >::other(ASIO_MOVE_CAST(T)(object)); + } + +//private: + CompletionToken token_; +}; + +/// Adapt a @ref completion_token to specify that the completion handler +/// arguments should be combined into a single tuple argument. +template +ASIO_NODISCARD inline +ASIO_CONSTEXPR as_tuple_t::type> +as_tuple(ASIO_MOVE_ARG(CompletionToken) completion_token) +{ + return as_tuple_t::type>( + ASIO_MOVE_CAST(CompletionToken)(completion_token)); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/as_tuple.hpp" + +#endif // (defined(ASIO_HAS_STD_TUPLE) + // && defined(ASIO_HAS_VARIADIC_TEMPLATES)) + // || defined(GENERATING_DOCUMENTATION) + +#endif // ASIO_AS_TUPLE_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp index 14d76b623..8e864673c 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_allocator.hpp @@ -2,7 +2,7 @@ // associated_allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,36 +17,81 @@ #include "asio/detail/config.hpp" #include +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" #include "asio/detail/type_traits.hpp" #include "asio/detail/push_options.hpp" namespace asio { + +template +struct associated_allocator; + namespace detail { -template +template +struct has_allocator_type : false_type +{ +}; + +template +struct has_allocator_type::type> + : true_type +{ +}; + +template struct associated_allocator_impl { - typedef E type; + typedef void asio_associated_allocator_is_unspecialised; + + typedef A type; + + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } - static type get(const T&, const E& e) ASIO_NOEXCEPT + static const type& get(const T&, const A& a) ASIO_NOEXCEPT { - return e; + return a; } }; -template -struct associated_allocator_impl +struct associated_allocator_impl::type> { typedef typename T::allocator_type type; - static type get(const T& t, const E&) ASIO_NOEXCEPT + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) + { + return t.get_allocator(); + } + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const A&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) { return t.get_allocator(); } }; +template +struct associated_allocator_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + } // namespace detail /// Traits type used to obtain the allocator associated with an object. @@ -63,29 +108,32 @@ struct associated_allocator_impl > struct associated_allocator +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_allocator_impl +#endif // !defined(GENERATING_DOCUMENTATION) { +#if defined(GENERATING_DOCUMENTATION) /// If @c T has a nested type @c allocator_type, T::allocator_type. /// Otherwise @c Allocator. -#if defined(GENERATING_DOCUMENTATION) typedef see_below type; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::associated_allocator_impl::type type; -#endif // defined(GENERATING_DOCUMENTATION) + + /// If @c T has a nested type @c allocator_type, returns + /// t.get_allocator(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; /// If @c T has a nested type @c allocator_type, returns /// t.get_allocator(). Otherwise returns @c a. - static type get(const T& t, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return detail::associated_allocator_impl::get(t, a); - } + static decltype(auto) get(const T& t, const Allocator& a) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) }; /// Helper function to obtain an object's associated allocator. @@ -93,7 +141,7 @@ struct associated_allocator * @returns associated_allocator::get(t) */ template -inline typename associated_allocator::type +ASIO_NODISCARD inline typename associated_allocator::type get_associated_allocator(const T& t) ASIO_NOEXCEPT { return associated_allocator::get(t); @@ -104,8 +152,11 @@ get_associated_allocator(const T& t) ASIO_NOEXCEPT * @returns associated_allocator::get(t, a) */ template -inline typename associated_allocator::type +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_allocator::type) get_associated_allocator(const T& t, const Allocator& a) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_allocator::get(t, a))) { return associated_allocator::get(t, a); } @@ -118,6 +169,63 @@ using associated_allocator_t #endif // defined(ASIO_HAS_ALIAS_TEMPLATES) +namespace detail { + +template +struct associated_allocator_forwarding_base +{ +}; + +template +struct associated_allocator_forwarding_base::asio_associated_allocator_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_allocator_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_allocator for @c std::reference_wrapper. +template +struct associated_allocator, Allocator> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_allocator_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_allocator::type type; + + /// Forwards the request to get the allocator to the associator specialisation + /// for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_allocator::get(t.get()); + } + + /// Forwards the request to get the allocator to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Allocator& a) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_allocator::get(t.get(), a))) + { + return associated_allocator::get(t.get(), a); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + } // namespace asio #include "asio/detail/pop_options.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp new file mode 100644 index 000000000..65d82b646 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_cancellation_slot.hpp @@ -0,0 +1,238 @@ +// +// associated_cancellation_slot.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP +#define ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/cancellation_signal.hpp" +#include "asio/detail/functional.hpp" +#include "asio/detail/type_traits.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +template +struct associated_cancellation_slot; + +namespace detail { + +template +struct has_cancellation_slot_type : false_type +{ +}; + +template +struct has_cancellation_slot_type::type> + : true_type +{ +}; + +template +struct associated_cancellation_slot_impl +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; + + typedef S type; + + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } + + static const type& get(const T&, const S& s) ASIO_NOEXCEPT + { + return s; + } +}; + +template +struct associated_cancellation_slot_impl::type> +{ + typedef typename T::cancellation_slot_type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + { + return t.get_cancellation_slot(); + } + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const S&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + { + return t.get_cancellation_slot(); + } +}; + +template +struct associated_cancellation_slot_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the cancellation_slot associated with an object. +/** + * A program may specialise this traits type if the @c T template parameter in + * the specialisation is a user-defined type. The template parameter @c + * CancellationSlot shall be a type meeting the CancellationSlot requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c s is an object of type @c + * CancellationSlot. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * CancellationSlot requirements. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t) and with return type @c type or a (possibly const) reference to @c + * type. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t,s) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template +struct associated_cancellation_slot +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_cancellation_slot_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c cancellation_slot_type, + /// T::cancellation_slot_type. Otherwise + /// @c CancellationSlot. + typedef see_below type; + + /// If @c T has a nested type @c cancellation_slot_type, returns + /// t.get_cancellation_slot(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; + + /// If @c T has a nested type @c cancellation_slot_type, returns + /// t.get_cancellation_slot(). Otherwise returns @c s. + static decltype(auto) get(const T& t, + const CancellationSlot& s) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated cancellation_slot. +/** + * @returns associated_cancellation_slot::get(t) + */ +template +ASIO_NODISCARD inline typename associated_cancellation_slot::type +get_associated_cancellation_slot(const T& t) ASIO_NOEXCEPT +{ + return associated_cancellation_slot::get(t); +} + +/// Helper function to obtain an object's associated cancellation_slot. +/** + * @returns associated_cancellation_slot::get(t, st) + */ +template +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_cancellation_slot::type) +get_associated_cancellation_slot(const T& t, + const CancellationSlot& st) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_cancellation_slot::get(t, st))) +{ + return associated_cancellation_slot::get(t, st); +} + +#if defined(ASIO_HAS_ALIAS_TEMPLATES) + +template +using associated_cancellation_slot_t = + typename associated_cancellation_slot::type; + +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + +namespace detail { + +template +struct associated_cancellation_slot_forwarding_base +{ +}; + +template +struct associated_cancellation_slot_forwarding_base::asio_associated_cancellation_slot_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_cancellation_slot for @c +/// std::reference_wrapper. +template +struct associated_cancellation_slot, CancellationSlot> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_cancellation_slot_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_cancellation_slot::type type; + + /// Forwards the request to get the cancellation slot to the associator + /// specialisation for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_cancellation_slot::get(t.get()); + } + + /// Forwards the request to get the cancellation slot to the associator + /// specialisation for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(reference_wrapper t, + const CancellationSlot& s) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_cancellation_slot::get(t.get(), s))) + { + return associated_cancellation_slot::get(t.get(), s); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp index e1792466f..92279891d 100644 --- a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_executor.hpp @@ -2,7 +2,7 @@ // associated_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,8 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" #include "asio/detail/type_traits.hpp" #include "asio/execution/executor.hpp" #include "asio/is_executor.hpp" @@ -24,16 +26,37 @@ #include "asio/detail/push_options.hpp" namespace asio { + +template +struct associated_executor; + namespace detail { -template +template +struct has_executor_type : false_type +{ +}; + +template +struct has_executor_type::type> + : true_type +{ +}; + +template struct associated_executor_impl { typedef void asio_associated_executor_is_unspecialised; typedef E type; - static type get(const T&, const E& e = E()) ASIO_NOEXCEPT + static type get(const T&) ASIO_NOEXCEPT + { + return type(); + } + + static const type& get(const T&, const E& e) ASIO_NOEXCEPT { return e; } @@ -45,12 +68,32 @@ struct associated_executor_impl +struct associated_executor_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + } // namespace detail /// Traits type used to obtain the executor associated with an object. @@ -67,10 +110,12 @@ struct associated_executor_impl struct associated_executor @@ -83,10 +128,13 @@ struct associated_executor /// Otherwise @c Executor. typedef see_below type; + /// If @c T has a nested type @c executor_type, returns + /// t.get_executor(). Otherwise returns @c type(). + static decltype(auto) get(const T& t) ASIO_NOEXCEPT; + /// If @c T has a nested type @c executor_type, returns /// t.get_executor(). Otherwise returns @c ex. - static type get(const T& t, - const Executor& ex = Executor()) ASIO_NOEXCEPT; + static decltype(auto) get(const T& t, const Executor& ex) ASIO_NOEXCEPT; #endif // defined(GENERATING_DOCUMENTATION) }; @@ -95,7 +143,7 @@ struct associated_executor * @returns associated_executor::get(t) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline typename associated_executor::type get_associated_executor(const T& t) ASIO_NOEXCEPT { return associated_executor::get(t); @@ -106,11 +154,14 @@ get_associated_executor(const T& t) ASIO_NOEXCEPT * @returns associated_executor::get(t, ex) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_executor::type) get_associated_executor(const T& t, const Executor& ex, - typename enable_if< + typename constraint< is_executor::value || execution::is_executor::value - >::type* = 0) ASIO_NOEXCEPT + >::type = 0) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_executor::get(t, ex))) { return associated_executor::get(t, ex); } @@ -121,11 +172,11 @@ get_associated_executor(const T& t, const Executor& ex, * ExecutionContext::executor_type>::get(t, ctx.get_executor()) */ template -inline typename associated_executor::type +ASIO_NODISCARD inline typename associated_executor::type get_associated_executor(const T& t, ExecutionContext& ctx, - typename enable_if::value>::type* = 0) ASIO_NOEXCEPT + typename constraint::value>::type = 0) ASIO_NOEXCEPT { return associated_executor::get(t, ctx.get_executor()); @@ -159,6 +210,42 @@ struct associated_executor_forwarding_base +struct associated_executor, Executor> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_executor_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_executor::type type; + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static type get(reference_wrapper t) ASIO_NOEXCEPT + { + return associated_executor::get(t.get()); + } + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Executor& ex) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_executor::get(t.get(), ex))) + { + return associated_executor::get(t.get(), ex); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + } // namespace asio #include "asio/detail/pop_options.hpp" diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp new file mode 100644 index 000000000..54bced17a --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associated_immediate_executor.hpp @@ -0,0 +1,297 @@ +// +// associated_immediate_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP +#define ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" +#include "asio/associator.hpp" +#include "asio/detail/functional.hpp" +#include "asio/detail/type_traits.hpp" +#include "asio/execution/blocking.hpp" +#include "asio/execution/executor.hpp" +#include "asio/execution_context.hpp" +#include "asio/is_executor.hpp" +#include "asio/require.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +template +struct associated_immediate_executor; + +namespace detail { + +template +struct has_immediate_executor_type : false_type +{ +}; + +template +struct has_immediate_executor_type::type> + : true_type +{ +}; + +template +struct default_immediate_executor +{ + typedef typename require_result::type type; + + static type get(const E& e) ASIO_NOEXCEPT + { + return asio::require(e, execution::blocking.never); + } +}; + +template +struct default_immediate_executor::value + >::type, + typename enable_if< + is_executor::value + >::type> +{ + class type : public E + { + public: + template + explicit type(const Executor1& e, + typename constraint< + conditional< + !is_same::value, + is_convertible, + false_type + >::type::value + >::type = 0) ASIO_NOEXCEPT + : E(e) + { + } + + type(const type& other) ASIO_NOEXCEPT + : E(static_cast(other)) + { + } + +#if defined(ASIO_HAS_MOVE) + type(type&& other) ASIO_NOEXCEPT + : E(ASIO_MOVE_CAST(E)(other)) + { + } +#endif // defined(ASIO_HAS_MOVE) + + template + void dispatch(ASIO_MOVE_ARG(Function) f, const Allocator& a) const + { + this->post(ASIO_MOVE_CAST(Function)(f), a); + } + + friend bool operator==(const type& a, const type& b) ASIO_NOEXCEPT + { + return static_cast(a) == static_cast(b); + } + + friend bool operator!=(const type& a, const type& b) ASIO_NOEXCEPT + { + return static_cast(a) != static_cast(b); + } + }; + + static type get(const E& e) ASIO_NOEXCEPT + { + return type(e); + } +}; + +template +struct associated_immediate_executor_impl +{ + typedef void asio_associated_immediate_executor_is_unspecialised; + + typedef typename default_immediate_executor::type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T&, const E& e) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((default_immediate_executor::get(e))) + { + return default_immediate_executor::get(e); + } +}; + +template +struct associated_immediate_executor_impl::type> +{ + typedef typename T::immediate_executor_type type; + + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + const T& t, const E&) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_immediate_executor())) + { + return t.get_immediate_executor(); + } +}; + +template +struct associated_immediate_executor_impl::value + >::type, + typename void_type< + typename associator::type + >::type> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the immediate executor associated with an object. +/** + * A program may specialise this traits type if the @c T template parameter in + * the specialisation is a user-defined type. The template parameter @c + * Executor shall be a type meeting the Executor requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c e is an object of type @c + * Executor. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * Executor requirements. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t) and with return type @c type or a (possibly const) reference to @c + * type. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t,e) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template +struct associated_immediate_executor +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c immediate_executor_type, + // T::immediate_executor_type. Otherwise @c Executor. + typedef see_below type; + + /// If @c T has a nested type @c immediate_executor_type, returns + /// t.get_immediate_executor(). Otherwise returns + /// asio::require(ex, asio::execution::blocking.never). + static decltype(auto) get(const T& t, const Executor& ex) ASIO_NOEXCEPT; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ex) + */ +template +ASIO_NODISCARD inline ASIO_AUTO_RETURN_TYPE_PREFIX2( + typename associated_immediate_executor::type) +get_associated_immediate_executor(const T& t, const Executor& ex, + typename constraint< + is_executor::value || execution::is_executor::value + >::type = 0) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_immediate_executor::get(t, ex))) +{ + return associated_immediate_executor::get(t, ex); +} + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ctx.get_executor()) + */ +template +ASIO_NODISCARD inline typename associated_immediate_executor::type +get_associated_immediate_executor(const T& t, ExecutionContext& ctx, + typename constraint::value>::type = 0) ASIO_NOEXCEPT +{ + return associated_immediate_executor::get(t, ctx.get_executor()); +} + +#if defined(ASIO_HAS_ALIAS_TEMPLATES) + +template +using associated_immediate_executor_t = + typename associated_immediate_executor::type; + +#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) + +namespace detail { + +template +struct associated_immediate_executor_forwarding_base +{ +}; + +template +struct associated_immediate_executor_forwarding_base::asio_associated_immediate_executor_is_unspecialised, + void + >::value + >::type> +{ + typedef void asio_associated_immediate_executor_is_unspecialised; +}; + +} // namespace detail + +#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ + || defined(GENERATING_DOCUMENTATION) + +/// Specialisation of associated_immediate_executor for +/// @c std::reference_wrapper. +template +struct associated_immediate_executor, Executor> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_immediate_executor::type type; + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( + reference_wrapper t, const Executor& ex) ASIO_NOEXCEPT + ASIO_AUTO_RETURN_TYPE_SUFFIX(( + associated_immediate_executor::get(t.get(), ex))) + { + return associated_immediate_executor::get(t.get(), ex); + } +}; + +#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) + // || defined(GENERATING_DOCUMENTATION) + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP diff --git a/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp b/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp new file mode 100644 index 000000000..e954c4428 --- /dev/null +++ b/tidal-link/link/modules/asio-standalone/asio/include/asio/associator.hpp @@ -0,0 +1,35 @@ +// +// associator.hpp +// ~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef ASIO_ASSOCIATOR_HPP +#define ASIO_ASSOCIATOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include "asio/detail/config.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +/// Used to generically specialise associators for a type. +template