From 3d73d445fb9eeb42b485181fc745b4d7d374b21b Mon Sep 17 00:00:00 2001 From: tqcq <99722391+tqcq@users.noreply.github.com> Date: Wed, 15 May 2024 16:47:26 +0800 Subject: [PATCH 1/5] feat add asio --- 3party/asio/CMakeLists.txt | 6 + 3party/asio/include/Makefile.am | 626 +++ 3party/asio/include/Makefile.in | 1164 +++++ 3party/asio/include/asio.hpp | 199 + .../include/asio/any_completion_executor.hpp | 336 ++ .../include/asio/any_completion_handler.hpp | 822 ++++ 3party/asio/include/asio/any_io_executor.hpp | 351 ++ 3party/asio/include/asio/append.hpp | 65 + 3party/asio/include/asio/as_tuple.hpp | 126 + .../include/asio/associated_allocator.hpp | 214 + .../asio/associated_cancellation_slot.hpp | 221 + .../asio/include/asio/associated_executor.hpp | 235 + .../asio/associated_immediate_executor.hpp | 280 ++ 3party/asio/include/asio/associator.hpp | 35 + 3party/asio/include/asio/async_result.hpp | 942 ++++ 3party/asio/include/asio/awaitable.hpp | 142 + .../include/asio/basic_datagram_socket.hpp | 1362 ++++++ .../include/asio/basic_deadline_timer.hpp | 710 +++ 3party/asio/include/asio/basic_file.hpp | 824 ++++ 3party/asio/include/asio/basic_io_object.hpp | 286 ++ .../include/asio/basic_random_access_file.hpp | 689 +++ 3party/asio/include/asio/basic_raw_socket.hpp | 1356 ++++++ .../asio/include/asio/basic_readable_pipe.hpp | 626 +++ .../include/asio/basic_seq_packet_socket.hpp | 823 ++++ .../asio/include/asio/basic_serial_port.hpp | 987 ++++ 3party/asio/include/asio/basic_signal_set.hpp | 648 +++ 3party/asio/include/asio/basic_socket.hpp | 1936 ++++++++ .../include/asio/basic_socket_acceptor.hpp | 2708 +++++++++++ .../include/asio/basic_socket_iostream.hpp | 331 ++ .../include/asio/basic_socket_streambuf.hpp | 642 +++ .../asio/include/asio/basic_stream_file.hpp | 744 +++ .../asio/include/asio/basic_stream_socket.hpp | 1163 +++++ 3party/asio/include/asio/basic_streambuf.hpp | 450 ++ .../asio/include/asio/basic_streambuf_fwd.hpp | 36 + .../include/asio/basic_waitable_timer.hpp | 824 ++++ .../asio/include/asio/basic_writable_pipe.hpp | 622 +++ 3party/asio/include/asio/bind_allocator.hpp | 530 +++ .../include/asio/bind_cancellation_slot.hpp | 544 +++ 3party/asio/include/asio/bind_executor.hpp | 582 +++ .../include/asio/bind_immediate_executor.hpp | 549 +++ 3party/asio/include/asio/buffer.hpp | 2751 +++++++++++ .../asio/include/asio/buffer_registration.hpp | 318 ++ .../include/asio/buffered_read_stream.hpp | 273 ++ .../include/asio/buffered_read_stream_fwd.hpp | 25 + 3party/asio/include/asio/buffered_stream.hpp | 292 ++ .../asio/include/asio/buffered_stream_fwd.hpp | 25 + .../include/asio/buffered_write_stream.hpp | 265 ++ .../asio/buffered_write_stream_fwd.hpp | 25 + 3party/asio/include/asio/buffers_iterator.hpp | 521 +++ .../asio/include/asio/cancellation_signal.hpp | 245 + .../asio/include/asio/cancellation_state.hpp | 235 + .../asio/include/asio/cancellation_type.hpp | 157 + 3party/asio/include/asio/co_spawn.hpp | 523 +++ .../include/asio/completion_condition.hpp | 218 + 3party/asio/include/asio/compose.hpp | 319 ++ 3party/asio/include/asio/connect.hpp | 1180 +++++ 3party/asio/include/asio/connect_pipe.hpp | 83 + 3party/asio/include/asio/consign.hpp | 75 + 3party/asio/include/asio/coroutine.hpp | 329 ++ 3party/asio/include/asio/deadline_timer.hpp | 38 + 3party/asio/include/asio/defer.hpp | 218 + 3party/asio/include/asio/deferred.hpp | 715 +++ 3party/asio/include/asio/detached.hpp | 105 + 3party/asio/include/asio/detail/array.hpp | 30 + 3party/asio/include/asio/detail/array_fwd.hpp | 32 + 3party/asio/include/asio/detail/assert.hpp | 32 + .../asio/include/asio/detail/atomic_count.hpp | 59 + .../detail/base_from_cancellation_state.hpp | 164 + .../asio/detail/base_from_completion_cond.hpp | 69 + .../asio/include/asio/detail/bind_handler.hpp | 711 +++ .../asio/detail/blocking_executor_op.hpp | 107 + .../asio/detail/buffer_resize_guard.hpp | 66 + .../asio/detail/buffer_sequence_adapter.hpp | 837 ++++ .../asio/detail/buffered_stream_storage.hpp | 126 + .../asio/include/asio/detail/call_stack.hpp | 125 + 3party/asio/include/asio/detail/chrono.hpp | 45 + .../asio/detail/chrono_time_traits.hpp | 190 + .../asio/detail/completion_handler.hpp | 88 + .../include/asio/detail/composed_work.hpp | 252 + .../include/asio/detail/concurrency_hint.hpp | 94 + .../detail/conditionally_enabled_event.hpp | 120 + .../detail/conditionally_enabled_mutex.hpp | 149 + 3party/asio/include/asio/detail/config.hpp | 1422 ++++++ .../include/asio/detail/consuming_buffers.hpp | 443 ++ 3party/asio/include/asio/detail/cstddef.hpp | 27 + 3party/asio/include/asio/detail/cstdint.hpp | 40 + .../include/asio/detail/date_time_fwd.hpp | 34 + .../asio/detail/deadline_timer_service.hpp | 335 ++ .../include/asio/detail/dependent_type.hpp | 36 + .../include/asio/detail/descriptor_ops.hpp | 179 + .../asio/detail/descriptor_read_op.hpp | 188 + .../asio/detail/descriptor_write_op.hpp | 187 + .../include/asio/detail/dev_poll_reactor.hpp | 247 + .../include/asio/detail/epoll_reactor.hpp | 295 ++ 3party/asio/include/asio/detail/event.hpp | 46 + .../detail/eventfd_select_interrupter.hpp | 83 + 3party/asio/include/asio/detail/exception.hpp | 29 + .../include/asio/detail/executor_function.hpp | 152 + .../asio/include/asio/detail/executor_op.hpp | 84 + .../include/asio/detail/fd_set_adapter.hpp | 39 + .../asio/include/asio/detail/fenced_block.hpp | 40 + .../asio/include/asio/detail/functional.hpp | 33 + 3party/asio/include/asio/detail/future.hpp | 32 + 3party/asio/include/asio/detail/global.hpp | 50 + .../asio/detail/handler_alloc_helpers.hpp | 225 + .../asio/detail/handler_cont_helpers.hpp | 45 + .../include/asio/detail/handler_tracking.hpp | 264 ++ .../asio/detail/handler_type_requirements.hpp | 553 +++ .../asio/include/asio/detail/handler_work.hpp | 511 +++ 3party/asio/include/asio/detail/hash_map.hpp | 331 ++ .../detail/impl/buffer_sequence_adapter.ipp | 118 + .../asio/detail/impl/descriptor_ops.ipp | 991 ++++ .../asio/detail/impl/dev_poll_reactor.hpp | 111 + .../asio/detail/impl/dev_poll_reactor.ipp | 469 ++ .../asio/detail/impl/epoll_reactor.hpp | 109 + .../asio/detail/impl/epoll_reactor.ipp | 826 ++++ .../impl/eventfd_select_interrupter.ipp | 171 + .../asio/detail/impl/handler_tracking.ipp | 398 ++ .../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 | 914 ++++ .../impl/io_uring_socket_service_base.ipp | 249 + .../asio/detail/impl/kqueue_reactor.hpp | 113 + .../asio/detail/impl/kqueue_reactor.ipp | 608 +++ .../include/asio/detail/impl/null_event.ipp | 74 + .../detail/impl/pipe_select_interrupter.ipp | 129 + .../include/asio/detail/impl/posix_event.ipp | 63 + .../include/asio/detail/impl/posix_mutex.ipp | 46 + .../detail/impl/posix_serial_port_service.ipp | 168 + .../include/asio/detail/impl/posix_thread.ipp | 84 + .../asio/detail/impl/posix_tss_ptr.ipp | 46 + .../impl/reactive_descriptor_service.ipp | 230 + .../impl/reactive_socket_service_base.ipp | 310 ++ .../detail/impl/resolver_service_base.ipp | 158 + .../include/asio/detail/impl/scheduler.ipp | 675 +++ .../asio/detail/impl/select_reactor.hpp | 124 + .../asio/detail/impl/select_reactor.ipp | 400 ++ .../asio/detail/impl/service_registry.hpp | 93 + .../asio/detail/impl/service_registry.ipp | 197 + .../asio/detail/impl/signal_set_service.ipp | 826 ++++ .../include/asio/detail/impl/socket_ops.ipp | 4035 +++++++++++++++++ .../detail/impl/socket_select_interrupter.ipp | 185 + .../detail/impl/strand_executor_service.hpp | 346 ++ .../detail/impl/strand_executor_service.ipp | 158 + .../asio/detail/impl/strand_service.hpp | 86 + .../asio/detail/impl/strand_service.ipp | 202 + .../asio/detail/impl/thread_context.ipp | 35 + .../include/asio/detail/impl/throw_error.ipp | 49 + .../asio/detail/impl/timer_queue_ptime.ipp | 97 + .../asio/detail/impl/timer_queue_set.ipp | 101 + .../include/asio/detail/impl/win_event.ipp | 76 + .../detail/impl/win_iocp_file_service.ipp | 280 ++ .../detail/impl/win_iocp_handle_service.ipp | 619 +++ .../asio/detail/impl/win_iocp_io_context.hpp | 119 + .../asio/detail/impl/win_iocp_io_context.ipp | 614 +++ .../impl/win_iocp_serial_port_service.ipp | 200 + .../impl/win_iocp_socket_service_base.ipp | 821 ++++ .../include/asio/detail/impl/win_mutex.ipp | 84 + .../detail/impl/win_object_handle_service.ipp | 452 ++ .../asio/detail/impl/win_static_mutex.ipp | 136 + .../include/asio/detail/impl/win_thread.ipp | 150 + .../include/asio/detail/impl/win_tss_ptr.ipp | 57 + .../impl/winrt_ssocket_service_base.ipp | 626 +++ .../detail/impl/winrt_timer_scheduler.hpp | 92 + .../detail/impl/winrt_timer_scheduler.ipp | 121 + .../include/asio/detail/impl/winsock_init.ipp | 82 + .../include/asio/detail/initiate_defer.hpp | 207 + .../include/asio/detail/initiate_dispatch.hpp | 193 + .../include/asio/detail/initiate_post.hpp | 207 + .../asio/include/asio/detail/io_control.hpp | 84 + .../include/asio/detail/io_object_impl.hpp | 177 + .../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 | 114 + .../asio/detail/io_uring_operation.hpp | 84 + .../include/asio/detail/io_uring_service.hpp | 319 ++ .../asio/detail/io_uring_socket_accept_op.hpp | 280 ++ .../detail/io_uring_socket_connect_op.hpp | 140 + .../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 | 629 +++ .../detail/io_uring_socket_service_base.hpp | 663 +++ .../include/asio/detail/io_uring_wait_op.hpp | 112 + .../asio/detail/is_buffer_sequence.hpp | 296 ++ .../asio/include/asio/detail/is_executor.hpp | 126 + .../include/asio/detail/keyword_tss_ptr.hpp | 70 + .../include/asio/detail/kqueue_reactor.hpp | 271 ++ 3party/asio/include/asio/detail/limits.hpp | 21 + .../asio/detail/local_free_on_block_exit.hpp | 59 + 3party/asio/include/asio/detail/memory.hpp | 126 + 3party/asio/include/asio/detail/mutex.hpp | 46 + .../include/asio/detail/non_const_lvalue.hpp | 43 + .../asio/include/asio/detail/noncopyable.hpp | 43 + .../asio/include/asio/detail/null_event.hpp | 106 + .../include/asio/detail/null_fenced_block.hpp | 47 + .../asio/include/asio/detail/null_global.hpp | 59 + .../asio/include/asio/detail/null_mutex.hpp | 60 + .../asio/include/asio/detail/null_reactor.hpp | 83 + .../asio/detail/null_signal_blocker.hpp | 69 + .../asio/detail/null_socket_service.hpp | 519 +++ .../include/asio/detail/null_static_mutex.hpp | 60 + .../asio/include/asio/detail/null_thread.hpp | 67 + .../asio/include/asio/detail/null_tss_ptr.hpp | 68 + .../asio/include/asio/detail/object_pool.hpp | 171 + .../asio/detail/old_win_sdk_compat.hpp | 214 + 3party/asio/include/asio/detail/op_queue.hpp | 162 + 3party/asio/include/asio/detail/operation.hpp | 38 + .../asio/detail/pipe_select_interrupter.hpp | 89 + .../asio/include/asio/detail/pop_options.hpp | 157 + .../asio/include/asio/detail/posix_event.hpp | 175 + .../asio/detail/posix_fd_set_adapter.hpp | 118 + .../asio/include/asio/detail/posix_global.hpp | 80 + .../asio/include/asio/detail/posix_mutex.hpp | 76 + .../asio/detail/posix_serial_port_service.hpp | 249 + .../asio/detail/posix_signal_blocker.hpp | 85 + .../asio/detail/posix_static_mutex.hpp | 64 + .../asio/include/asio/detail/posix_thread.hpp | 109 + .../include/asio/detail/posix_tss_ptr.hpp | 79 + .../asio/include/asio/detail/push_options.hpp | 228 + .../detail/reactive_descriptor_service.hpp | 566 +++ .../asio/detail/reactive_null_buffers_op.hpp | 131 + .../asio/detail/reactive_socket_accept_op.hpp | 323 ++ .../detail/reactive_socket_connect_op.hpp | 162 + .../asio/detail/reactive_socket_recv_op.hpp | 197 + .../detail/reactive_socket_recvfrom_op.hpp | 203 + .../detail/reactive_socket_recvmsg_op.hpp | 184 + .../asio/detail/reactive_socket_send_op.hpp | 201 + .../asio/detail/reactive_socket_sendto_op.hpp | 194 + .../asio/detail/reactive_socket_service.hpp | 633 +++ .../detail/reactive_socket_service_base.hpp | 750 +++ .../include/asio/detail/reactive_wait_op.hpp | 131 + 3party/asio/include/asio/detail/reactor.hpp | 54 + .../asio/include/asio/detail/reactor_op.hpp | 71 + .../include/asio/detail/reactor_op_queue.hpp | 212 + .../asio/detail/recycling_allocator.hpp | 105 + 3party/asio/include/asio/detail/regex_fwd.hpp | 35 + .../asio/detail/resolve_endpoint_op.hpp | 140 + .../asio/include/asio/detail/resolve_op.hpp | 45 + .../include/asio/detail/resolve_query_op.hpp | 150 + .../include/asio/detail/resolver_service.hpp | 147 + .../asio/detail/resolver_service_base.hpp | 158 + 3party/asio/include/asio/detail/scheduler.hpp | 241 + .../asio/detail/scheduler_operation.hpp | 78 + .../include/asio/detail/scheduler_task.hpp | 49 + .../asio/detail/scheduler_thread_info.hpp | 40 + .../asio/include/asio/detail/scoped_lock.hpp | 101 + .../asio/include/asio/detail/scoped_ptr.hpp | 87 + .../asio/detail/select_interrupter.hpp | 46 + .../include/asio/detail/select_reactor.hpp | 291 ++ .../include/asio/detail/service_registry.hpp | 163 + .../include/asio/detail/signal_blocker.hpp | 44 + .../include/asio/detail/signal_handler.hpp | 90 + .../asio/include/asio/detail/signal_init.hpp | 47 + 3party/asio/include/asio/detail/signal_op.hpp | 53 + .../asio/detail/signal_set_service.hpp | 292 ++ .../include/asio/detail/socket_holder.hpp | 98 + .../asio/include/asio/detail/socket_ops.hpp | 375 ++ .../include/asio/detail/socket_option.hpp | 316 ++ .../asio/detail/socket_select_interrupter.hpp | 91 + .../asio/include/asio/detail/socket_types.hpp | 427 ++ .../include/asio/detail/source_location.hpp | 45 + .../asio/include/asio/detail/static_mutex.hpp | 50 + 3party/asio/include/asio/detail/std_event.hpp | 183 + .../include/asio/detail/std_fenced_block.hpp | 57 + .../asio/include/asio/detail/std_global.hpp | 65 + 3party/asio/include/asio/detail/std_mutex.hpp | 68 + .../include/asio/detail/std_static_mutex.hpp | 76 + .../asio/include/asio/detail/std_thread.hpp | 66 + .../asio/detail/strand_executor_service.hpp | 173 + .../include/asio/detail/strand_service.hpp | 144 + .../asio/include/asio/detail/string_view.hpp | 47 + 3party/asio/include/asio/detail/thread.hpp | 58 + .../include/asio/detail/thread_context.hpp | 51 + .../asio/include/asio/detail/thread_group.hpp | 99 + .../include/asio/detail/thread_info_base.hpp | 250 + .../asio/include/asio/detail/throw_error.hpp | 62 + .../include/asio/detail/throw_exception.hpp | 55 + .../asio/include/asio/detail/timer_queue.hpp | 389 ++ .../include/asio/detail/timer_queue_base.hpp | 68 + .../include/asio/detail/timer_queue_ptime.hpp | 103 + .../include/asio/detail/timer_queue_set.hpp | 66 + .../include/asio/detail/timer_scheduler.hpp | 37 + .../asio/detail/timer_scheduler_fwd.hpp | 42 + 3party/asio/include/asio/detail/tss_ptr.hpp | 69 + .../asio/include/asio/detail/type_traits.hpp | 178 + 3party/asio/include/asio/detail/utility.hpp | 83 + .../asio/include/asio/detail/wait_handler.hpp | 90 + 3party/asio/include/asio/detail/wait_op.hpp | 49 + 3party/asio/include/asio/detail/win_event.hpp | 164 + .../asio/detail/win_fd_set_adapter.hpp | 149 + .../asio/include/asio/detail/win_global.hpp | 71 + .../asio/detail/win_iocp_file_service.hpp | 287 ++ .../asio/detail/win_iocp_handle_read_op.hpp | 119 + .../asio/detail/win_iocp_handle_service.hpp | 431 ++ .../asio/detail/win_iocp_handle_write_op.hpp | 114 + .../asio/detail/win_iocp_io_context.hpp | 347 ++ .../asio/detail/win_iocp_null_buffers_op.hpp | 129 + .../asio/detail/win_iocp_operation.hpp | 96 + .../asio/detail/win_iocp_overlapped_op.hpp | 100 + .../asio/detail/win_iocp_overlapped_ptr.hpp | 171 + .../detail/win_iocp_serial_port_service.hpp | 233 + .../asio/detail/win_iocp_socket_accept_op.hpp | 339 ++ .../detail/win_iocp_socket_connect_op.hpp | 138 + .../asio/detail/win_iocp_socket_recv_op.hpp | 126 + .../detail/win_iocp_socket_recvfrom_op.hpp | 135 + .../detail/win_iocp_socket_recvmsg_op.hpp | 127 + .../asio/detail/win_iocp_socket_send_op.hpp | 120 + .../asio/detail/win_iocp_socket_service.hpp | 680 +++ .../detail/win_iocp_socket_service_base.hpp | 829 ++++ .../asio/detail/win_iocp_thread_info.hpp | 34 + .../include/asio/detail/win_iocp_wait_op.hpp | 130 + 3party/asio/include/asio/detail/win_mutex.hpp | 78 + .../asio/detail/win_object_handle_service.hpp | 194 + .../include/asio/detail/win_static_mutex.hpp | 74 + .../asio/include/asio/detail/win_thread.hpp | 147 + .../asio/include/asio/detail/win_tss_ptr.hpp | 79 + .../include/asio/detail/winapp_thread.hpp | 124 + .../asio/include/asio/detail/wince_thread.hpp | 124 + .../asio/detail/winrt_async_manager.hpp | 305 ++ .../include/asio/detail/winrt_async_op.hpp | 65 + .../include/asio/detail/winrt_resolve_op.hpp | 125 + .../asio/detail/winrt_resolver_service.hpp | 212 + .../asio/detail/winrt_socket_connect_op.hpp | 98 + .../asio/detail/winrt_socket_recv_op.hpp | 119 + .../asio/detail/winrt_socket_send_op.hpp | 110 + .../asio/detail/winrt_ssocket_service.hpp | 250 + .../detail/winrt_ssocket_service_base.hpp | 362 ++ .../asio/detail/winrt_timer_scheduler.hpp | 147 + .../asio/include/asio/detail/winrt_utils.hpp | 106 + .../asio/include/asio/detail/winsock_init.hpp | 128 + .../include/asio/detail/work_dispatcher.hpp | 143 + .../include/asio/detail/wrapped_handler.hpp | 217 + 3party/asio/include/asio/dispatch.hpp | 197 + 3party/asio/include/asio/error.hpp | 389 ++ 3party/asio/include/asio/error_code.hpp | 39 + 3party/asio/include/asio/execution.hpp | 33 + .../asio/include/asio/execution/allocator.hpp | 278 ++ .../include/asio/execution/any_executor.hpp | 1933 ++++++++ .../include/asio/execution/bad_executor.hpp | 46 + .../asio/include/asio/execution/blocking.hpp | 1360 ++++++ .../asio/execution/blocking_adaptation.hpp | 1080 +++++ .../asio/include/asio/execution/context.hpp | 191 + .../include/asio/execution/context_as.hpp | 190 + .../asio/include/asio/execution/executor.hpp | 116 + .../asio/execution/impl/bad_executor.ipp | 40 + .../asio/execution/invocable_archetype.hpp | 43 + .../asio/include/asio/execution/mapping.hpp | 1002 ++++ .../asio/include/asio/execution/occupancy.hpp | 184 + .../asio/execution/outstanding_work.hpp | 753 +++ .../include/asio/execution/prefer_only.hpp | 328 ++ .../include/asio/execution/relationship.hpp | 751 +++ .../asio/include/asio/execution_context.hpp | 388 ++ 3party/asio/include/asio/executor.hpp | 363 ++ .../asio/include/asio/executor_work_guard.hpp | 362 ++ .../asio/include/asio/experimental/append.hpp | 36 + .../include/asio/experimental/as_single.hpp | 132 + .../include/asio/experimental/as_tuple.hpp | 36 + .../asio/experimental/awaitable_operators.hpp | 536 +++ .../asio/experimental/basic_channel.hpp | 513 +++ .../experimental/basic_concurrent_channel.hpp | 513 +++ .../experimental/cancellation_condition.hpp | 152 + .../include/asio/experimental/channel.hpp | 70 + .../asio/experimental/channel_error.hpp | 82 + .../asio/experimental/channel_traits.hpp | 301 ++ .../include/asio/experimental/co_composed.hpp | 145 + .../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 | 77 + .../experimental/detail/channel_message.hpp | 129 + .../experimental/detail/channel_operation.hpp | 361 ++ .../experimental/detail/channel_payload.hpp | 222 + .../detail/channel_receive_op.hpp | 127 + .../detail/channel_send_functions.hpp | 192 + .../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 | 621 +++ .../experimental/detail/partial_promise.hpp | 197 + .../asio/experimental/impl/as_single.hpp | 176 + .../asio/experimental/impl/channel_error.ipp | 61 + .../asio/experimental/impl/co_composed.hpp | 1174 +++++ .../include/asio/experimental/impl/coro.hpp | 1222 +++++ .../asio/experimental/impl/parallel_group.hpp | 788 ++++ .../asio/experimental/impl/promise.hpp | 255 ++ .../asio/experimental/impl/use_coro.hpp | 214 + .../asio/experimental/impl/use_promise.hpp | 66 + .../asio/experimental/parallel_group.hpp | 457 ++ .../include/asio/experimental/prepend.hpp | 36 + .../include/asio/experimental/promise.hpp | 224 + .../include/asio/experimental/use_coro.hpp | 189 + .../include/asio/experimental/use_promise.hpp | 111 + 3party/asio/include/asio/file_base.hpp | 166 + .../include/asio/generic/basic_endpoint.hpp | 189 + .../asio/generic/datagram_protocol.hpp | 123 + .../include/asio/generic/detail/endpoint.hpp | 133 + .../asio/generic/detail/impl/endpoint.ipp | 110 + .../include/asio/generic/raw_protocol.hpp | 121 + .../asio/generic/seq_packet_protocol.hpp | 122 + .../include/asio/generic/stream_protocol.hpp | 127 + .../asio/handler_continuation_hook.hpp | 54 + .../include/asio/high_resolution_timer.hpp | 39 + .../asio/impl/any_completion_executor.ipp | 126 + .../include/asio/impl/any_io_executor.ipp | 134 + 3party/asio/include/asio/impl/append.hpp | 162 + 3party/asio/include/asio/impl/as_tuple.hpp | 245 + 3party/asio/include/asio/impl/awaitable.hpp | 1196 +++++ .../asio/impl/buffered_read_stream.hpp | 404 ++ .../asio/impl/buffered_write_stream.hpp | 384 ++ .../include/asio/impl/cancellation_signal.ipp | 96 + 3party/asio/include/asio/impl/co_spawn.hpp | 449 ++ 3party/asio/include/asio/impl/connect.hpp | 809 ++++ .../asio/include/asio/impl/connect_pipe.hpp | 73 + .../asio/include/asio/impl/connect_pipe.ipp | 149 + 3party/asio/include/asio/impl/consign.hpp | 137 + 3party/asio/include/asio/impl/deferred.hpp | 147 + 3party/asio/include/asio/impl/detached.hpp | 77 + 3party/asio/include/asio/impl/error.ipp | 128 + 3party/asio/include/asio/impl/error_code.ipp | 206 + .../include/asio/impl/execution_context.hpp | 77 + .../include/asio/impl/execution_context.ipp | 82 + 3party/asio/include/asio/impl/executor.hpp | 317 ++ 3party/asio/include/asio/impl/executor.ipp | 43 + 3party/asio/include/asio/impl/io_context.hpp | 433 ++ 3party/asio/include/asio/impl/io_context.ipp | 176 + .../include/asio/impl/multiple_exceptions.ipp | 45 + 3party/asio/include/asio/impl/prepend.hpp | 163 + 3party/asio/include/asio/impl/read.hpp | 1053 +++++ 3party/asio/include/asio/impl/read_at.hpp | 628 +++ 3party/asio/include/asio/impl/read_until.hpp | 2941 ++++++++++++ .../asio/include/asio/impl/redirect_error.hpp | 250 + .../include/asio/impl/serial_port_base.hpp | 59 + .../include/asio/impl/serial_port_base.ipp | 554 +++ 3party/asio/include/asio/impl/spawn.hpp | 1400 ++++++ 3party/asio/include/asio/impl/src.hpp | 94 + .../asio/include/asio/impl/system_context.hpp | 34 + .../asio/include/asio/impl/system_context.ipp | 92 + .../include/asio/impl/system_executor.hpp | 179 + 3party/asio/include/asio/impl/thread_pool.hpp | 277 ++ 3party/asio/include/asio/impl/thread_pool.ipp | 142 + .../asio/include/asio/impl/use_awaitable.hpp | 301 ++ 3party/asio/include/asio/impl/use_future.hpp | 707 +++ 3party/asio/include/asio/impl/write.hpp | 939 ++++ 3party/asio/include/asio/impl/write_at.hpp | 551 +++ 3party/asio/include/asio/io_context.hpp | 1505 ++++++ .../asio/include/asio/io_context_strand.hpp | 396 ++ 3party/asio/include/asio/io_service.hpp | 33 + .../asio/include/asio/io_service_strand.hpp | 20 + 3party/asio/include/asio/ip/address.hpp | 281 ++ 3party/asio/include/asio/ip/address_v4.hpp | 421 ++ .../include/asio/ip/address_v4_iterator.hpp | 156 + .../asio/include/asio/ip/address_v4_range.hpp | 128 + 3party/asio/include/asio/ip/address_v6.hpp | 407 ++ .../include/asio/ip/address_v6_iterator.hpp | 178 + .../asio/include/asio/ip/address_v6_range.hpp | 124 + .../asio/include/asio/ip/bad_address_cast.hpp | 63 + .../asio/include/asio/ip/basic_endpoint.hpp | 282 ++ .../asio/include/asio/ip/basic_resolver.hpp | 1112 +++++ .../include/asio/ip/basic_resolver_entry.hpp | 113 + .../asio/ip/basic_resolver_iterator.hpp | 188 + .../include/asio/ip/basic_resolver_query.hpp | 260 ++ .../asio/ip/basic_resolver_results.hpp | 307 ++ .../asio/include/asio/ip/detail/endpoint.hpp | 141 + .../include/asio/ip/detail/impl/endpoint.ipp | 195 + .../include/asio/ip/detail/socket_option.hpp | 566 +++ 3party/asio/include/asio/ip/host_name.hpp | 42 + 3party/asio/include/asio/ip/icmp.hpp | 115 + 3party/asio/include/asio/ip/impl/address.hpp | 67 + 3party/asio/include/asio/ip/impl/address.ipp | 235 + .../asio/include/asio/ip/impl/address_v4.hpp | 67 + .../asio/include/asio/ip/impl/address_v4.ipp | 206 + .../asio/include/asio/ip/impl/address_v6.hpp | 67 + .../asio/include/asio/ip/impl/address_v6.ipp | 342 ++ .../include/asio/ip/impl/basic_endpoint.hpp | 43 + .../asio/include/asio/ip/impl/host_name.ipp | 54 + .../asio/include/asio/ip/impl/network_v4.hpp | 54 + .../asio/include/asio/ip/impl/network_v4.ipp | 218 + .../asio/include/asio/ip/impl/network_v6.hpp | 53 + .../asio/include/asio/ip/impl/network_v6.ipp | 187 + 3party/asio/include/asio/ip/multicast.hpp | 191 + 3party/asio/include/asio/ip/network_v4.hpp | 257 ++ 3party/asio/include/asio/ip/network_v6.hpp | 231 + 3party/asio/include/asio/ip/resolver_base.hpp | 129 + .../include/asio/ip/resolver_query_base.hpp | 43 + 3party/asio/include/asio/ip/tcp.hpp | 155 + 3party/asio/include/asio/ip/udp.hpp | 111 + 3party/asio/include/asio/ip/unicast.hpp | 70 + 3party/asio/include/asio/ip/v6_only.hpp | 69 + .../include/asio/is_applicable_property.hpp | 61 + .../include/asio/is_contiguous_iterator.hpp | 45 + 3party/asio/include/asio/is_executor.hpp | 46 + 3party/asio/include/asio/is_read_buffered.hpp | 59 + .../asio/include/asio/is_write_buffered.hpp | 59 + .../include/asio/local/basic_endpoint.hpp | 243 + .../asio/include/asio/local/connect_pair.hpp | 101 + .../include/asio/local/datagram_protocol.hpp | 80 + .../include/asio/local/detail/endpoint.hpp | 139 + .../asio/local/detail/impl/endpoint.ipp | 131 + .../asio/local/seq_packet_protocol.hpp | 84 + .../include/asio/local/stream_protocol.hpp | 90 + .../asio/include/asio/multiple_exceptions.hpp | 52 + 3party/asio/include/asio/packaged_task.hpp | 66 + 3party/asio/include/asio/placeholders.hpp | 75 + .../include/asio/posix/basic_descriptor.hpp | 773 ++++ .../asio/posix/basic_stream_descriptor.hpp | 559 +++ 3party/asio/include/asio/posix/descriptor.hpp | 37 + .../include/asio/posix/descriptor_base.hpp | 90 + .../include/asio/posix/stream_descriptor.hpp | 37 + 3party/asio/include/asio/post.hpp | 213 + 3party/asio/include/asio/prefer.hpp | 577 +++ 3party/asio/include/asio/prepend.hpp | 66 + 3party/asio/include/asio/query.hpp | 311 ++ .../asio/include/asio/random_access_file.hpp | 35 + 3party/asio/include/asio/read.hpp | 1448 ++++++ 3party/asio/include/asio/read_at.hpp | 778 ++++ 3party/asio/include/asio/read_until.hpp | 3124 +++++++++++++ 3party/asio/include/asio/readable_pipe.hpp | 35 + .../asio/include/asio/recycling_allocator.hpp | 138 + 3party/asio/include/asio/redirect_error.hpp | 64 + .../asio/include/asio/registered_buffer.hpp | 344 ++ 3party/asio/include/asio/require.hpp | 433 ++ 3party/asio/include/asio/require_concept.hpp | 343 ++ 3party/asio/include/asio/serial_port.hpp | 36 + 3party/asio/include/asio/serial_port_base.hpp | 167 + 3party/asio/include/asio/signal_set.hpp | 28 + 3party/asio/include/asio/signal_set_base.hpp | 171 + 3party/asio/include/asio/socket_base.hpp | 559 +++ 3party/asio/include/asio/spawn.hpp | 872 ++++ 3party/asio/include/asio/ssl.hpp | 28 + 3party/asio/include/asio/ssl/context.hpp | 762 ++++ 3party/asio/include/asio/ssl/context_base.hpp | 209 + .../asio/ssl/detail/buffered_handshake_op.hpp | 119 + .../asio/include/asio/ssl/detail/engine.hpp | 169 + .../include/asio/ssl/detail/handshake_op.hpp | 67 + .../include/asio/ssl/detail/impl/engine.ipp | 377 ++ .../asio/ssl/detail/impl/openssl_init.ipp | 169 + 3party/asio/include/asio/ssl/detail/io.hpp | 376 ++ .../include/asio/ssl/detail/openssl_init.hpp | 101 + .../include/asio/ssl/detail/openssl_types.hpp | 34 + .../asio/ssl/detail/password_callback.hpp | 66 + .../asio/include/asio/ssl/detail/read_op.hpp | 72 + .../include/asio/ssl/detail/shutdown_op.hpp | 69 + .../include/asio/ssl/detail/stream_core.hpp | 217 + .../asio/ssl/detail/verify_callback.hpp | 62 + .../asio/include/asio/ssl/detail/write_op.hpp | 76 + 3party/asio/include/asio/ssl/error.hpp | 123 + .../asio/ssl/host_name_verification.hpp | 90 + 3party/asio/include/asio/ssl/impl/context.hpp | 67 + 3party/asio/include/asio/ssl/impl/context.ipp | 1319 ++++++ 3party/asio/include/asio/ssl/impl/error.ipp | 124 + .../asio/ssl/impl/host_name_verification.ipp | 73 + .../asio/ssl/impl/rfc2818_verification.ipp | 164 + 3party/asio/include/asio/ssl/impl/src.hpp | 29 + .../include/asio/ssl/rfc2818_verification.hpp | 98 + 3party/asio/include/asio/ssl/stream.hpp | 1042 +++++ 3party/asio/include/asio/ssl/stream_base.hpp | 52 + .../asio/include/asio/ssl/verify_context.hpp | 67 + 3party/asio/include/asio/ssl/verify_mode.hpp | 63 + .../asio/include/asio/static_thread_pool.hpp | 31 + 3party/asio/include/asio/steady_timer.hpp | 37 + 3party/asio/include/asio/strand.hpp | 557 +++ 3party/asio/include/asio/stream_file.hpp | 35 + 3party/asio/include/asio/streambuf.hpp | 33 + 3party/asio/include/asio/system_context.hpp | 90 + 3party/asio/include/asio/system_error.hpp | 31 + 3party/asio/include/asio/system_executor.hpp | 671 +++ 3party/asio/include/asio/system_timer.hpp | 37 + 3party/asio/include/asio/this_coro.hpp | 267 ++ 3party/asio/include/asio/thread.hpp | 92 + 3party/asio/include/asio/thread_pool.hpp | 963 ++++ 3party/asio/include/asio/time_traits.hpp | 86 + .../asio/traits/equality_comparable.hpp | 100 + .../include/asio/traits/execute_member.hpp | 104 + .../asio/include/asio/traits/prefer_free.hpp | 104 + .../include/asio/traits/prefer_member.hpp | 104 + .../asio/include/asio/traits/query_free.hpp | 104 + .../asio/include/asio/traits/query_member.hpp | 104 + .../traits/query_static_constexpr_member.hpp | 101 + .../asio/traits/require_concept_free.hpp | 104 + .../asio/traits/require_concept_member.hpp | 104 + .../asio/include/asio/traits/require_free.hpp | 104 + .../include/asio/traits/require_member.hpp | 104 + .../asio/include/asio/traits/static_query.hpp | 102 + .../include/asio/traits/static_require.hpp | 115 + .../asio/traits/static_require_concept.hpp | 116 + 3party/asio/include/asio/ts/buffer.hpp | 24 + 3party/asio/include/asio/ts/executor.hpp | 35 + 3party/asio/include/asio/ts/internet.hpp | 40 + 3party/asio/include/asio/ts/io_context.hpp | 20 + 3party/asio/include/asio/ts/net.hpp | 26 + 3party/asio/include/asio/ts/netfwd.hpp | 236 + 3party/asio/include/asio/ts/socket.hpp | 27 + 3party/asio/include/asio/ts/timer.hpp | 26 + 3party/asio/include/asio/unyield.hpp | 21 + 3party/asio/include/asio/use_awaitable.hpp | 161 + 3party/asio/include/asio/use_future.hpp | 159 + 3party/asio/include/asio/uses_executor.hpp | 67 + 3party/asio/include/asio/version.hpp | 23 + 3party/asio/include/asio/wait_traits.hpp | 56 + .../asio/windows/basic_object_handle.hpp | 485 ++ .../asio/windows/basic_overlapped_handle.hpp | 455 ++ .../windows/basic_random_access_handle.hpp | 567 +++ .../asio/windows/basic_stream_handle.hpp | 551 +++ .../include/asio/windows/object_handle.hpp | 38 + .../asio/windows/overlapped_handle.hpp | 39 + .../include/asio/windows/overlapped_ptr.hpp | 145 + .../asio/windows/random_access_handle.hpp | 37 + .../include/asio/windows/stream_handle.hpp | 37 + 3party/asio/include/asio/writable_pipe.hpp | 35 + 3party/asio/include/asio/write.hpp | 1414 ++++++ 3party/asio/include/asio/write_at.hpp | 789 ++++ 3party/asio/include/asio/yield.hpp | 23 + 3party/gperftools/src/profile-handler.cc | 792 ++-- CMakeLists.txt | 3 +- 626 files changed, 170049 insertions(+), 398 deletions(-) create mode 100644 3party/asio/CMakeLists.txt create mode 100644 3party/asio/include/Makefile.am create mode 100644 3party/asio/include/Makefile.in create mode 100644 3party/asio/include/asio.hpp create mode 100644 3party/asio/include/asio/any_completion_executor.hpp create mode 100644 3party/asio/include/asio/any_completion_handler.hpp create mode 100644 3party/asio/include/asio/any_io_executor.hpp create mode 100644 3party/asio/include/asio/append.hpp create mode 100644 3party/asio/include/asio/as_tuple.hpp create mode 100644 3party/asio/include/asio/associated_allocator.hpp create mode 100644 3party/asio/include/asio/associated_cancellation_slot.hpp create mode 100644 3party/asio/include/asio/associated_executor.hpp create mode 100644 3party/asio/include/asio/associated_immediate_executor.hpp create mode 100644 3party/asio/include/asio/associator.hpp create mode 100644 3party/asio/include/asio/async_result.hpp create mode 100644 3party/asio/include/asio/awaitable.hpp create mode 100644 3party/asio/include/asio/basic_datagram_socket.hpp create mode 100644 3party/asio/include/asio/basic_deadline_timer.hpp create mode 100644 3party/asio/include/asio/basic_file.hpp create mode 100644 3party/asio/include/asio/basic_io_object.hpp create mode 100644 3party/asio/include/asio/basic_random_access_file.hpp create mode 100644 3party/asio/include/asio/basic_raw_socket.hpp create mode 100644 3party/asio/include/asio/basic_readable_pipe.hpp create mode 100644 3party/asio/include/asio/basic_seq_packet_socket.hpp create mode 100644 3party/asio/include/asio/basic_serial_port.hpp create mode 100644 3party/asio/include/asio/basic_signal_set.hpp create mode 100644 3party/asio/include/asio/basic_socket.hpp create mode 100644 3party/asio/include/asio/basic_socket_acceptor.hpp create mode 100644 3party/asio/include/asio/basic_socket_iostream.hpp create mode 100644 3party/asio/include/asio/basic_socket_streambuf.hpp create mode 100644 3party/asio/include/asio/basic_stream_file.hpp create mode 100644 3party/asio/include/asio/basic_stream_socket.hpp create mode 100644 3party/asio/include/asio/basic_streambuf.hpp create mode 100644 3party/asio/include/asio/basic_streambuf_fwd.hpp create mode 100644 3party/asio/include/asio/basic_waitable_timer.hpp create mode 100644 3party/asio/include/asio/basic_writable_pipe.hpp create mode 100644 3party/asio/include/asio/bind_allocator.hpp create mode 100644 3party/asio/include/asio/bind_cancellation_slot.hpp create mode 100644 3party/asio/include/asio/bind_executor.hpp create mode 100644 3party/asio/include/asio/bind_immediate_executor.hpp create mode 100644 3party/asio/include/asio/buffer.hpp create mode 100644 3party/asio/include/asio/buffer_registration.hpp create mode 100644 3party/asio/include/asio/buffered_read_stream.hpp create mode 100644 3party/asio/include/asio/buffered_read_stream_fwd.hpp create mode 100644 3party/asio/include/asio/buffered_stream.hpp create mode 100644 3party/asio/include/asio/buffered_stream_fwd.hpp create mode 100644 3party/asio/include/asio/buffered_write_stream.hpp create mode 100644 3party/asio/include/asio/buffered_write_stream_fwd.hpp create mode 100644 3party/asio/include/asio/buffers_iterator.hpp create mode 100644 3party/asio/include/asio/cancellation_signal.hpp create mode 100644 3party/asio/include/asio/cancellation_state.hpp create mode 100644 3party/asio/include/asio/cancellation_type.hpp create mode 100644 3party/asio/include/asio/co_spawn.hpp create mode 100644 3party/asio/include/asio/completion_condition.hpp create mode 100644 3party/asio/include/asio/compose.hpp create mode 100644 3party/asio/include/asio/connect.hpp create mode 100644 3party/asio/include/asio/connect_pipe.hpp create mode 100644 3party/asio/include/asio/consign.hpp create mode 100644 3party/asio/include/asio/coroutine.hpp create mode 100644 3party/asio/include/asio/deadline_timer.hpp create mode 100644 3party/asio/include/asio/defer.hpp create mode 100644 3party/asio/include/asio/deferred.hpp create mode 100644 3party/asio/include/asio/detached.hpp create mode 100644 3party/asio/include/asio/detail/array.hpp create mode 100644 3party/asio/include/asio/detail/array_fwd.hpp create mode 100644 3party/asio/include/asio/detail/assert.hpp create mode 100644 3party/asio/include/asio/detail/atomic_count.hpp create mode 100644 3party/asio/include/asio/detail/base_from_cancellation_state.hpp create mode 100644 3party/asio/include/asio/detail/base_from_completion_cond.hpp create mode 100644 3party/asio/include/asio/detail/bind_handler.hpp create mode 100644 3party/asio/include/asio/detail/blocking_executor_op.hpp create mode 100644 3party/asio/include/asio/detail/buffer_resize_guard.hpp create mode 100644 3party/asio/include/asio/detail/buffer_sequence_adapter.hpp create mode 100644 3party/asio/include/asio/detail/buffered_stream_storage.hpp create mode 100644 3party/asio/include/asio/detail/call_stack.hpp create mode 100644 3party/asio/include/asio/detail/chrono.hpp create mode 100644 3party/asio/include/asio/detail/chrono_time_traits.hpp create mode 100644 3party/asio/include/asio/detail/completion_handler.hpp create mode 100644 3party/asio/include/asio/detail/composed_work.hpp create mode 100644 3party/asio/include/asio/detail/concurrency_hint.hpp create mode 100644 3party/asio/include/asio/detail/conditionally_enabled_event.hpp create mode 100644 3party/asio/include/asio/detail/conditionally_enabled_mutex.hpp create mode 100644 3party/asio/include/asio/detail/config.hpp create mode 100644 3party/asio/include/asio/detail/consuming_buffers.hpp create mode 100644 3party/asio/include/asio/detail/cstddef.hpp create mode 100644 3party/asio/include/asio/detail/cstdint.hpp create mode 100644 3party/asio/include/asio/detail/date_time_fwd.hpp create mode 100644 3party/asio/include/asio/detail/deadline_timer_service.hpp create mode 100644 3party/asio/include/asio/detail/dependent_type.hpp create mode 100644 3party/asio/include/asio/detail/descriptor_ops.hpp create mode 100644 3party/asio/include/asio/detail/descriptor_read_op.hpp create mode 100644 3party/asio/include/asio/detail/descriptor_write_op.hpp create mode 100644 3party/asio/include/asio/detail/dev_poll_reactor.hpp create mode 100644 3party/asio/include/asio/detail/epoll_reactor.hpp create mode 100644 3party/asio/include/asio/detail/event.hpp create mode 100644 3party/asio/include/asio/detail/eventfd_select_interrupter.hpp create mode 100644 3party/asio/include/asio/detail/exception.hpp create mode 100644 3party/asio/include/asio/detail/executor_function.hpp create mode 100644 3party/asio/include/asio/detail/executor_op.hpp create mode 100644 3party/asio/include/asio/detail/fd_set_adapter.hpp create mode 100644 3party/asio/include/asio/detail/fenced_block.hpp create mode 100644 3party/asio/include/asio/detail/functional.hpp create mode 100644 3party/asio/include/asio/detail/future.hpp create mode 100644 3party/asio/include/asio/detail/global.hpp create mode 100644 3party/asio/include/asio/detail/handler_alloc_helpers.hpp create mode 100644 3party/asio/include/asio/detail/handler_cont_helpers.hpp create mode 100644 3party/asio/include/asio/detail/handler_tracking.hpp create mode 100644 3party/asio/include/asio/detail/handler_type_requirements.hpp create mode 100644 3party/asio/include/asio/detail/handler_work.hpp create mode 100644 3party/asio/include/asio/detail/hash_map.hpp create mode 100644 3party/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp create mode 100644 3party/asio/include/asio/detail/impl/descriptor_ops.ipp create mode 100644 3party/asio/include/asio/detail/impl/dev_poll_reactor.hpp create mode 100644 3party/asio/include/asio/detail/impl/dev_poll_reactor.ipp create mode 100644 3party/asio/include/asio/detail/impl/epoll_reactor.hpp create mode 100644 3party/asio/include/asio/detail/impl/epoll_reactor.ipp create mode 100644 3party/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp create mode 100644 3party/asio/include/asio/detail/impl/handler_tracking.ipp create mode 100644 3party/asio/include/asio/detail/impl/io_uring_descriptor_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/io_uring_file_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/io_uring_service.hpp create mode 100644 3party/asio/include/asio/detail/impl/io_uring_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/io_uring_socket_service_base.ipp create mode 100644 3party/asio/include/asio/detail/impl/kqueue_reactor.hpp create mode 100644 3party/asio/include/asio/detail/impl/kqueue_reactor.ipp create mode 100644 3party/asio/include/asio/detail/impl/null_event.ipp create mode 100644 3party/asio/include/asio/detail/impl/pipe_select_interrupter.ipp create mode 100644 3party/asio/include/asio/detail/impl/posix_event.ipp create mode 100644 3party/asio/include/asio/detail/impl/posix_mutex.ipp create mode 100644 3party/asio/include/asio/detail/impl/posix_serial_port_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/posix_thread.ipp create mode 100644 3party/asio/include/asio/detail/impl/posix_tss_ptr.ipp create mode 100644 3party/asio/include/asio/detail/impl/reactive_descriptor_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/reactive_socket_service_base.ipp create mode 100644 3party/asio/include/asio/detail/impl/resolver_service_base.ipp create mode 100644 3party/asio/include/asio/detail/impl/scheduler.ipp create mode 100644 3party/asio/include/asio/detail/impl/select_reactor.hpp create mode 100644 3party/asio/include/asio/detail/impl/select_reactor.ipp create mode 100644 3party/asio/include/asio/detail/impl/service_registry.hpp create mode 100644 3party/asio/include/asio/detail/impl/service_registry.ipp create mode 100644 3party/asio/include/asio/detail/impl/signal_set_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/socket_ops.ipp create mode 100644 3party/asio/include/asio/detail/impl/socket_select_interrupter.ipp create mode 100644 3party/asio/include/asio/detail/impl/strand_executor_service.hpp create mode 100644 3party/asio/include/asio/detail/impl/strand_executor_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/strand_service.hpp create mode 100644 3party/asio/include/asio/detail/impl/strand_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/thread_context.ipp create mode 100644 3party/asio/include/asio/detail/impl/throw_error.ipp create mode 100644 3party/asio/include/asio/detail/impl/timer_queue_ptime.ipp create mode 100644 3party/asio/include/asio/detail/impl/timer_queue_set.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_event.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_file_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_handle_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_io_context.hpp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_io_context.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_mutex.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_object_handle_service.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_static_mutex.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_thread.ipp create mode 100644 3party/asio/include/asio/detail/impl/win_tss_ptr.ipp create mode 100644 3party/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp create mode 100644 3party/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp create mode 100644 3party/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp create mode 100644 3party/asio/include/asio/detail/impl/winsock_init.ipp create mode 100644 3party/asio/include/asio/detail/initiate_defer.hpp create mode 100644 3party/asio/include/asio/detail/initiate_dispatch.hpp create mode 100644 3party/asio/include/asio/detail/initiate_post.hpp create mode 100644 3party/asio/include/asio/detail/io_control.hpp create mode 100644 3party/asio/include/asio/detail/io_object_impl.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_descriptor_read_at_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_descriptor_read_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_descriptor_service.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_descriptor_write_at_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_descriptor_write_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_file_service.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_null_buffers_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_operation.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_service.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_accept_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_connect_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_recv_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_recvfrom_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_recvmsg_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_send_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_sendto_op.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_service.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_socket_service_base.hpp create mode 100644 3party/asio/include/asio/detail/io_uring_wait_op.hpp create mode 100644 3party/asio/include/asio/detail/is_buffer_sequence.hpp create mode 100644 3party/asio/include/asio/detail/is_executor.hpp create mode 100644 3party/asio/include/asio/detail/keyword_tss_ptr.hpp create mode 100644 3party/asio/include/asio/detail/kqueue_reactor.hpp create mode 100644 3party/asio/include/asio/detail/limits.hpp create mode 100644 3party/asio/include/asio/detail/local_free_on_block_exit.hpp create mode 100644 3party/asio/include/asio/detail/memory.hpp create mode 100644 3party/asio/include/asio/detail/mutex.hpp create mode 100644 3party/asio/include/asio/detail/non_const_lvalue.hpp create mode 100644 3party/asio/include/asio/detail/noncopyable.hpp create mode 100644 3party/asio/include/asio/detail/null_event.hpp create mode 100644 3party/asio/include/asio/detail/null_fenced_block.hpp create mode 100644 3party/asio/include/asio/detail/null_global.hpp create mode 100644 3party/asio/include/asio/detail/null_mutex.hpp create mode 100644 3party/asio/include/asio/detail/null_reactor.hpp create mode 100644 3party/asio/include/asio/detail/null_signal_blocker.hpp create mode 100644 3party/asio/include/asio/detail/null_socket_service.hpp create mode 100644 3party/asio/include/asio/detail/null_static_mutex.hpp create mode 100644 3party/asio/include/asio/detail/null_thread.hpp create mode 100644 3party/asio/include/asio/detail/null_tss_ptr.hpp create mode 100644 3party/asio/include/asio/detail/object_pool.hpp create mode 100644 3party/asio/include/asio/detail/old_win_sdk_compat.hpp create mode 100644 3party/asio/include/asio/detail/op_queue.hpp create mode 100644 3party/asio/include/asio/detail/operation.hpp create mode 100644 3party/asio/include/asio/detail/pipe_select_interrupter.hpp create mode 100644 3party/asio/include/asio/detail/pop_options.hpp create mode 100644 3party/asio/include/asio/detail/posix_event.hpp create mode 100644 3party/asio/include/asio/detail/posix_fd_set_adapter.hpp create mode 100644 3party/asio/include/asio/detail/posix_global.hpp create mode 100644 3party/asio/include/asio/detail/posix_mutex.hpp create mode 100644 3party/asio/include/asio/detail/posix_serial_port_service.hpp create mode 100644 3party/asio/include/asio/detail/posix_signal_blocker.hpp create mode 100644 3party/asio/include/asio/detail/posix_static_mutex.hpp create mode 100644 3party/asio/include/asio/detail/posix_thread.hpp create mode 100644 3party/asio/include/asio/detail/posix_tss_ptr.hpp create mode 100644 3party/asio/include/asio/detail/push_options.hpp create mode 100644 3party/asio/include/asio/detail/reactive_descriptor_service.hpp create mode 100644 3party/asio/include/asio/detail/reactive_null_buffers_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_accept_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_connect_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_recv_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_send_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_sendto_op.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_service.hpp create mode 100644 3party/asio/include/asio/detail/reactive_socket_service_base.hpp create mode 100644 3party/asio/include/asio/detail/reactive_wait_op.hpp create mode 100644 3party/asio/include/asio/detail/reactor.hpp create mode 100644 3party/asio/include/asio/detail/reactor_op.hpp create mode 100644 3party/asio/include/asio/detail/reactor_op_queue.hpp create mode 100644 3party/asio/include/asio/detail/recycling_allocator.hpp create mode 100644 3party/asio/include/asio/detail/regex_fwd.hpp create mode 100644 3party/asio/include/asio/detail/resolve_endpoint_op.hpp create mode 100644 3party/asio/include/asio/detail/resolve_op.hpp create mode 100644 3party/asio/include/asio/detail/resolve_query_op.hpp create mode 100644 3party/asio/include/asio/detail/resolver_service.hpp create mode 100644 3party/asio/include/asio/detail/resolver_service_base.hpp create mode 100644 3party/asio/include/asio/detail/scheduler.hpp create mode 100644 3party/asio/include/asio/detail/scheduler_operation.hpp create mode 100644 3party/asio/include/asio/detail/scheduler_task.hpp create mode 100644 3party/asio/include/asio/detail/scheduler_thread_info.hpp create mode 100644 3party/asio/include/asio/detail/scoped_lock.hpp create mode 100644 3party/asio/include/asio/detail/scoped_ptr.hpp create mode 100644 3party/asio/include/asio/detail/select_interrupter.hpp create mode 100644 3party/asio/include/asio/detail/select_reactor.hpp create mode 100644 3party/asio/include/asio/detail/service_registry.hpp create mode 100644 3party/asio/include/asio/detail/signal_blocker.hpp create mode 100644 3party/asio/include/asio/detail/signal_handler.hpp create mode 100644 3party/asio/include/asio/detail/signal_init.hpp create mode 100644 3party/asio/include/asio/detail/signal_op.hpp create mode 100644 3party/asio/include/asio/detail/signal_set_service.hpp create mode 100644 3party/asio/include/asio/detail/socket_holder.hpp create mode 100644 3party/asio/include/asio/detail/socket_ops.hpp create mode 100644 3party/asio/include/asio/detail/socket_option.hpp create mode 100644 3party/asio/include/asio/detail/socket_select_interrupter.hpp create mode 100644 3party/asio/include/asio/detail/socket_types.hpp create mode 100644 3party/asio/include/asio/detail/source_location.hpp create mode 100644 3party/asio/include/asio/detail/static_mutex.hpp create mode 100644 3party/asio/include/asio/detail/std_event.hpp create mode 100644 3party/asio/include/asio/detail/std_fenced_block.hpp create mode 100644 3party/asio/include/asio/detail/std_global.hpp create mode 100644 3party/asio/include/asio/detail/std_mutex.hpp create mode 100644 3party/asio/include/asio/detail/std_static_mutex.hpp create mode 100644 3party/asio/include/asio/detail/std_thread.hpp create mode 100644 3party/asio/include/asio/detail/strand_executor_service.hpp create mode 100644 3party/asio/include/asio/detail/strand_service.hpp create mode 100644 3party/asio/include/asio/detail/string_view.hpp create mode 100644 3party/asio/include/asio/detail/thread.hpp create mode 100644 3party/asio/include/asio/detail/thread_context.hpp create mode 100644 3party/asio/include/asio/detail/thread_group.hpp create mode 100644 3party/asio/include/asio/detail/thread_info_base.hpp create mode 100644 3party/asio/include/asio/detail/throw_error.hpp create mode 100644 3party/asio/include/asio/detail/throw_exception.hpp create mode 100644 3party/asio/include/asio/detail/timer_queue.hpp create mode 100644 3party/asio/include/asio/detail/timer_queue_base.hpp create mode 100644 3party/asio/include/asio/detail/timer_queue_ptime.hpp create mode 100644 3party/asio/include/asio/detail/timer_queue_set.hpp create mode 100644 3party/asio/include/asio/detail/timer_scheduler.hpp create mode 100644 3party/asio/include/asio/detail/timer_scheduler_fwd.hpp create mode 100644 3party/asio/include/asio/detail/tss_ptr.hpp create mode 100644 3party/asio/include/asio/detail/type_traits.hpp create mode 100644 3party/asio/include/asio/detail/utility.hpp create mode 100644 3party/asio/include/asio/detail/wait_handler.hpp create mode 100644 3party/asio/include/asio/detail/wait_op.hpp create mode 100644 3party/asio/include/asio/detail/win_event.hpp create mode 100644 3party/asio/include/asio/detail/win_fd_set_adapter.hpp create mode 100644 3party/asio/include/asio/detail/win_global.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_file_service.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_handle_read_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_handle_service.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_handle_write_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_io_context.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_null_buffers_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_operation.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_overlapped_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_serial_port_service.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_accept_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_connect_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_recv_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_send_op.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_service.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_socket_service_base.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_thread_info.hpp create mode 100644 3party/asio/include/asio/detail/win_iocp_wait_op.hpp create mode 100644 3party/asio/include/asio/detail/win_mutex.hpp create mode 100644 3party/asio/include/asio/detail/win_object_handle_service.hpp create mode 100644 3party/asio/include/asio/detail/win_static_mutex.hpp create mode 100644 3party/asio/include/asio/detail/win_thread.hpp create mode 100644 3party/asio/include/asio/detail/win_tss_ptr.hpp create mode 100644 3party/asio/include/asio/detail/winapp_thread.hpp create mode 100644 3party/asio/include/asio/detail/wince_thread.hpp create mode 100644 3party/asio/include/asio/detail/winrt_async_manager.hpp create mode 100644 3party/asio/include/asio/detail/winrt_async_op.hpp create mode 100644 3party/asio/include/asio/detail/winrt_resolve_op.hpp create mode 100644 3party/asio/include/asio/detail/winrt_resolver_service.hpp create mode 100644 3party/asio/include/asio/detail/winrt_socket_connect_op.hpp create mode 100644 3party/asio/include/asio/detail/winrt_socket_recv_op.hpp create mode 100644 3party/asio/include/asio/detail/winrt_socket_send_op.hpp create mode 100644 3party/asio/include/asio/detail/winrt_ssocket_service.hpp create mode 100644 3party/asio/include/asio/detail/winrt_ssocket_service_base.hpp create mode 100644 3party/asio/include/asio/detail/winrt_timer_scheduler.hpp create mode 100644 3party/asio/include/asio/detail/winrt_utils.hpp create mode 100644 3party/asio/include/asio/detail/winsock_init.hpp create mode 100644 3party/asio/include/asio/detail/work_dispatcher.hpp create mode 100644 3party/asio/include/asio/detail/wrapped_handler.hpp create mode 100644 3party/asio/include/asio/dispatch.hpp create mode 100644 3party/asio/include/asio/error.hpp create mode 100644 3party/asio/include/asio/error_code.hpp create mode 100644 3party/asio/include/asio/execution.hpp create mode 100644 3party/asio/include/asio/execution/allocator.hpp create mode 100644 3party/asio/include/asio/execution/any_executor.hpp create mode 100644 3party/asio/include/asio/execution/bad_executor.hpp create mode 100644 3party/asio/include/asio/execution/blocking.hpp create mode 100644 3party/asio/include/asio/execution/blocking_adaptation.hpp create mode 100644 3party/asio/include/asio/execution/context.hpp create mode 100644 3party/asio/include/asio/execution/context_as.hpp create mode 100644 3party/asio/include/asio/execution/executor.hpp create mode 100644 3party/asio/include/asio/execution/impl/bad_executor.ipp create mode 100644 3party/asio/include/asio/execution/invocable_archetype.hpp create mode 100644 3party/asio/include/asio/execution/mapping.hpp create mode 100644 3party/asio/include/asio/execution/occupancy.hpp create mode 100644 3party/asio/include/asio/execution/outstanding_work.hpp create mode 100644 3party/asio/include/asio/execution/prefer_only.hpp create mode 100644 3party/asio/include/asio/execution/relationship.hpp create mode 100644 3party/asio/include/asio/execution_context.hpp create mode 100644 3party/asio/include/asio/executor.hpp create mode 100644 3party/asio/include/asio/executor_work_guard.hpp create mode 100644 3party/asio/include/asio/experimental/append.hpp create mode 100644 3party/asio/include/asio/experimental/as_single.hpp create mode 100644 3party/asio/include/asio/experimental/as_tuple.hpp create mode 100644 3party/asio/include/asio/experimental/awaitable_operators.hpp create mode 100644 3party/asio/include/asio/experimental/basic_channel.hpp create mode 100644 3party/asio/include/asio/experimental/basic_concurrent_channel.hpp create mode 100644 3party/asio/include/asio/experimental/cancellation_condition.hpp create mode 100644 3party/asio/include/asio/experimental/channel.hpp create mode 100644 3party/asio/include/asio/experimental/channel_error.hpp create mode 100644 3party/asio/include/asio/experimental/channel_traits.hpp create mode 100644 3party/asio/include/asio/experimental/co_composed.hpp create mode 100644 3party/asio/include/asio/experimental/co_spawn.hpp create mode 100644 3party/asio/include/asio/experimental/concurrent_channel.hpp create mode 100644 3party/asio/include/asio/experimental/coro.hpp create mode 100644 3party/asio/include/asio/experimental/coro_traits.hpp create mode 100644 3party/asio/include/asio/experimental/deferred.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_handler.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_message.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_operation.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_payload.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_receive_op.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_send_functions.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_send_op.hpp create mode 100644 3party/asio/include/asio/experimental/detail/channel_service.hpp create mode 100644 3party/asio/include/asio/experimental/detail/coro_completion_handler.hpp create mode 100644 3party/asio/include/asio/experimental/detail/coro_promise_allocator.hpp create mode 100644 3party/asio/include/asio/experimental/detail/has_signature.hpp create mode 100644 3party/asio/include/asio/experimental/detail/impl/channel_service.hpp create mode 100644 3party/asio/include/asio/experimental/detail/partial_promise.hpp create mode 100644 3party/asio/include/asio/experimental/impl/as_single.hpp create mode 100644 3party/asio/include/asio/experimental/impl/channel_error.ipp create mode 100644 3party/asio/include/asio/experimental/impl/co_composed.hpp create mode 100644 3party/asio/include/asio/experimental/impl/coro.hpp create mode 100644 3party/asio/include/asio/experimental/impl/parallel_group.hpp create mode 100644 3party/asio/include/asio/experimental/impl/promise.hpp create mode 100644 3party/asio/include/asio/experimental/impl/use_coro.hpp create mode 100644 3party/asio/include/asio/experimental/impl/use_promise.hpp create mode 100644 3party/asio/include/asio/experimental/parallel_group.hpp create mode 100644 3party/asio/include/asio/experimental/prepend.hpp create mode 100644 3party/asio/include/asio/experimental/promise.hpp create mode 100644 3party/asio/include/asio/experimental/use_coro.hpp create mode 100644 3party/asio/include/asio/experimental/use_promise.hpp create mode 100644 3party/asio/include/asio/file_base.hpp create mode 100644 3party/asio/include/asio/generic/basic_endpoint.hpp create mode 100644 3party/asio/include/asio/generic/datagram_protocol.hpp create mode 100644 3party/asio/include/asio/generic/detail/endpoint.hpp create mode 100644 3party/asio/include/asio/generic/detail/impl/endpoint.ipp create mode 100644 3party/asio/include/asio/generic/raw_protocol.hpp create mode 100644 3party/asio/include/asio/generic/seq_packet_protocol.hpp create mode 100644 3party/asio/include/asio/generic/stream_protocol.hpp create mode 100644 3party/asio/include/asio/handler_continuation_hook.hpp create mode 100644 3party/asio/include/asio/high_resolution_timer.hpp create mode 100644 3party/asio/include/asio/impl/any_completion_executor.ipp create mode 100644 3party/asio/include/asio/impl/any_io_executor.ipp create mode 100644 3party/asio/include/asio/impl/append.hpp create mode 100644 3party/asio/include/asio/impl/as_tuple.hpp create mode 100644 3party/asio/include/asio/impl/awaitable.hpp create mode 100644 3party/asio/include/asio/impl/buffered_read_stream.hpp create mode 100644 3party/asio/include/asio/impl/buffered_write_stream.hpp create mode 100644 3party/asio/include/asio/impl/cancellation_signal.ipp create mode 100644 3party/asio/include/asio/impl/co_spawn.hpp create mode 100644 3party/asio/include/asio/impl/connect.hpp create mode 100644 3party/asio/include/asio/impl/connect_pipe.hpp create mode 100644 3party/asio/include/asio/impl/connect_pipe.ipp create mode 100644 3party/asio/include/asio/impl/consign.hpp create mode 100644 3party/asio/include/asio/impl/deferred.hpp create mode 100644 3party/asio/include/asio/impl/detached.hpp create mode 100644 3party/asio/include/asio/impl/error.ipp create mode 100644 3party/asio/include/asio/impl/error_code.ipp create mode 100644 3party/asio/include/asio/impl/execution_context.hpp create mode 100644 3party/asio/include/asio/impl/execution_context.ipp create mode 100644 3party/asio/include/asio/impl/executor.hpp create mode 100644 3party/asio/include/asio/impl/executor.ipp create mode 100644 3party/asio/include/asio/impl/io_context.hpp create mode 100644 3party/asio/include/asio/impl/io_context.ipp create mode 100644 3party/asio/include/asio/impl/multiple_exceptions.ipp create mode 100644 3party/asio/include/asio/impl/prepend.hpp create mode 100644 3party/asio/include/asio/impl/read.hpp create mode 100644 3party/asio/include/asio/impl/read_at.hpp create mode 100644 3party/asio/include/asio/impl/read_until.hpp create mode 100644 3party/asio/include/asio/impl/redirect_error.hpp create mode 100644 3party/asio/include/asio/impl/serial_port_base.hpp create mode 100644 3party/asio/include/asio/impl/serial_port_base.ipp create mode 100644 3party/asio/include/asio/impl/spawn.hpp create mode 100644 3party/asio/include/asio/impl/src.hpp create mode 100644 3party/asio/include/asio/impl/system_context.hpp create mode 100644 3party/asio/include/asio/impl/system_context.ipp create mode 100644 3party/asio/include/asio/impl/system_executor.hpp create mode 100644 3party/asio/include/asio/impl/thread_pool.hpp create mode 100644 3party/asio/include/asio/impl/thread_pool.ipp create mode 100644 3party/asio/include/asio/impl/use_awaitable.hpp create mode 100644 3party/asio/include/asio/impl/use_future.hpp create mode 100644 3party/asio/include/asio/impl/write.hpp create mode 100644 3party/asio/include/asio/impl/write_at.hpp create mode 100644 3party/asio/include/asio/io_context.hpp create mode 100644 3party/asio/include/asio/io_context_strand.hpp create mode 100644 3party/asio/include/asio/io_service.hpp create mode 100644 3party/asio/include/asio/io_service_strand.hpp create mode 100644 3party/asio/include/asio/ip/address.hpp create mode 100644 3party/asio/include/asio/ip/address_v4.hpp create mode 100644 3party/asio/include/asio/ip/address_v4_iterator.hpp create mode 100644 3party/asio/include/asio/ip/address_v4_range.hpp create mode 100644 3party/asio/include/asio/ip/address_v6.hpp create mode 100644 3party/asio/include/asio/ip/address_v6_iterator.hpp create mode 100644 3party/asio/include/asio/ip/address_v6_range.hpp create mode 100644 3party/asio/include/asio/ip/bad_address_cast.hpp create mode 100644 3party/asio/include/asio/ip/basic_endpoint.hpp create mode 100644 3party/asio/include/asio/ip/basic_resolver.hpp create mode 100644 3party/asio/include/asio/ip/basic_resolver_entry.hpp create mode 100644 3party/asio/include/asio/ip/basic_resolver_iterator.hpp create mode 100644 3party/asio/include/asio/ip/basic_resolver_query.hpp create mode 100644 3party/asio/include/asio/ip/basic_resolver_results.hpp create mode 100644 3party/asio/include/asio/ip/detail/endpoint.hpp create mode 100644 3party/asio/include/asio/ip/detail/impl/endpoint.ipp create mode 100644 3party/asio/include/asio/ip/detail/socket_option.hpp create mode 100644 3party/asio/include/asio/ip/host_name.hpp create mode 100644 3party/asio/include/asio/ip/icmp.hpp create mode 100644 3party/asio/include/asio/ip/impl/address.hpp create mode 100644 3party/asio/include/asio/ip/impl/address.ipp create mode 100644 3party/asio/include/asio/ip/impl/address_v4.hpp create mode 100644 3party/asio/include/asio/ip/impl/address_v4.ipp create mode 100644 3party/asio/include/asio/ip/impl/address_v6.hpp create mode 100644 3party/asio/include/asio/ip/impl/address_v6.ipp create mode 100644 3party/asio/include/asio/ip/impl/basic_endpoint.hpp create mode 100644 3party/asio/include/asio/ip/impl/host_name.ipp create mode 100644 3party/asio/include/asio/ip/impl/network_v4.hpp create mode 100644 3party/asio/include/asio/ip/impl/network_v4.ipp create mode 100644 3party/asio/include/asio/ip/impl/network_v6.hpp create mode 100644 3party/asio/include/asio/ip/impl/network_v6.ipp create mode 100644 3party/asio/include/asio/ip/multicast.hpp create mode 100644 3party/asio/include/asio/ip/network_v4.hpp create mode 100644 3party/asio/include/asio/ip/network_v6.hpp create mode 100644 3party/asio/include/asio/ip/resolver_base.hpp create mode 100644 3party/asio/include/asio/ip/resolver_query_base.hpp create mode 100644 3party/asio/include/asio/ip/tcp.hpp create mode 100644 3party/asio/include/asio/ip/udp.hpp create mode 100644 3party/asio/include/asio/ip/unicast.hpp create mode 100644 3party/asio/include/asio/ip/v6_only.hpp create mode 100644 3party/asio/include/asio/is_applicable_property.hpp create mode 100644 3party/asio/include/asio/is_contiguous_iterator.hpp create mode 100644 3party/asio/include/asio/is_executor.hpp create mode 100644 3party/asio/include/asio/is_read_buffered.hpp create mode 100644 3party/asio/include/asio/is_write_buffered.hpp create mode 100644 3party/asio/include/asio/local/basic_endpoint.hpp create mode 100644 3party/asio/include/asio/local/connect_pair.hpp create mode 100644 3party/asio/include/asio/local/datagram_protocol.hpp create mode 100644 3party/asio/include/asio/local/detail/endpoint.hpp create mode 100644 3party/asio/include/asio/local/detail/impl/endpoint.ipp create mode 100644 3party/asio/include/asio/local/seq_packet_protocol.hpp create mode 100644 3party/asio/include/asio/local/stream_protocol.hpp create mode 100644 3party/asio/include/asio/multiple_exceptions.hpp create mode 100644 3party/asio/include/asio/packaged_task.hpp create mode 100644 3party/asio/include/asio/placeholders.hpp create mode 100644 3party/asio/include/asio/posix/basic_descriptor.hpp create mode 100644 3party/asio/include/asio/posix/basic_stream_descriptor.hpp create mode 100644 3party/asio/include/asio/posix/descriptor.hpp create mode 100644 3party/asio/include/asio/posix/descriptor_base.hpp create mode 100644 3party/asio/include/asio/posix/stream_descriptor.hpp create mode 100644 3party/asio/include/asio/post.hpp create mode 100644 3party/asio/include/asio/prefer.hpp create mode 100644 3party/asio/include/asio/prepend.hpp create mode 100644 3party/asio/include/asio/query.hpp create mode 100644 3party/asio/include/asio/random_access_file.hpp create mode 100644 3party/asio/include/asio/read.hpp create mode 100644 3party/asio/include/asio/read_at.hpp create mode 100644 3party/asio/include/asio/read_until.hpp create mode 100644 3party/asio/include/asio/readable_pipe.hpp create mode 100644 3party/asio/include/asio/recycling_allocator.hpp create mode 100644 3party/asio/include/asio/redirect_error.hpp create mode 100644 3party/asio/include/asio/registered_buffer.hpp create mode 100644 3party/asio/include/asio/require.hpp create mode 100644 3party/asio/include/asio/require_concept.hpp create mode 100644 3party/asio/include/asio/serial_port.hpp create mode 100644 3party/asio/include/asio/serial_port_base.hpp create mode 100644 3party/asio/include/asio/signal_set.hpp create mode 100644 3party/asio/include/asio/signal_set_base.hpp create mode 100644 3party/asio/include/asio/socket_base.hpp create mode 100644 3party/asio/include/asio/spawn.hpp create mode 100644 3party/asio/include/asio/ssl.hpp create mode 100644 3party/asio/include/asio/ssl/context.hpp create mode 100644 3party/asio/include/asio/ssl/context_base.hpp create mode 100644 3party/asio/include/asio/ssl/detail/buffered_handshake_op.hpp create mode 100644 3party/asio/include/asio/ssl/detail/engine.hpp create mode 100644 3party/asio/include/asio/ssl/detail/handshake_op.hpp create mode 100644 3party/asio/include/asio/ssl/detail/impl/engine.ipp create mode 100644 3party/asio/include/asio/ssl/detail/impl/openssl_init.ipp create mode 100644 3party/asio/include/asio/ssl/detail/io.hpp create mode 100644 3party/asio/include/asio/ssl/detail/openssl_init.hpp create mode 100644 3party/asio/include/asio/ssl/detail/openssl_types.hpp create mode 100644 3party/asio/include/asio/ssl/detail/password_callback.hpp create mode 100644 3party/asio/include/asio/ssl/detail/read_op.hpp create mode 100644 3party/asio/include/asio/ssl/detail/shutdown_op.hpp create mode 100644 3party/asio/include/asio/ssl/detail/stream_core.hpp create mode 100644 3party/asio/include/asio/ssl/detail/verify_callback.hpp create mode 100644 3party/asio/include/asio/ssl/detail/write_op.hpp create mode 100644 3party/asio/include/asio/ssl/error.hpp create mode 100644 3party/asio/include/asio/ssl/host_name_verification.hpp create mode 100644 3party/asio/include/asio/ssl/impl/context.hpp create mode 100644 3party/asio/include/asio/ssl/impl/context.ipp create mode 100644 3party/asio/include/asio/ssl/impl/error.ipp create mode 100644 3party/asio/include/asio/ssl/impl/host_name_verification.ipp create mode 100644 3party/asio/include/asio/ssl/impl/rfc2818_verification.ipp create mode 100644 3party/asio/include/asio/ssl/impl/src.hpp create mode 100644 3party/asio/include/asio/ssl/rfc2818_verification.hpp create mode 100644 3party/asio/include/asio/ssl/stream.hpp create mode 100644 3party/asio/include/asio/ssl/stream_base.hpp create mode 100644 3party/asio/include/asio/ssl/verify_context.hpp create mode 100644 3party/asio/include/asio/ssl/verify_mode.hpp create mode 100644 3party/asio/include/asio/static_thread_pool.hpp create mode 100644 3party/asio/include/asio/steady_timer.hpp create mode 100644 3party/asio/include/asio/strand.hpp create mode 100644 3party/asio/include/asio/stream_file.hpp create mode 100644 3party/asio/include/asio/streambuf.hpp create mode 100644 3party/asio/include/asio/system_context.hpp create mode 100644 3party/asio/include/asio/system_error.hpp create mode 100644 3party/asio/include/asio/system_executor.hpp create mode 100644 3party/asio/include/asio/system_timer.hpp create mode 100644 3party/asio/include/asio/this_coro.hpp create mode 100644 3party/asio/include/asio/thread.hpp create mode 100644 3party/asio/include/asio/thread_pool.hpp create mode 100644 3party/asio/include/asio/time_traits.hpp create mode 100644 3party/asio/include/asio/traits/equality_comparable.hpp create mode 100644 3party/asio/include/asio/traits/execute_member.hpp create mode 100644 3party/asio/include/asio/traits/prefer_free.hpp create mode 100644 3party/asio/include/asio/traits/prefer_member.hpp create mode 100644 3party/asio/include/asio/traits/query_free.hpp create mode 100644 3party/asio/include/asio/traits/query_member.hpp create mode 100644 3party/asio/include/asio/traits/query_static_constexpr_member.hpp create mode 100644 3party/asio/include/asio/traits/require_concept_free.hpp create mode 100644 3party/asio/include/asio/traits/require_concept_member.hpp create mode 100644 3party/asio/include/asio/traits/require_free.hpp create mode 100644 3party/asio/include/asio/traits/require_member.hpp create mode 100644 3party/asio/include/asio/traits/static_query.hpp create mode 100644 3party/asio/include/asio/traits/static_require.hpp create mode 100644 3party/asio/include/asio/traits/static_require_concept.hpp create mode 100644 3party/asio/include/asio/ts/buffer.hpp create mode 100644 3party/asio/include/asio/ts/executor.hpp create mode 100644 3party/asio/include/asio/ts/internet.hpp create mode 100644 3party/asio/include/asio/ts/io_context.hpp create mode 100644 3party/asio/include/asio/ts/net.hpp create mode 100644 3party/asio/include/asio/ts/netfwd.hpp create mode 100644 3party/asio/include/asio/ts/socket.hpp create mode 100644 3party/asio/include/asio/ts/timer.hpp create mode 100644 3party/asio/include/asio/unyield.hpp create mode 100644 3party/asio/include/asio/use_awaitable.hpp create mode 100644 3party/asio/include/asio/use_future.hpp create mode 100644 3party/asio/include/asio/uses_executor.hpp create mode 100644 3party/asio/include/asio/version.hpp create mode 100644 3party/asio/include/asio/wait_traits.hpp create mode 100644 3party/asio/include/asio/windows/basic_object_handle.hpp create mode 100644 3party/asio/include/asio/windows/basic_overlapped_handle.hpp create mode 100644 3party/asio/include/asio/windows/basic_random_access_handle.hpp create mode 100644 3party/asio/include/asio/windows/basic_stream_handle.hpp create mode 100644 3party/asio/include/asio/windows/object_handle.hpp create mode 100644 3party/asio/include/asio/windows/overlapped_handle.hpp create mode 100644 3party/asio/include/asio/windows/overlapped_ptr.hpp create mode 100644 3party/asio/include/asio/windows/random_access_handle.hpp create mode 100644 3party/asio/include/asio/windows/stream_handle.hpp create mode 100644 3party/asio/include/asio/writable_pipe.hpp create mode 100644 3party/asio/include/asio/write.hpp create mode 100644 3party/asio/include/asio/write_at.hpp create mode 100644 3party/asio/include/asio/yield.hpp diff --git a/3party/asio/CMakeLists.txt b/3party/asio/CMakeLists.txt new file mode 100644 index 0000000..172a1aa --- /dev/null +++ b/3party/asio/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.10) +project(asio LANGUAGES C CXX VERSION 1.30.2) +add_library(asio INTERFACE "") +target_include_directories(asio INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) +target_compile_definitions(asio INTERFACE -DASIO_STANDALONE) + diff --git a/3party/asio/include/Makefile.am b/3party/asio/include/Makefile.am new file mode 100644 index 0000000..8f43766 --- /dev/null +++ b/3party/asio/include/Makefile.am @@ -0,0 +1,626 @@ +# 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 \ + asio/basic_socket_acceptor.hpp \ + asio/basic_socket.hpp \ + asio/basic_socket_iostream.hpp \ + 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 \ + asio/buffered_stream.hpp \ + 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 \ + asio/detail/buffered_stream_storage.hpp \ + asio/detail/buffer_resize_guard.hpp \ + asio/detail/buffer_sequence_adapter.hpp \ + asio/detail/call_stack.hpp \ + 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 \ + asio/detail/config.hpp \ + asio/detail/consuming_buffers.hpp \ + asio/detail/cstddef.hpp \ + asio/detail/cstdint.hpp \ + asio/detail/date_time_fwd.hpp \ + asio/detail/deadline_timer_service.hpp \ + asio/detail/dependent_type.hpp \ + asio/detail/descriptor_ops.hpp \ + asio/detail/descriptor_read_op.hpp \ + asio/detail/descriptor_write_op.hpp \ + asio/detail/dev_poll_reactor.hpp \ + 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 \ + asio/detail/fenced_block.hpp \ + asio/detail/functional.hpp \ + asio/detail/future.hpp \ + asio/detail/global.hpp \ + asio/detail/handler_alloc_helpers.hpp \ + asio/detail/handler_cont_helpers.hpp \ + asio/detail/handler_tracking.hpp \ + asio/detail/handler_type_requirements.hpp \ + asio/detail/handler_work.hpp \ + asio/detail/hash_map.hpp \ + asio/detail/impl/buffer_sequence_adapter.ipp \ + asio/detail/impl/descriptor_ops.ipp \ + asio/detail/impl/dev_poll_reactor.hpp \ + asio/detail/impl/dev_poll_reactor.ipp \ + asio/detail/impl/epoll_reactor.hpp \ + 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_socket_service_base.ipp \ + asio/detail/impl/resolver_service_base.ipp \ + asio/detail/impl/scheduler.ipp \ + asio/detail/impl/select_reactor.hpp \ + asio/detail/impl/select_reactor.ipp \ + asio/detail/impl/service_registry.hpp \ + asio/detail/impl/service_registry.ipp \ + asio/detail/impl/signal_set_service.ipp \ + asio/detail/impl/socket_ops.ipp \ + asio/detail/impl/socket_select_interrupter.ipp \ + asio/detail/impl/strand_executor_service.hpp \ + 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 \ + asio/detail/impl/win_iocp_serial_port_service.ipp \ + asio/detail/impl/win_iocp_socket_service_base.ipp \ + asio/detail/impl/win_mutex.ipp \ + asio/detail/impl/win_object_handle_service.ipp \ + asio/detail/impl/winrt_ssocket_service_base.ipp \ + asio/detail/impl/winrt_timer_scheduler.hpp \ + asio/detail/impl/winrt_timer_scheduler.ipp \ + asio/detail/impl/winsock_init.ipp \ + 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 \ + asio/detail/kqueue_reactor.hpp \ + asio/detail/limits.hpp \ + asio/detail/local_free_on_block_exit.hpp \ + asio/detail/memory.hpp \ + asio/detail/mutex.hpp \ + asio/detail/non_const_lvalue.hpp \ + asio/detail/noncopyable.hpp \ + asio/detail/null_event.hpp \ + asio/detail/null_fenced_block.hpp \ + asio/detail/null_global.hpp \ + asio/detail/null_mutex.hpp \ + asio/detail/null_reactor.hpp \ + asio/detail/null_signal_blocker.hpp \ + asio/detail/null_socket_service.hpp \ + asio/detail/null_static_mutex.hpp \ + asio/detail/null_thread.hpp \ + asio/detail/null_tss_ptr.hpp \ + asio/detail/object_pool.hpp \ + asio/detail/old_win_sdk_compat.hpp \ + asio/detail/operation.hpp \ + asio/detail/op_queue.hpp \ + asio/detail/pipe_select_interrupter.hpp \ + asio/detail/pop_options.hpp \ + asio/detail/posix_event.hpp \ + 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 \ + asio/detail/posix_tss_ptr.hpp \ + asio/detail/push_options.hpp \ + asio/detail/reactive_descriptor_service.hpp \ + asio/detail/reactive_null_buffers_op.hpp \ + asio/detail/reactive_socket_accept_op.hpp \ + asio/detail/reactive_socket_connect_op.hpp \ + asio/detail/reactive_socket_recvfrom_op.hpp \ + asio/detail/reactive_socket_recvmsg_op.hpp \ + asio/detail/reactive_socket_recv_op.hpp \ + asio/detail/reactive_socket_send_op.hpp \ + asio/detail/reactive_socket_sendto_op.hpp \ + asio/detail/reactive_socket_service_base.hpp \ + asio/detail/reactive_socket_service.hpp \ + asio/detail/reactive_wait_op.hpp \ + asio/detail/reactor.hpp \ + asio/detail/reactor_op.hpp \ + asio/detail/reactor_op_queue.hpp \ + asio/detail/recycling_allocator.hpp \ + asio/detail/regex_fwd.hpp \ + asio/detail/resolve_endpoint_op.hpp \ + asio/detail/resolve_op.hpp \ + asio/detail/resolve_query_op.hpp \ + asio/detail/resolver_service_base.hpp \ + 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 \ + asio/detail/select_interrupter.hpp \ + asio/detail/select_reactor.hpp \ + asio/detail/service_registry.hpp \ + asio/detail/signal_blocker.hpp \ + asio/detail/signal_handler.hpp \ + asio/detail/signal_init.hpp \ + asio/detail/signal_op.hpp \ + asio/detail/signal_set_service.hpp \ + asio/detail/socket_holder.hpp \ + asio/detail/socket_ops.hpp \ + asio/detail/socket_option.hpp \ + asio/detail/socket_select_interrupter.hpp \ + asio/detail/socket_types.hpp \ + asio/detail/source_location.hpp \ + asio/detail/static_mutex.hpp \ + asio/detail/std_event.hpp \ + asio/detail/std_fenced_block.hpp \ + asio/detail/std_global.hpp \ + asio/detail/std_mutex.hpp \ + asio/detail/std_static_mutex.hpp \ + asio/detail/std_thread.hpp \ + asio/detail/strand_executor_service.hpp \ + asio/detail/strand_service.hpp \ + asio/detail/string_view.hpp \ + asio/detail/thread_context.hpp \ + asio/detail/thread_group.hpp \ + asio/detail/thread.hpp \ + asio/detail/thread_info_base.hpp \ + asio/detail/throw_error.hpp \ + asio/detail/throw_exception.hpp \ + asio/detail/timer_queue_base.hpp \ + asio/detail/timer_queue.hpp \ + asio/detail/timer_queue_ptime.hpp \ + asio/detail/timer_queue_set.hpp \ + asio/detail/timer_scheduler_fwd.hpp \ + asio/detail/timer_scheduler.hpp \ + asio/detail/tss_ptr.hpp \ + asio/detail/type_traits.hpp \ + asio/detail/utility.hpp \ + asio/detail/wait_handler.hpp \ + asio/detail/wait_op.hpp \ + asio/detail/winapp_thread.hpp \ + asio/detail/wince_thread.hpp \ + asio/detail/win_event.hpp \ + asio/detail/win_fd_set_adapter.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 \ + asio/detail/win_iocp_io_context.hpp \ + asio/detail/win_iocp_null_buffers_op.hpp \ + asio/detail/win_iocp_operation.hpp \ + asio/detail/win_iocp_overlapped_op.hpp \ + asio/detail/win_iocp_overlapped_ptr.hpp \ + asio/detail/win_iocp_serial_port_service.hpp \ + asio/detail/win_iocp_socket_accept_op.hpp \ + asio/detail/win_iocp_socket_connect_op.hpp \ + asio/detail/win_iocp_socket_recvfrom_op.hpp \ + asio/detail/win_iocp_socket_recvmsg_op.hpp \ + asio/detail/win_iocp_socket_recv_op.hpp \ + asio/detail/win_iocp_socket_send_op.hpp \ + asio/detail/win_iocp_socket_service_base.hpp \ + asio/detail/win_iocp_socket_service.hpp \ + asio/detail/win_iocp_thread_info.hpp \ + asio/detail/win_iocp_wait_op.hpp \ + asio/detail/win_mutex.hpp \ + asio/detail/win_object_handle_service.hpp \ + asio/detail/winrt_async_manager.hpp \ + asio/detail/winrt_async_op.hpp \ + asio/detail/winrt_resolve_op.hpp \ + asio/detail/winrt_resolver_service.hpp \ + asio/detail/winrt_socket_connect_op.hpp \ + asio/detail/winrt_socket_recv_op.hpp \ + asio/detail/winrt_socket_send_op.hpp \ + asio/detail/winrt_ssocket_service_base.hpp \ + asio/detail/winrt_ssocket_service.hpp \ + asio/detail/winrt_timer_scheduler.hpp \ + asio/detail/winrt_utils.hpp \ + asio/detail/winsock_init.hpp \ + asio/detail/win_static_mutex.hpp \ + asio/detail/win_thread.hpp \ + asio/detail/win_tss_ptr.hpp \ + asio/detail/work_dispatcher.hpp \ + asio/detail/wrapped_handler.hpp \ + asio/dispatch.hpp \ + asio/error_code.hpp \ + asio/error.hpp \ + asio/execution.hpp \ + asio/execution_context.hpp \ + asio/execution/allocator.hpp \ + asio/execution/any_executor.hpp \ + asio/execution/bad_executor.hpp \ + asio/execution/blocking.hpp \ + asio/execution/blocking_adaptation.hpp \ + asio/execution/context.hpp \ + asio/execution/context_as.hpp \ + asio/execution/executor.hpp \ + asio/execution/impl/bad_executor.ipp \ + asio/execution/invocable_archetype.hpp \ + asio/execution/mapping.hpp \ + asio/execution/occupancy.hpp \ + asio/execution/outstanding_work.hpp \ + asio/execution/prefer_only.hpp \ + asio/execution/relationship.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 \ + asio/generic/detail/impl/endpoint.ipp \ + asio/generic/raw_protocol.hpp \ + asio/generic/seq_packet_protocol.hpp \ + asio/generic/stream_protocol.hpp \ + asio/handler_continuation_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/connect.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/error_code.ipp \ + asio/impl/error.ipp \ + asio/impl/execution_context.hpp \ + asio/impl/execution_context.ipp \ + asio/impl/executor.hpp \ + asio/impl/executor.ipp \ + asio/impl/io_context.hpp \ + asio/impl/io_context.ipp \ + asio/impl/multiple_exceptions.ipp \ + asio/impl/prepend.hpp \ + asio/impl/read_at.hpp \ + asio/impl/read.hpp \ + asio/impl/read_until.hpp \ + asio/impl/redirect_error.hpp \ + asio/impl/serial_port_base.hpp \ + asio/impl/serial_port_base.ipp \ + asio/impl/spawn.hpp \ + asio/impl/src.hpp \ + asio/impl/system_context.hpp \ + asio/impl/system_context.ipp \ + asio/impl/system_executor.hpp \ + asio/impl/thread_pool.hpp \ + asio/impl/thread_pool.ipp \ + asio/impl/use_awaitable.hpp \ + asio/impl/use_future.hpp \ + asio/impl/write_at.hpp \ + asio/impl/write.hpp \ + asio/io_context.hpp \ + asio/io_context_strand.hpp \ + asio/io_service.hpp \ + asio/io_service_strand.hpp \ + asio/ip/address.hpp \ + asio/ip/address_v4.hpp \ + asio/ip/address_v4_iterator.hpp \ + asio/ip/address_v4_range.hpp \ + asio/ip/address_v6.hpp \ + asio/ip/address_v6_iterator.hpp \ + asio/ip/address_v6_range.hpp \ + asio/ip/bad_address_cast.hpp \ + asio/ip/basic_endpoint.hpp \ + asio/ip/basic_resolver_entry.hpp \ + asio/ip/basic_resolver.hpp \ + asio/ip/basic_resolver_iterator.hpp \ + asio/ip/basic_resolver_query.hpp \ + asio/ip/basic_resolver_results.hpp \ + asio/ip/detail/endpoint.hpp \ + asio/ip/detail/impl/endpoint.ipp \ + asio/ip/detail/socket_option.hpp \ + asio/ip/host_name.hpp \ + asio/ip/icmp.hpp \ + asio/ip/impl/address.hpp \ + asio/ip/impl/address.ipp \ + asio/ip/impl/address_v4.hpp \ + asio/ip/impl/address_v4.ipp \ + asio/ip/impl/address_v6.hpp \ + asio/ip/impl/address_v6.ipp \ + asio/ip/impl/basic_endpoint.hpp \ + asio/ip/impl/host_name.ipp \ + asio/ip/impl/network_v4.hpp \ + asio/ip/impl/network_v4.ipp \ + asio/ip/impl/network_v6.hpp \ + asio/ip/impl/network_v6.ipp \ + asio/ip/multicast.hpp \ + asio/ip/network_v4.hpp \ + asio/ip/network_v6.hpp \ + asio/ip/resolver_base.hpp \ + asio/ip/resolver_query_base.hpp \ + asio/ip/tcp.hpp \ + asio/ip/udp.hpp \ + 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 \ + asio/local/basic_endpoint.hpp \ + asio/local/connect_pair.hpp \ + 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 \ + asio/placeholders.hpp \ + asio/posix/basic_descriptor.hpp \ + asio/posix/basic_stream_descriptor.hpp \ + asio/posix/descriptor_base.hpp \ + asio/posix/descriptor.hpp \ + 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 \ + asio/ssl/context_base.hpp \ + asio/ssl/context.hpp \ + asio/ssl/detail/buffered_handshake_op.hpp \ + asio/ssl/detail/engine.hpp \ + asio/ssl/detail/handshake_op.hpp \ + asio/ssl/detail/impl/engine.ipp \ + asio/ssl/detail/impl/openssl_init.ipp \ + asio/ssl/detail/io.hpp \ + asio/ssl/detail/openssl_init.hpp \ + asio/ssl/detail/openssl_types.hpp \ + asio/ssl/detail/password_callback.hpp \ + asio/ssl/detail/read_op.hpp \ + asio/ssl/detail/shutdown_op.hpp \ + asio/ssl/detail/stream_core.hpp \ + asio/ssl/detail/verify_callback.hpp \ + asio/ssl/detail/write_op.hpp \ + asio/ssl/error.hpp \ + asio/ssl.hpp \ + asio/ssl/host_name_verification.hpp \ + asio/ssl/impl/context.hpp \ + asio/ssl/impl/context.ipp \ + asio/ssl/impl/error.ipp \ + asio/ssl/impl/host_name_verification.ipp \ + asio/ssl/impl/rfc2818_verification.ipp \ + asio/ssl/impl/src.hpp \ + asio/ssl/rfc2818_verification.hpp \ + asio/ssl/stream_base.hpp \ + asio/ssl/stream.hpp \ + asio/ssl/verify_context.hpp \ + asio/ssl/verify_mode.hpp \ + asio/static_thread_pool.hpp \ + 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 \ + asio/system_timer.hpp \ + asio/this_coro.hpp \ + asio/thread.hpp \ + asio/thread_pool.hpp \ + asio/time_traits.hpp \ + asio/traits/equality_comparable.hpp \ + asio/traits/execute_member.hpp \ + asio/traits/prefer_free.hpp \ + asio/traits/prefer_member.hpp \ + asio/traits/query_free.hpp \ + asio/traits/query_member.hpp \ + asio/traits/query_static_constexpr_member.hpp \ + asio/traits/require_concept_free.hpp \ + asio/traits/require_concept_member.hpp \ + asio/traits/require_free.hpp \ + asio/traits/require_member.hpp \ + asio/traits/static_query.hpp \ + asio/traits/static_require.hpp \ + asio/traits/static_require_concept.hpp \ + asio/ts/buffer.hpp \ + asio/ts/executor.hpp \ + asio/ts/internet.hpp \ + asio/ts/io_context.hpp \ + asio/ts/netfwd.hpp \ + asio/ts/net.hpp \ + asio/ts/socket.hpp \ + asio/ts/timer.hpp \ + asio/unyield.hpp \ + asio/use_awaitable.hpp \ + asio/use_future.hpp \ + asio/uses_executor.hpp \ + asio/version.hpp \ + asio/wait_traits.hpp \ + asio/windows/basic_object_handle.hpp \ + asio/windows/basic_overlapped_handle.hpp \ + asio/windows/basic_random_access_handle.hpp \ + asio/windows/basic_stream_handle.hpp \ + asio/windows/object_handle.hpp \ + asio/windows/overlapped_handle.hpp \ + 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 + +MAINTAINERCLEANFILES = \ + $(srcdir)/Makefile.in diff --git a/3party/asio/include/Makefile.in b/3party/asio/include/Makefile.in new file mode 100644 index 0000000..e71be1b --- /dev/null +++ b/3party/asio/include/Makefile.in @@ -0,0 +1,1164 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(nobase_include_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" +HEADERS = $(nobase_include_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgconfigdir = @pkgconfigdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# 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 \ + asio/basic_socket_acceptor.hpp \ + asio/basic_socket.hpp \ + asio/basic_socket_iostream.hpp \ + 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 \ + asio/buffered_stream.hpp \ + 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 \ + asio/detail/buffered_stream_storage.hpp \ + asio/detail/buffer_resize_guard.hpp \ + asio/detail/buffer_sequence_adapter.hpp \ + asio/detail/call_stack.hpp \ + 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 \ + asio/detail/config.hpp \ + asio/detail/consuming_buffers.hpp \ + asio/detail/cstddef.hpp \ + asio/detail/cstdint.hpp \ + asio/detail/date_time_fwd.hpp \ + asio/detail/deadline_timer_service.hpp \ + asio/detail/dependent_type.hpp \ + asio/detail/descriptor_ops.hpp \ + asio/detail/descriptor_read_op.hpp \ + asio/detail/descriptor_write_op.hpp \ + asio/detail/dev_poll_reactor.hpp \ + 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 \ + asio/detail/fenced_block.hpp \ + asio/detail/functional.hpp \ + asio/detail/future.hpp \ + asio/detail/global.hpp \ + asio/detail/handler_alloc_helpers.hpp \ + asio/detail/handler_cont_helpers.hpp \ + asio/detail/handler_tracking.hpp \ + asio/detail/handler_type_requirements.hpp \ + asio/detail/handler_work.hpp \ + asio/detail/hash_map.hpp \ + asio/detail/impl/buffer_sequence_adapter.ipp \ + asio/detail/impl/descriptor_ops.ipp \ + asio/detail/impl/dev_poll_reactor.hpp \ + asio/detail/impl/dev_poll_reactor.ipp \ + asio/detail/impl/epoll_reactor.hpp \ + 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_socket_service_base.ipp \ + asio/detail/impl/resolver_service_base.ipp \ + asio/detail/impl/scheduler.ipp \ + asio/detail/impl/select_reactor.hpp \ + asio/detail/impl/select_reactor.ipp \ + asio/detail/impl/service_registry.hpp \ + asio/detail/impl/service_registry.ipp \ + asio/detail/impl/signal_set_service.ipp \ + asio/detail/impl/socket_ops.ipp \ + asio/detail/impl/socket_select_interrupter.ipp \ + asio/detail/impl/strand_executor_service.hpp \ + 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 \ + asio/detail/impl/win_iocp_serial_port_service.ipp \ + asio/detail/impl/win_iocp_socket_service_base.ipp \ + asio/detail/impl/win_mutex.ipp \ + asio/detail/impl/win_object_handle_service.ipp \ + asio/detail/impl/winrt_ssocket_service_base.ipp \ + asio/detail/impl/winrt_timer_scheduler.hpp \ + asio/detail/impl/winrt_timer_scheduler.ipp \ + asio/detail/impl/winsock_init.ipp \ + 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 \ + asio/detail/kqueue_reactor.hpp \ + asio/detail/limits.hpp \ + asio/detail/local_free_on_block_exit.hpp \ + asio/detail/memory.hpp \ + asio/detail/mutex.hpp \ + asio/detail/non_const_lvalue.hpp \ + asio/detail/noncopyable.hpp \ + asio/detail/null_event.hpp \ + asio/detail/null_fenced_block.hpp \ + asio/detail/null_global.hpp \ + asio/detail/null_mutex.hpp \ + asio/detail/null_reactor.hpp \ + asio/detail/null_signal_blocker.hpp \ + asio/detail/null_socket_service.hpp \ + asio/detail/null_static_mutex.hpp \ + asio/detail/null_thread.hpp \ + asio/detail/null_tss_ptr.hpp \ + asio/detail/object_pool.hpp \ + asio/detail/old_win_sdk_compat.hpp \ + asio/detail/operation.hpp \ + asio/detail/op_queue.hpp \ + asio/detail/pipe_select_interrupter.hpp \ + asio/detail/pop_options.hpp \ + asio/detail/posix_event.hpp \ + 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 \ + asio/detail/posix_tss_ptr.hpp \ + asio/detail/push_options.hpp \ + asio/detail/reactive_descriptor_service.hpp \ + asio/detail/reactive_null_buffers_op.hpp \ + asio/detail/reactive_socket_accept_op.hpp \ + asio/detail/reactive_socket_connect_op.hpp \ + asio/detail/reactive_socket_recvfrom_op.hpp \ + asio/detail/reactive_socket_recvmsg_op.hpp \ + asio/detail/reactive_socket_recv_op.hpp \ + asio/detail/reactive_socket_send_op.hpp \ + asio/detail/reactive_socket_sendto_op.hpp \ + asio/detail/reactive_socket_service_base.hpp \ + asio/detail/reactive_socket_service.hpp \ + asio/detail/reactive_wait_op.hpp \ + asio/detail/reactor.hpp \ + asio/detail/reactor_op.hpp \ + asio/detail/reactor_op_queue.hpp \ + asio/detail/recycling_allocator.hpp \ + asio/detail/regex_fwd.hpp \ + asio/detail/resolve_endpoint_op.hpp \ + asio/detail/resolve_op.hpp \ + asio/detail/resolve_query_op.hpp \ + asio/detail/resolver_service_base.hpp \ + 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 \ + asio/detail/select_interrupter.hpp \ + asio/detail/select_reactor.hpp \ + asio/detail/service_registry.hpp \ + asio/detail/signal_blocker.hpp \ + asio/detail/signal_handler.hpp \ + asio/detail/signal_init.hpp \ + asio/detail/signal_op.hpp \ + asio/detail/signal_set_service.hpp \ + asio/detail/socket_holder.hpp \ + asio/detail/socket_ops.hpp \ + asio/detail/socket_option.hpp \ + asio/detail/socket_select_interrupter.hpp \ + asio/detail/socket_types.hpp \ + asio/detail/source_location.hpp \ + asio/detail/static_mutex.hpp \ + asio/detail/std_event.hpp \ + asio/detail/std_fenced_block.hpp \ + asio/detail/std_global.hpp \ + asio/detail/std_mutex.hpp \ + asio/detail/std_static_mutex.hpp \ + asio/detail/std_thread.hpp \ + asio/detail/strand_executor_service.hpp \ + asio/detail/strand_service.hpp \ + asio/detail/string_view.hpp \ + asio/detail/thread_context.hpp \ + asio/detail/thread_group.hpp \ + asio/detail/thread.hpp \ + asio/detail/thread_info_base.hpp \ + asio/detail/throw_error.hpp \ + asio/detail/throw_exception.hpp \ + asio/detail/timer_queue_base.hpp \ + asio/detail/timer_queue.hpp \ + asio/detail/timer_queue_ptime.hpp \ + asio/detail/timer_queue_set.hpp \ + asio/detail/timer_scheduler_fwd.hpp \ + asio/detail/timer_scheduler.hpp \ + asio/detail/tss_ptr.hpp \ + asio/detail/type_traits.hpp \ + asio/detail/utility.hpp \ + asio/detail/wait_handler.hpp \ + asio/detail/wait_op.hpp \ + asio/detail/winapp_thread.hpp \ + asio/detail/wince_thread.hpp \ + asio/detail/win_event.hpp \ + asio/detail/win_fd_set_adapter.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 \ + asio/detail/win_iocp_io_context.hpp \ + asio/detail/win_iocp_null_buffers_op.hpp \ + asio/detail/win_iocp_operation.hpp \ + asio/detail/win_iocp_overlapped_op.hpp \ + asio/detail/win_iocp_overlapped_ptr.hpp \ + asio/detail/win_iocp_serial_port_service.hpp \ + asio/detail/win_iocp_socket_accept_op.hpp \ + asio/detail/win_iocp_socket_connect_op.hpp \ + asio/detail/win_iocp_socket_recvfrom_op.hpp \ + asio/detail/win_iocp_socket_recvmsg_op.hpp \ + asio/detail/win_iocp_socket_recv_op.hpp \ + asio/detail/win_iocp_socket_send_op.hpp \ + asio/detail/win_iocp_socket_service_base.hpp \ + asio/detail/win_iocp_socket_service.hpp \ + asio/detail/win_iocp_thread_info.hpp \ + asio/detail/win_iocp_wait_op.hpp \ + asio/detail/win_mutex.hpp \ + asio/detail/win_object_handle_service.hpp \ + asio/detail/winrt_async_manager.hpp \ + asio/detail/winrt_async_op.hpp \ + asio/detail/winrt_resolve_op.hpp \ + asio/detail/winrt_resolver_service.hpp \ + asio/detail/winrt_socket_connect_op.hpp \ + asio/detail/winrt_socket_recv_op.hpp \ + asio/detail/winrt_socket_send_op.hpp \ + asio/detail/winrt_ssocket_service_base.hpp \ + asio/detail/winrt_ssocket_service.hpp \ + asio/detail/winrt_timer_scheduler.hpp \ + asio/detail/winrt_utils.hpp \ + asio/detail/winsock_init.hpp \ + asio/detail/win_static_mutex.hpp \ + asio/detail/win_thread.hpp \ + asio/detail/win_tss_ptr.hpp \ + asio/detail/work_dispatcher.hpp \ + asio/detail/wrapped_handler.hpp \ + asio/dispatch.hpp \ + asio/error_code.hpp \ + asio/error.hpp \ + asio/execution.hpp \ + asio/execution_context.hpp \ + asio/execution/allocator.hpp \ + asio/execution/any_executor.hpp \ + asio/execution/bad_executor.hpp \ + asio/execution/blocking.hpp \ + asio/execution/blocking_adaptation.hpp \ + asio/execution/context.hpp \ + asio/execution/context_as.hpp \ + asio/execution/executor.hpp \ + asio/execution/impl/bad_executor.ipp \ + asio/execution/invocable_archetype.hpp \ + asio/execution/mapping.hpp \ + asio/execution/occupancy.hpp \ + asio/execution/outstanding_work.hpp \ + asio/execution/prefer_only.hpp \ + asio/execution/relationship.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 \ + asio/generic/detail/impl/endpoint.ipp \ + asio/generic/raw_protocol.hpp \ + asio/generic/seq_packet_protocol.hpp \ + asio/generic/stream_protocol.hpp \ + asio/handler_continuation_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/connect.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/error_code.ipp \ + asio/impl/error.ipp \ + asio/impl/execution_context.hpp \ + asio/impl/execution_context.ipp \ + asio/impl/executor.hpp \ + asio/impl/executor.ipp \ + asio/impl/io_context.hpp \ + asio/impl/io_context.ipp \ + asio/impl/multiple_exceptions.ipp \ + asio/impl/prepend.hpp \ + asio/impl/read_at.hpp \ + asio/impl/read.hpp \ + asio/impl/read_until.hpp \ + asio/impl/redirect_error.hpp \ + asio/impl/serial_port_base.hpp \ + asio/impl/serial_port_base.ipp \ + asio/impl/spawn.hpp \ + asio/impl/src.hpp \ + asio/impl/system_context.hpp \ + asio/impl/system_context.ipp \ + asio/impl/system_executor.hpp \ + asio/impl/thread_pool.hpp \ + asio/impl/thread_pool.ipp \ + asio/impl/use_awaitable.hpp \ + asio/impl/use_future.hpp \ + asio/impl/write_at.hpp \ + asio/impl/write.hpp \ + asio/io_context.hpp \ + asio/io_context_strand.hpp \ + asio/io_service.hpp \ + asio/io_service_strand.hpp \ + asio/ip/address.hpp \ + asio/ip/address_v4.hpp \ + asio/ip/address_v4_iterator.hpp \ + asio/ip/address_v4_range.hpp \ + asio/ip/address_v6.hpp \ + asio/ip/address_v6_iterator.hpp \ + asio/ip/address_v6_range.hpp \ + asio/ip/bad_address_cast.hpp \ + asio/ip/basic_endpoint.hpp \ + asio/ip/basic_resolver_entry.hpp \ + asio/ip/basic_resolver.hpp \ + asio/ip/basic_resolver_iterator.hpp \ + asio/ip/basic_resolver_query.hpp \ + asio/ip/basic_resolver_results.hpp \ + asio/ip/detail/endpoint.hpp \ + asio/ip/detail/impl/endpoint.ipp \ + asio/ip/detail/socket_option.hpp \ + asio/ip/host_name.hpp \ + asio/ip/icmp.hpp \ + asio/ip/impl/address.hpp \ + asio/ip/impl/address.ipp \ + asio/ip/impl/address_v4.hpp \ + asio/ip/impl/address_v4.ipp \ + asio/ip/impl/address_v6.hpp \ + asio/ip/impl/address_v6.ipp \ + asio/ip/impl/basic_endpoint.hpp \ + asio/ip/impl/host_name.ipp \ + asio/ip/impl/network_v4.hpp \ + asio/ip/impl/network_v4.ipp \ + asio/ip/impl/network_v6.hpp \ + asio/ip/impl/network_v6.ipp \ + asio/ip/multicast.hpp \ + asio/ip/network_v4.hpp \ + asio/ip/network_v6.hpp \ + asio/ip/resolver_base.hpp \ + asio/ip/resolver_query_base.hpp \ + asio/ip/tcp.hpp \ + asio/ip/udp.hpp \ + 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 \ + asio/local/basic_endpoint.hpp \ + asio/local/connect_pair.hpp \ + 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 \ + asio/placeholders.hpp \ + asio/posix/basic_descriptor.hpp \ + asio/posix/basic_stream_descriptor.hpp \ + asio/posix/descriptor_base.hpp \ + asio/posix/descriptor.hpp \ + 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 \ + asio/ssl/context_base.hpp \ + asio/ssl/context.hpp \ + asio/ssl/detail/buffered_handshake_op.hpp \ + asio/ssl/detail/engine.hpp \ + asio/ssl/detail/handshake_op.hpp \ + asio/ssl/detail/impl/engine.ipp \ + asio/ssl/detail/impl/openssl_init.ipp \ + asio/ssl/detail/io.hpp \ + asio/ssl/detail/openssl_init.hpp \ + asio/ssl/detail/openssl_types.hpp \ + asio/ssl/detail/password_callback.hpp \ + asio/ssl/detail/read_op.hpp \ + asio/ssl/detail/shutdown_op.hpp \ + asio/ssl/detail/stream_core.hpp \ + asio/ssl/detail/verify_callback.hpp \ + asio/ssl/detail/write_op.hpp \ + asio/ssl/error.hpp \ + asio/ssl.hpp \ + asio/ssl/host_name_verification.hpp \ + asio/ssl/impl/context.hpp \ + asio/ssl/impl/context.ipp \ + asio/ssl/impl/error.ipp \ + asio/ssl/impl/host_name_verification.ipp \ + asio/ssl/impl/rfc2818_verification.ipp \ + asio/ssl/impl/src.hpp \ + asio/ssl/rfc2818_verification.hpp \ + asio/ssl/stream_base.hpp \ + asio/ssl/stream.hpp \ + asio/ssl/verify_context.hpp \ + asio/ssl/verify_mode.hpp \ + asio/static_thread_pool.hpp \ + 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 \ + asio/system_timer.hpp \ + asio/this_coro.hpp \ + asio/thread.hpp \ + asio/thread_pool.hpp \ + asio/time_traits.hpp \ + asio/traits/equality_comparable.hpp \ + asio/traits/execute_member.hpp \ + asio/traits/prefer_free.hpp \ + asio/traits/prefer_member.hpp \ + asio/traits/query_free.hpp \ + asio/traits/query_member.hpp \ + asio/traits/query_static_constexpr_member.hpp \ + asio/traits/require_concept_free.hpp \ + asio/traits/require_concept_member.hpp \ + asio/traits/require_free.hpp \ + asio/traits/require_member.hpp \ + asio/traits/static_query.hpp \ + asio/traits/static_require.hpp \ + asio/traits/static_require_concept.hpp \ + asio/ts/buffer.hpp \ + asio/ts/executor.hpp \ + asio/ts/internet.hpp \ + asio/ts/io_context.hpp \ + asio/ts/netfwd.hpp \ + asio/ts/net.hpp \ + asio/ts/socket.hpp \ + asio/ts/timer.hpp \ + asio/unyield.hpp \ + asio/use_awaitable.hpp \ + asio/use_future.hpp \ + asio/uses_executor.hpp \ + asio/version.hpp \ + asio/wait_traits.hpp \ + asio/windows/basic_object_handle.hpp \ + asio/windows/basic_overlapped_handle.hpp \ + asio/windows/basic_random_access_handle.hpp \ + asio/windows/basic_stream_handle.hpp \ + asio/windows/object_handle.hpp \ + asio/windows/overlapped_handle.hpp \ + 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 + +MAINTAINERCLEANFILES = \ + $(srcdir)/Makefile.in + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-nobase_includeHEADERS: $(nobase_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ + echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ + $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-nobase_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-nobase_includeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + cscopelist-am ctags ctags-am distclean distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-nobase_includeHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-nobase_includeHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3party/asio/include/asio.hpp b/3party/asio/include/asio.hpp new file mode 100644 index 0000000..3421b58 --- /dev/null +++ b/3party/asio/include/asio.hpp @@ -0,0 +1,199 @@ +// +// asio.hpp +// ~~~~~~~~ +// +// Copyright (c) 2003-2024 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_HPP +#define ASIO_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# 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" +#include "asio/basic_socket.hpp" +#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" +#include "asio/buffered_stream.hpp" +#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" +#include "asio/error_code.hpp" +#include "asio/execution.hpp" +#include "asio/execution/allocator.hpp" +#include "asio/execution/any_executor.hpp" +#include "asio/execution/blocking.hpp" +#include "asio/execution/blocking_adaptation.hpp" +#include "asio/execution/context.hpp" +#include "asio/execution/context_as.hpp" +#include "asio/execution/executor.hpp" +#include "asio/execution/invocable_archetype.hpp" +#include "asio/execution/mapping.hpp" +#include "asio/execution/occupancy.hpp" +#include "asio/execution/outstanding_work.hpp" +#include "asio/execution/prefer_only.hpp" +#include "asio/execution/relationship.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" +#include "asio/generic/seq_packet_protocol.hpp" +#include "asio/generic/stream_protocol.hpp" +#include "asio/handler_continuation_hook.hpp" +#include "asio/high_resolution_timer.hpp" +#include "asio/io_context.hpp" +#include "asio/io_context_strand.hpp" +#include "asio/io_service.hpp" +#include "asio/io_service_strand.hpp" +#include "asio/ip/address.hpp" +#include "asio/ip/address_v4.hpp" +#include "asio/ip/address_v4_iterator.hpp" +#include "asio/ip/address_v4_range.hpp" +#include "asio/ip/address_v6.hpp" +#include "asio/ip/address_v6_iterator.hpp" +#include "asio/ip/address_v6_range.hpp" +#include "asio/ip/network_v4.hpp" +#include "asio/ip/network_v6.hpp" +#include "asio/ip/bad_address_cast.hpp" +#include "asio/ip/basic_endpoint.hpp" +#include "asio/ip/basic_resolver.hpp" +#include "asio/ip/basic_resolver_entry.hpp" +#include "asio/ip/basic_resolver_iterator.hpp" +#include "asio/ip/basic_resolver_query.hpp" +#include "asio/ip/host_name.hpp" +#include "asio/ip/icmp.hpp" +#include "asio/ip/multicast.hpp" +#include "asio/ip/resolver_base.hpp" +#include "asio/ip/resolver_query_base.hpp" +#include "asio/ip/tcp.hpp" +#include "asio/ip/udp.hpp" +#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" +#include "asio/placeholders.hpp" +#include "asio/posix/basic_descriptor.hpp" +#include "asio/posix/basic_stream_descriptor.hpp" +#include "asio/posix/descriptor.hpp" +#include "asio/posix/descriptor_base.hpp" +#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" +#include "asio/system_executor.hpp" +#include "asio/system_timer.hpp" +#include "asio/this_coro.hpp" +#include "asio/thread.hpp" +#include "asio/thread_pool.hpp" +#include "asio/time_traits.hpp" +#include "asio/use_awaitable.hpp" +#include "asio/use_future.hpp" +#include "asio/uses_executor.hpp" +#include "asio/version.hpp" +#include "asio/wait_traits.hpp" +#include "asio/windows/basic_object_handle.hpp" +#include "asio/windows/basic_overlapped_handle.hpp" +#include "asio/windows/basic_random_access_handle.hpp" +#include "asio/windows/basic_stream_handle.hpp" +#include "asio/windows/object_handle.hpp" +#include "asio/windows/overlapped_handle.hpp" +#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" + +#endif // ASIO_HPP diff --git a/3party/asio/include/asio/any_completion_executor.hpp b/3party/asio/include/asio/any_completion_executor.hpp new file mode 100644 index 0000000..650ff7b --- /dev/null +++ b/3party/asio/include/asio/any_completion_executor.hpp @@ -0,0 +1,336 @@ +// +// any_completion_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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() noexcept; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_completion_executor(nullptr_t) noexcept; + + /// Copy constructor. + ASIO_DECL any_completion_executor( + const any_completion_executor& e) noexcept; + + /// Move constructor. + ASIO_DECL any_completion_executor( + any_completion_executor&& e) noexcept; + + /// 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, + constraint_t< + 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 + > = 0) + : base_type(static_cast(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, + constraint_t< + 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 + > = 0) noexcept + : base_type(std::nothrow, static_cast(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) noexcept; + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_completion_executor(std::nothrow_t, + any_completion_executor&& e) noexcept; + + /// 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, + constraint_t< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + > = 0) + : base_type(static_cast(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, + constraint_t< + conditional< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::type::value + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_completion_executor& operator=( + const any_completion_executor& e) noexcept; + + /// Move assignment operator. + ASIO_DECL any_completion_executor& operator=( + any_completion_executor&& e) noexcept; + + /// 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) 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, + constraint_t< + traits::require_member::is_valid + > = 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, + constraint_t< + traits::prefer_member::is_valid + > = 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/3party/asio/include/asio/any_completion_handler.hpp b/3party/asio/include/asio/any_completion_handler.hpp new file mode 100644 index 0000000..45b3e75 --- /dev/null +++ b/3party/asio/include/asio/any_completion_handler.hpp @@ -0,0 +1,822 @@ +// +// any_completion_handler.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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" +#include +#include +#include +#include +#include "asio/any_completion_executor.hpp" +#include "asio/any_io_executor.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/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_(static_cast(slot), enable_total_cancellation()) + { + } + + cancellation_slot get_cancellation_slot() const 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(static_cast(slot)), + handler_(static_cast(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( + static_cast(slot), static_cast(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 noexcept + { + return any_completion_executor(std::nothrow, + (get_associated_executor)(handler_, candidate)); + } + + any_completion_executor immediate_executor( + const any_io_executor& candidate) const noexcept + { + return any_completion_executor(std::nothrow, + (get_associated_immediate_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(static_cast(handler_)); + ptr.reset(); + + static_cast(handler)( + static_cast(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, static_cast(args)...); + } + + template + static void impl(any_completion_handler_impl_base* impl, Args... args) + { + static_cast*>(impl)->call( + static_cast(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_immediate_executor_fn +{ +public: + using type = any_completion_executor(*)( + any_completion_handler_impl_base*, const any_io_executor&); + + constexpr any_completion_handler_immediate_executor_fn(type fn) + : immediate_executor_fn_(fn) + { + } + + any_completion_executor immediate_executor( + any_completion_handler_impl_base* impl, + const any_io_executor& candidate) const + { + return immediate_executor_fn_(impl, candidate); + } + + template + static any_completion_executor impl(any_completion_handler_impl_base* impl, + const any_io_executor& candidate) + { + return static_cast*>( + impl)->immediate_executor(candidate); + } + +private: + type immediate_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_immediate_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_immediate_executor_fn::type immediate_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_immediate_executor_fn(immediate_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_immediate_executor_fn::immediate_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_immediate_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) 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) + noexcept + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const noexcept + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const 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 + { + if (fn_table_) + { + return static_cast( + fn_table_->allocate( + impl_, sizeof(T) * n, alignof(T))); + } + std::bad_alloc ex; + asio::detail::throw_exception(ex); + return nullptr; + } + + /// 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) 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) + noexcept + : fn_table_(a.fn_table_), + impl_(a.impl_) + { + } + + /// Equality operator. + constexpr bool operator==( + const any_completion_handler_allocator& other) const noexcept + { + return fn_table_ == other.fn_table_ && impl_ == other.impl_; + } + + /// Inequality operator. + constexpr bool operator!=( + const any_completion_handler_allocator& other) const 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; + + template + friend struct associated_immediate_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 > + any_completion_handler(H&& h, + constraint_t< + !is_same, any_completion_handler>::value + > = 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), static_cast(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) 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) noexcept + { + any_completion_handler( + static_cast(other)).swap(*this); + return *this; + } + + /// Assignment operator that sets the polymorphic wrapper to the empty state. + any_completion_handler& operator=(nullptr_t) 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 noexcept + { + return impl_ != nullptr; + } + + /// Test if the polymorphic wrapper is non-empty. + constexpr bool operator!() const noexcept + { + return impl_ == nullptr; + } + + /// Swap the content of an @c any_completion_handler with another. + void swap(any_completion_handler& other) noexcept + { + std::swap(fn_table_, other.fn_table_); + std::swap(impl_, other.impl_); + } + + /// Get the associated allocator. + allocator_type get_allocator() const noexcept + { + return allocator_type(0, *this); + } + + /// Get the associated cancellation slot. + cancellation_slot_type get_cancellation_slot() const noexcept + { + return impl_ ? impl_->get_cancellation_slot() : cancellation_slot_type(); + } + + /// 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_, static_cast(args)...)) + { + if (detail::any_completion_handler_impl_base* impl = impl_) + { + impl_ = nullptr; + return fn_table_->call(impl, static_cast(args)...); + } + std::bad_function_call ex; + asio::detail::throw_exception(ex); + } + + /// Equality operator. + friend constexpr bool operator==( + const any_completion_handler& a, nullptr_t) noexcept + { + return a.impl_ == nullptr; + } + + /// Equality operator. + friend constexpr bool operator==( + nullptr_t, const any_completion_handler& b) noexcept + { + return nullptr == b.impl_; + } + + /// Inequality operator. + friend constexpr bool operator!=( + const any_completion_handler& a, nullptr_t) noexcept + { + return a.impl_ != nullptr; + } + + /// Inequality operator. + friend constexpr bool operator!=( + nullptr_t, const any_completion_handler& b) 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()) noexcept + { + any_completion_executor any_candidate(std::nothrow, candidate); + return handler.fn_table_ + ? handler.fn_table_->executor(handler.impl_, any_candidate) + : any_candidate; + } +}; + +template +struct associated_immediate_executor< + any_completion_handler, Candidate> +{ + using type = any_completion_executor; + + static type get(const any_completion_handler& handler, + const Candidate& candidate = Candidate()) noexcept + { + any_io_executor any_candidate(std::nothrow, candidate); + return handler.fn_table_ + ? handler.fn_table_->immediate_executor(handler.impl_, any_candidate) + : any_candidate; + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ANY_COMPLETION_HANDLER_HPP diff --git a/3party/asio/include/asio/any_io_executor.hpp b/3party/asio/include/asio/any_io_executor.hpp new file mode 100644 index 0000000..d35acf4 --- /dev/null +++ b/3party/asio/include/asio/any_io_executor.hpp @@ -0,0 +1,351 @@ +// +// any_io_executor.hpp +// ~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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_IO_EXECUTOR_HPP +#define ASIO_ANY_IO_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" +# include "asio/execution_context.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_io_executor; + +#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + +/// Polymorphic executor type for use with I/O objects. +/** + * The @c any_io_executor type is a polymorphic executor that supports the set + * of properties required by I/O objects. It is defined as the + * execution::any_executor class template parameterised as follows: + * @code 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 + * > @endcode + */ +class any_io_executor : +#if defined(GENERATING_DOCUMENTATION) + public execution::any_executor<...> +#else // defined(GENERATING_DOCUMENTATION) + 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() noexcept; + + /// Construct in an empty state. Equivalent effects to default constructor. + ASIO_DECL any_io_executor(nullptr_t) noexcept; + + /// Copy constructor. + ASIO_DECL any_io_executor(const any_io_executor& e) noexcept; + + /// Move constructor. + ASIO_DECL any_io_executor(any_io_executor&& e) noexcept; + + /// 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, + constraint_t< + conditional_t< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::value + > = 0) + : base_type(static_cast(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, + constraint_t< + conditional_t< + !is_same::value + && is_base_of::value, + typename execution::detail::supportable_properties< + 0, supportable_properties_type>::template + is_valid_target, + false_type + >::value + > = 0) noexcept + : base_type(std::nothrow, static_cast(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) noexcept; + + /// Construct to point to the same target as another any_executor. + ASIO_DECL any_io_executor(std::nothrow_t, any_io_executor&& e) noexcept; + + /// 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, + constraint_t< + conditional_t< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::value + > = 0) + : base_type(static_cast(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, + constraint_t< + conditional_t< + !is_same::value + && !is_base_of::value, + execution::detail::is_valid_target_executor< + Executor, supportable_properties_type>, + false_type + >::value + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) + { + } +#endif // defined(GENERATING_DOCUMENTATION) + + /// Assignment operator. + ASIO_DECL any_io_executor& operator=( + const any_io_executor& e) noexcept; + + /// Move assignment operator. + ASIO_DECL any_io_executor& operator=(any_io_executor&& e) noexcept; + + /// 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) 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, + constraint_t< + traits::require_member::is_valid + > = 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, + constraint_t< + traits::prefer_member::is_valid + > = 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) + +} // namespace asio + +#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/3party/asio/include/asio/append.hpp b/3party/asio/include/asio/append.hpp new file mode 100644 index 0000000..0460892 --- /dev/null +++ b/3party/asio/include/asio/append.hpp @@ -0,0 +1,65 @@ +// +// append.hpp +// ~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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" +#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 + constexpr explicit append_t(T&& completion_token, V&&... values) + : token_(static_cast(completion_token)), + values_(static_cast(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 constexpr +append_t, decay_t...> +append(CompletionToken&& completion_token, Values&&... values) +{ + return append_t, decay_t...>( + static_cast(completion_token), + static_cast(values)...); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/append.hpp" + +#endif // ASIO_APPEND_HPP diff --git a/3party/asio/include/asio/as_tuple.hpp b/3party/asio/include/asio/as_tuple.hpp new file mode 100644 index 0000000..60008bd --- /dev/null +++ b/3party/asio/include/asio/as_tuple.hpp @@ -0,0 +1,126 @@ +// +// as_tuple.hpp +// ~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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" +#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. + */ + constexpr as_tuple_t( + default_constructor_tag = default_constructor_tag(), + CompletionToken token = CompletionToken()) + : token_(static_cast(token)) + { + } + + /// Constructor. + template + constexpr explicit as_tuple_t( + T&& completion_token) + : token_(static_cast(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, + constraint_t< + conditional_t< + !is_same::value, + is_convertible, + false_type + >::value + > = 0) noexcept + : InnerExecutor(ex) + { + } + }; + + /// Type alias to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. + template + using as_default_on_t = typename T::template rebind_executor< + executor_with_default>::other; + + /// Function helper to adapt an I/O object to use @c as_tuple_t as its + /// default completion token type. + template + static typename decay_t::template rebind_executor< + executor_with_default::executor_type> + >::other + as_default_on(T&& object) + { + return typename decay_t::template rebind_executor< + executor_with_default::executor_type> + >::other(static_cast(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 +constexpr as_tuple_t> +as_tuple(CompletionToken&& completion_token) +{ + return as_tuple_t>( + static_cast(completion_token)); +} + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#include "asio/impl/as_tuple.hpp" + +#endif // ASIO_AS_TUPLE_HPP diff --git a/3party/asio/include/asio/associated_allocator.hpp b/3party/asio/include/asio/associated_allocator.hpp new file mode 100644 index 0000000..f21ea25 --- /dev/null +++ b/3party/asio/include/asio/associated_allocator.hpp @@ -0,0 +1,214 @@ +// +// associated_allocator.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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_ALLOCATOR_HPP +#define ASIO_ASSOCIATED_ALLOCATOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#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 +struct has_allocator_type : false_type +{ +}; + +template +struct has_allocator_type> : true_type +{ +}; + +template +struct associated_allocator_impl +{ + typedef void asio_associated_allocator_is_unspecialised; + + typedef A type; + + static type get(const T&) noexcept + { + return type(); + } + + static const type& get(const T&, const A& a) noexcept + { + return a; + } +}; + +template +struct associated_allocator_impl> +{ + typedef typename T::allocator_type type; + + static auto get(const T& t) noexcept + -> decltype(t.get_allocator()) + { + return t.get_allocator(); + } + + static auto get(const T& t, const A&) noexcept + -> decltype(t.get_allocator()) + { + return t.get_allocator(); + } +}; + +template +struct associated_allocator_impl::value + >, + void_t< + typename associator::type + >> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the allocator 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 + * Allocator shall be a type meeting the Allocator requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c a is an object of type @c + * Allocator. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * Allocator 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,a) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template > +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. + typedef see_below type; + + /// 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) noexcept; + + /// If @c T has a nested type @c allocator_type, returns + /// t.get_allocator(). Otherwise returns @c a. + static decltype(auto) get(const T& t, const Allocator& a) noexcept; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated allocator. +/** + * @returns associated_allocator::get(t) + */ +template +ASIO_NODISCARD inline typename associated_allocator::type +get_associated_allocator(const T& t) noexcept +{ + return associated_allocator::get(t); +} + +/// Helper function to obtain an object's associated allocator. +/** + * @returns associated_allocator::get(t, a) + */ +template +ASIO_NODISCARD inline auto get_associated_allocator( + const T& t, const Allocator& a) noexcept + -> decltype(associated_allocator::get(t, a)) +{ + return associated_allocator::get(t, a); +} + +template > +using associated_allocator_t + = typename associated_allocator::type; + +namespace detail { + +template +struct associated_allocator_forwarding_base +{ +}; + +template +struct associated_allocator_forwarding_base::asio_associated_allocator_is_unspecialised, + void + >::value + >> +{ + typedef void asio_associated_allocator_is_unspecialised; +}; + +} // namespace detail + +/// 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) 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 auto get(reference_wrapper t, const Allocator& a) noexcept + -> decltype(associated_allocator::get(t.get(), a)) + { + return associated_allocator::get(t.get(), a); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_ALLOCATOR_HPP diff --git a/3party/asio/include/asio/associated_cancellation_slot.hpp b/3party/asio/include/asio/associated_cancellation_slot.hpp new file mode 100644 index 0000000..518bd88 --- /dev/null +++ b/3party/asio/include/asio/associated_cancellation_slot.hpp @@ -0,0 +1,221 @@ +// +// associated_cancellation_slot.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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> + : true_type +{ +}; + +template +struct associated_cancellation_slot_impl +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; + + typedef S type; + + static type get(const T&) noexcept + { + return type(); + } + + static const type& get(const T&, const S& s) noexcept + { + return s; + } +}; + +template +struct associated_cancellation_slot_impl> +{ + typedef typename T::cancellation_slot_type type; + + static auto get(const T& t) noexcept + -> decltype(t.get_cancellation_slot()) + { + return t.get_cancellation_slot(); + } + + static auto get(const T& t, const S&) noexcept + -> decltype(t.get_cancellation_slot()) + { + return t.get_cancellation_slot(); + } +}; + +template +struct associated_cancellation_slot_impl::value + >, + void_t< + typename associator::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) 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) 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) 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 auto get_associated_cancellation_slot( + const T& t, const CancellationSlot& st) noexcept + -> decltype(associated_cancellation_slot::get(t, st)) +{ + return associated_cancellation_slot::get(t, st); +} + +template +using associated_cancellation_slot_t = + typename associated_cancellation_slot::type; + +namespace detail { + +template +struct associated_cancellation_slot_forwarding_base +{ +}; + +template +struct associated_cancellation_slot_forwarding_base::asio_associated_cancellation_slot_is_unspecialised, + void + >::value + >> +{ + typedef void asio_associated_cancellation_slot_is_unspecialised; +}; + +} // namespace detail + +/// 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) 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 auto get(reference_wrapper t, const CancellationSlot& s) noexcept + -> decltype( + associated_cancellation_slot::get(t.get(), s)) + { + return associated_cancellation_slot::get(t.get(), s); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP diff --git a/3party/asio/include/asio/associated_executor.hpp b/3party/asio/include/asio/associated_executor.hpp new file mode 100644 index 0000000..4ca7ba1 --- /dev/null +++ b/3party/asio/include/asio/associated_executor.hpp @@ -0,0 +1,235 @@ +// +// associated_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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_EXECUTOR_HPP +#define ASIO_ASSOCIATED_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/executor.hpp" +#include "asio/is_executor.hpp" +#include "asio/system_executor.hpp" + +#include "asio/detail/push_options.hpp" + +namespace asio { + +template +struct associated_executor; + +namespace detail { + +template +struct has_executor_type : false_type +{ +}; + +template +struct has_executor_type> + : true_type +{ +}; + +template +struct associated_executor_impl +{ + typedef void asio_associated_executor_is_unspecialised; + + typedef E type; + + static type get(const T&) noexcept + { + return type(); + } + + static const type& get(const T&, const E& e) noexcept + { + return e; + } +}; + +template +struct associated_executor_impl> +{ + typedef typename T::executor_type type; + + static auto get(const T& t) noexcept + -> decltype(t.get_executor()) + { + return t.get_executor(); + } + + static auto get(const T& t, const E&) noexcept + -> decltype(t.get_executor()) + { + return t.get_executor(); + } +}; + +template +struct associated_executor_impl::value + >, + void_t< + typename associator::type + >> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the 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_executor +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_executor_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c executor_type, T::executor_type. + /// 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) noexcept; + + /// If @c T has a nested type @c executor_type, returns + /// t.get_executor(). Otherwise returns @c ex. + static decltype(auto) get(const T& t, const Executor& ex) noexcept; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_executor::get(t) + */ +template +ASIO_NODISCARD inline typename associated_executor::type +get_associated_executor(const T& t) noexcept +{ + return associated_executor::get(t); +} + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_executor::get(t, ex) + */ +template +ASIO_NODISCARD inline auto get_associated_executor( + const T& t, const Executor& ex, + constraint_t< + is_executor::value || execution::is_executor::value + > = 0) noexcept + -> decltype(associated_executor::get(t, ex)) +{ + return associated_executor::get(t, ex); +} + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_executor::get(t, ctx.get_executor()) + */ +template +ASIO_NODISCARD inline typename associated_executor::type +get_associated_executor(const T& t, ExecutionContext& ctx, + constraint_t::value> = 0) noexcept +{ + return associated_executor::get(t, ctx.get_executor()); +} + +template +using associated_executor_t = typename associated_executor::type; + +namespace detail { + +template +struct associated_executor_forwarding_base +{ +}; + +template +struct associated_executor_forwarding_base::asio_associated_executor_is_unspecialised, + void + >::value + >> +{ + typedef void asio_associated_executor_is_unspecialised; +}; + +} // namespace detail + +/// Specialisation of associated_executor for @c std::reference_wrapper. +template +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) 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 auto get(reference_wrapper t, const Executor& ex) noexcept + -> decltype(associated_executor::get(t.get(), ex)) + { + return associated_executor::get(t.get(), ex); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_EXECUTOR_HPP diff --git a/3party/asio/include/asio/associated_immediate_executor.hpp b/3party/asio/include/asio/associated_immediate_executor.hpp new file mode 100644 index 0000000..aa6e0fc --- /dev/null +++ b/3party/asio/include/asio/associated_immediate_executor.hpp @@ -0,0 +1,280 @@ +// +// associated_immediate_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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> + : true_type +{ +}; + +template +struct default_immediate_executor +{ + typedef require_result_t type; + + static type get(const E& e) noexcept + { + return asio::require(e, execution::blocking.never); + } +}; + +template +struct default_immediate_executor::value + >, + enable_if_t< + is_executor::value + >> +{ + class type : public E + { + public: + template + explicit type(const Executor1& e, + constraint_t< + conditional_t< + !is_same::value, + is_convertible, + false_type + >::value + > = 0) noexcept + : E(e) + { + } + + type(const type& other) noexcept + : E(static_cast(other)) + { + } + + type(type&& other) noexcept + : E(static_cast(other)) + { + } + + template + void dispatch(Function&& f, const Allocator& a) const + { + this->post(static_cast(f), a); + } + + friend bool operator==(const type& a, const type& b) noexcept + { + return static_cast(a) == static_cast(b); + } + + friend bool operator!=(const type& a, const type& b) noexcept + { + return static_cast(a) != static_cast(b); + } + }; + + static type get(const E& e) 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 auto get(const T&, const E& e) noexcept + -> decltype(default_immediate_executor::get(e)) + { + return default_immediate_executor::get(e); + } +}; + +template +struct associated_immediate_executor_impl> +{ + typedef typename T::immediate_executor_type type; + + static auto get(const T& t, const E&) noexcept + -> decltype(t.get_immediate_executor()) + { + return t.get_immediate_executor(); + } +}; + +template +struct associated_immediate_executor_impl::value + >, + void_t< + typename associator::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) 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 auto get_associated_immediate_executor( + const T& t, const Executor& ex, + constraint_t< + is_executor::value || execution::is_executor::value + > = 0) noexcept + -> decltype(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, + constraint_t< + is_convertible::value + > = 0) noexcept +{ + return associated_immediate_executor::get(t, ctx.get_executor()); +} + +template +using associated_immediate_executor_t = + typename associated_immediate_executor::type; + +namespace detail { + +template +struct associated_immediate_executor_forwarding_base +{ +}; + +template +struct associated_immediate_executor_forwarding_base::asio_associated_immediate_executor_is_unspecialised, + void + >::value + >> +{ + typedef void asio_associated_immediate_executor_is_unspecialised; +}; + +} // namespace detail + +/// 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 auto get(reference_wrapper t, const Executor& ex) noexcept + -> decltype(associated_immediate_executor::get(t.get(), ex)) + { + return associated_immediate_executor::get(t.get(), ex); + } +}; + +} // namespace asio + +#include "asio/detail/pop_options.hpp" + +#endif // ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP diff --git a/3party/asio/include/asio/associator.hpp b/3party/asio/include/asio/associator.hpp new file mode 100644 index 0000000..7952fcc --- /dev/null +++ b/3party/asio/include/asio/associator.hpp @@ -0,0 +1,35 @@ +// +// associator.hpp +// ~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2024 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