diff options
Diffstat (limited to '3rdparty/asio/src/examples/cpp03')
177 files changed, 3197 insertions, 2453 deletions
diff --git a/3rdparty/asio/src/examples/cpp03/Makefile.am b/3rdparty/asio/src/examples/cpp03/Makefile.am index adacab88ef6..0e6e0d378f2 100644 --- a/3rdparty/asio/src/examples/cpp03/Makefile.am +++ b/3rdparty/asio/src/examples/cpp03/Makefile.am @@ -40,6 +40,7 @@ noinst_PROGRAMS = \ socks4/sync_client \ timeouts/async_tcp_client \ timeouts/blocking_tcp_client \ + timeouts/blocking_token_tcp_client \ timeouts/blocking_udp_client \ timeouts/server \ timers/time_t_timer \ @@ -153,6 +154,7 @@ services_daytime_client_SOURCES = \ socks4_sync_client_SOURCES = socks4/sync_client.cpp timeouts_async_tcp_client_SOURCES = timeouts/async_tcp_client.cpp timeouts_blocking_tcp_client_SOURCES = timeouts/blocking_tcp_client.cpp +timeouts_blocking_token_tcp_client_SOURCES = timeouts/blocking_token_tcp_client.cpp timeouts_blocking_udp_client_SOURCES = timeouts/blocking_udp_client.cpp timeouts_server_SOURCES = timeouts/server.cpp timers_time_t_timer_SOURCES = timers/time_t_timer.cpp @@ -243,8 +245,7 @@ EXTRA_DIST = \ ssl/README \ ssl/ca.pem \ ssl/server.pem \ - ssl/dh2048.pem \ - timers/tick_count_timer.cpp + ssl/dh2048.pem MAINTAINERCLEANFILES = \ $(srcdir)/Makefile.in diff --git a/3rdparty/asio/src/examples/cpp03/Makefile.in b/3rdparty/asio/src/examples/cpp03/Makefile.in new file mode 100644 index 00000000000..2fc8903af3a --- /dev/null +++ b/3rdparty/asio/src/examples/cpp03/Makefile.in @@ -0,0 +1,2339 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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@ +@HAVE_OPENSSL_TRUE@@SEPARATE_COMPILATION_TRUE@am__append_1 = ../../asio_ssl.cpp +noinst_PROGRAMS = allocation/server$(EXEEXT) \ + buffers/reference_counted$(EXEEXT) chat/chat_client$(EXEEXT) \ + chat/chat_server$(EXEEXT) echo/async_tcp_echo_server$(EXEEXT) \ + echo/async_udp_echo_server$(EXEEXT) \ + echo/blocking_tcp_echo_client$(EXEEXT) \ + echo/blocking_tcp_echo_server$(EXEEXT) \ + echo/blocking_udp_echo_client$(EXEEXT) \ + echo/blocking_udp_echo_server$(EXEEXT) \ + http/client/async_client$(EXEEXT) \ + http/client/sync_client$(EXEEXT) \ + http/server/http_server$(EXEEXT) \ + http/server2/http_server$(EXEEXT) \ + http/server3/http_server$(EXEEXT) \ + http/server4/http_server$(EXEEXT) icmp/ping$(EXEEXT) \ + invocation/prioritised_handlers$(EXEEXT) \ + iostreams/daytime_client$(EXEEXT) \ + iostreams/daytime_server$(EXEEXT) \ + iostreams/http_client$(EXEEXT) multicast/receiver$(EXEEXT) \ + multicast/sender$(EXEEXT) nonblocking/third_party_lib$(EXEEXT) \ + porthopper/client$(EXEEXT) porthopper/server$(EXEEXT) \ + services/daytime_client$(EXEEXT) socks4/sync_client$(EXEEXT) \ + timeouts/async_tcp_client$(EXEEXT) \ + timeouts/blocking_tcp_client$(EXEEXT) \ + timeouts/blocking_token_tcp_client$(EXEEXT) \ + timeouts/blocking_udp_client$(EXEEXT) timeouts/server$(EXEEXT) \ + timers/time_t_timer$(EXEEXT) tutorial/timer1/timer$(EXEEXT) \ + tutorial/timer2/timer$(EXEEXT) tutorial/timer3/timer$(EXEEXT) \ + tutorial/timer4/timer$(EXEEXT) tutorial/timer5/timer$(EXEEXT) \ + tutorial/daytime1/client$(EXEEXT) \ + tutorial/daytime2/server$(EXEEXT) \ + tutorial/daytime3/server$(EXEEXT) \ + tutorial/daytime4/client$(EXEEXT) \ + tutorial/daytime5/server$(EXEEXT) \ + tutorial/daytime6/server$(EXEEXT) \ + tutorial/daytime7/server$(EXEEXT) $(am__EXEEXT_1) \ + $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) +@WINDOWS_TARGET_FALSE@am__append_2 = \ +@WINDOWS_TARGET_FALSE@ chat/posix_chat_client \ +@WINDOWS_TARGET_FALSE@ fork/daemon \ +@WINDOWS_TARGET_FALSE@ fork/process_per_connection \ +@WINDOWS_TARGET_FALSE@ local/connect_pair \ +@WINDOWS_TARGET_FALSE@ local/iostream_client \ +@WINDOWS_TARGET_FALSE@ local/stream_server \ +@WINDOWS_TARGET_FALSE@ local/stream_client + +@WINDOWS_TARGET_TRUE@am__append_3 = \ +@WINDOWS_TARGET_TRUE@ windows/transmit_file + +@HAVE_OPENSSL_TRUE@am__append_4 = \ +@HAVE_OPENSSL_TRUE@ ssl/client \ +@HAVE_OPENSSL_TRUE@ ssl/server + +@HAVE_BOOST_COROUTINE_TRUE@am__append_5 = \ +@HAVE_BOOST_COROUTINE_TRUE@ spawn/echo_server \ +@HAVE_BOOST_COROUTINE_TRUE@ spawn/parallel_grep + +subdir = src/examples/cpp03 +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 $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@WINDOWS_TARGET_FALSE@am__EXEEXT_1 = chat/posix_chat_client$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ fork/daemon$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ fork/process_per_connection$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ local/connect_pair$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ local/iostream_client$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ local/stream_server$(EXEEXT) \ +@WINDOWS_TARGET_FALSE@ local/stream_client$(EXEEXT) +@WINDOWS_TARGET_TRUE@am__EXEEXT_2 = windows/transmit_file$(EXEEXT) +@HAVE_OPENSSL_TRUE@am__EXEEXT_3 = ssl/client$(EXEEXT) \ +@HAVE_OPENSSL_TRUE@ ssl/server$(EXEEXT) +@HAVE_BOOST_COROUTINE_TRUE@am__EXEEXT_4 = spawn/echo_server$(EXEEXT) \ +@HAVE_BOOST_COROUTINE_TRUE@ spawn/parallel_grep$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libasio_a_AR = $(AR) $(ARFLAGS) +libasio_a_LIBADD = +am__libasio_a_SOURCES_DIST = ../../asio.cpp ../../asio_ssl.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_OPENSSL_TRUE@@SEPARATE_COMPILATION_TRUE@am__objects_1 = ../../asio_ssl.$(OBJEXT) +@SEPARATE_COMPILATION_TRUE@am_libasio_a_OBJECTS = \ +@SEPARATE_COMPILATION_TRUE@ ../../asio.$(OBJEXT) \ +@SEPARATE_COMPILATION_TRUE@ $(am__objects_1) +libasio_a_OBJECTS = $(am_libasio_a_OBJECTS) +am_allocation_server_OBJECTS = allocation/server.$(OBJEXT) +allocation_server_OBJECTS = $(am_allocation_server_OBJECTS) +allocation_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@allocation_server_DEPENDENCIES = libasio.a +am_buffers_reference_counted_OBJECTS = \ + buffers/reference_counted.$(OBJEXT) +buffers_reference_counted_OBJECTS = \ + $(am_buffers_reference_counted_OBJECTS) +buffers_reference_counted_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@buffers_reference_counted_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_chat_chat_client_OBJECTS = chat/chat_client.$(OBJEXT) +chat_chat_client_OBJECTS = $(am_chat_chat_client_OBJECTS) +chat_chat_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@chat_chat_client_DEPENDENCIES = libasio.a +am_chat_chat_server_OBJECTS = chat/chat_server.$(OBJEXT) +chat_chat_server_OBJECTS = $(am_chat_chat_server_OBJECTS) +chat_chat_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@chat_chat_server_DEPENDENCIES = libasio.a +am__chat_posix_chat_client_SOURCES_DIST = chat/posix_chat_client.cpp +@WINDOWS_TARGET_FALSE@am_chat_posix_chat_client_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ chat/posix_chat_client.$(OBJEXT) +chat_posix_chat_client_OBJECTS = $(am_chat_posix_chat_client_OBJECTS) +chat_posix_chat_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@chat_posix_chat_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_async_tcp_echo_server_OBJECTS = \ + echo/async_tcp_echo_server.$(OBJEXT) +echo_async_tcp_echo_server_OBJECTS = \ + $(am_echo_async_tcp_echo_server_OBJECTS) +echo_async_tcp_echo_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_async_tcp_echo_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_async_udp_echo_server_OBJECTS = \ + echo/async_udp_echo_server.$(OBJEXT) +echo_async_udp_echo_server_OBJECTS = \ + $(am_echo_async_udp_echo_server_OBJECTS) +echo_async_udp_echo_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_async_udp_echo_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_blocking_tcp_echo_client_OBJECTS = \ + echo/blocking_tcp_echo_client.$(OBJEXT) +echo_blocking_tcp_echo_client_OBJECTS = \ + $(am_echo_blocking_tcp_echo_client_OBJECTS) +echo_blocking_tcp_echo_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_blocking_tcp_echo_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_blocking_tcp_echo_server_OBJECTS = \ + echo/blocking_tcp_echo_server.$(OBJEXT) +echo_blocking_tcp_echo_server_OBJECTS = \ + $(am_echo_blocking_tcp_echo_server_OBJECTS) +echo_blocking_tcp_echo_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_blocking_tcp_echo_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_blocking_udp_echo_client_OBJECTS = \ + echo/blocking_udp_echo_client.$(OBJEXT) +echo_blocking_udp_echo_client_OBJECTS = \ + $(am_echo_blocking_udp_echo_client_OBJECTS) +echo_blocking_udp_echo_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_blocking_udp_echo_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_echo_blocking_udp_echo_server_OBJECTS = \ + echo/blocking_udp_echo_server.$(OBJEXT) +echo_blocking_udp_echo_server_OBJECTS = \ + $(am_echo_blocking_udp_echo_server_OBJECTS) +echo_blocking_udp_echo_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@echo_blocking_udp_echo_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__fork_daemon_SOURCES_DIST = fork/daemon.cpp +@WINDOWS_TARGET_FALSE@am_fork_daemon_OBJECTS = fork/daemon.$(OBJEXT) +fork_daemon_OBJECTS = $(am_fork_daemon_OBJECTS) +fork_daemon_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@fork_daemon_DEPENDENCIES = libasio.a +am__fork_process_per_connection_SOURCES_DIST = \ + fork/process_per_connection.cpp +@WINDOWS_TARGET_FALSE@am_fork_process_per_connection_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ fork/process_per_connection.$(OBJEXT) +fork_process_per_connection_OBJECTS = \ + $(am_fork_process_per_connection_OBJECTS) +fork_process_per_connection_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@fork_process_per_connection_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_client_async_client_OBJECTS = \ + http/client/async_client.$(OBJEXT) +http_client_async_client_OBJECTS = \ + $(am_http_client_async_client_OBJECTS) +http_client_async_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_client_async_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_client_sync_client_OBJECTS = \ + http/client/sync_client.$(OBJEXT) +http_client_sync_client_OBJECTS = \ + $(am_http_client_sync_client_OBJECTS) +http_client_sync_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_client_sync_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_server_http_server_OBJECTS = http/server/connection.$(OBJEXT) \ + http/server/connection_manager.$(OBJEXT) \ + http/server/main.$(OBJEXT) http/server/mime_types.$(OBJEXT) \ + http/server/reply.$(OBJEXT) \ + http/server/request_handler.$(OBJEXT) \ + http/server/request_parser.$(OBJEXT) \ + http/server/server.$(OBJEXT) +http_server_http_server_OBJECTS = \ + $(am_http_server_http_server_OBJECTS) +http_server_http_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_server_http_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_server2_http_server_OBJECTS = \ + http/server2/connection.$(OBJEXT) \ + http/server2/io_context_pool.$(OBJEXT) \ + http/server2/main.$(OBJEXT) http/server2/mime_types.$(OBJEXT) \ + http/server2/reply.$(OBJEXT) \ + http/server2/request_handler.$(OBJEXT) \ + http/server2/request_parser.$(OBJEXT) \ + http/server2/server.$(OBJEXT) +http_server2_http_server_OBJECTS = \ + $(am_http_server2_http_server_OBJECTS) +http_server2_http_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_server2_http_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_server3_http_server_OBJECTS = \ + http/server3/connection.$(OBJEXT) http/server3/main.$(OBJEXT) \ + http/server3/mime_types.$(OBJEXT) http/server3/reply.$(OBJEXT) \ + http/server3/request_handler.$(OBJEXT) \ + http/server3/request_parser.$(OBJEXT) \ + http/server3/server.$(OBJEXT) +http_server3_http_server_OBJECTS = \ + $(am_http_server3_http_server_OBJECTS) +http_server3_http_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_server3_http_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_http_server4_http_server_OBJECTS = \ + http/server4/file_handler.$(OBJEXT) \ + http/server4/main.$(OBJEXT) http/server4/mime_types.$(OBJEXT) \ + http/server4/reply.$(OBJEXT) \ + http/server4/request_parser.$(OBJEXT) \ + http/server4/server.$(OBJEXT) +http_server4_http_server_OBJECTS = \ + $(am_http_server4_http_server_OBJECTS) +http_server4_http_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@http_server4_http_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_icmp_ping_OBJECTS = icmp/ping.$(OBJEXT) +icmp_ping_OBJECTS = $(am_icmp_ping_OBJECTS) +icmp_ping_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@icmp_ping_DEPENDENCIES = libasio.a +am_invocation_prioritised_handlers_OBJECTS = \ + invocation/prioritised_handlers.$(OBJEXT) +invocation_prioritised_handlers_OBJECTS = \ + $(am_invocation_prioritised_handlers_OBJECTS) +invocation_prioritised_handlers_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@invocation_prioritised_handlers_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_iostreams_daytime_client_OBJECTS = \ + iostreams/daytime_client.$(OBJEXT) +iostreams_daytime_client_OBJECTS = \ + $(am_iostreams_daytime_client_OBJECTS) +iostreams_daytime_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@iostreams_daytime_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_iostreams_daytime_server_OBJECTS = \ + iostreams/daytime_server.$(OBJEXT) +iostreams_daytime_server_OBJECTS = \ + $(am_iostreams_daytime_server_OBJECTS) +iostreams_daytime_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@iostreams_daytime_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_iostreams_http_client_OBJECTS = iostreams/http_client.$(OBJEXT) +iostreams_http_client_OBJECTS = $(am_iostreams_http_client_OBJECTS) +iostreams_http_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@iostreams_http_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__local_connect_pair_SOURCES_DIST = local/connect_pair.cpp +@WINDOWS_TARGET_FALSE@am_local_connect_pair_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ local/connect_pair.$(OBJEXT) +local_connect_pair_OBJECTS = $(am_local_connect_pair_OBJECTS) +local_connect_pair_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@local_connect_pair_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__local_iostream_client_SOURCES_DIST = local/iostream_client.cpp +@WINDOWS_TARGET_FALSE@am_local_iostream_client_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ local/iostream_client.$(OBJEXT) +local_iostream_client_OBJECTS = $(am_local_iostream_client_OBJECTS) +local_iostream_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@local_iostream_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__local_stream_client_SOURCES_DIST = local/stream_client.cpp +@WINDOWS_TARGET_FALSE@am_local_stream_client_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ local/stream_client.$(OBJEXT) +local_stream_client_OBJECTS = $(am_local_stream_client_OBJECTS) +local_stream_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@local_stream_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__local_stream_server_SOURCES_DIST = local/stream_server.cpp +@WINDOWS_TARGET_FALSE@am_local_stream_server_OBJECTS = \ +@WINDOWS_TARGET_FALSE@ local/stream_server.$(OBJEXT) +local_stream_server_OBJECTS = $(am_local_stream_server_OBJECTS) +local_stream_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@local_stream_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_multicast_receiver_OBJECTS = multicast/receiver.$(OBJEXT) +multicast_receiver_OBJECTS = $(am_multicast_receiver_OBJECTS) +multicast_receiver_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@multicast_receiver_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_multicast_sender_OBJECTS = multicast/sender.$(OBJEXT) +multicast_sender_OBJECTS = $(am_multicast_sender_OBJECTS) +multicast_sender_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@multicast_sender_DEPENDENCIES = libasio.a +am_nonblocking_third_party_lib_OBJECTS = \ + nonblocking/third_party_lib.$(OBJEXT) +nonblocking_third_party_lib_OBJECTS = \ + $(am_nonblocking_third_party_lib_OBJECTS) +nonblocking_third_party_lib_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@nonblocking_third_party_lib_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_porthopper_client_OBJECTS = porthopper/client.$(OBJEXT) +porthopper_client_OBJECTS = $(am_porthopper_client_OBJECTS) +porthopper_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@porthopper_client_DEPENDENCIES = libasio.a +am_porthopper_server_OBJECTS = porthopper/server.$(OBJEXT) +porthopper_server_OBJECTS = $(am_porthopper_server_OBJECTS) +porthopper_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@porthopper_server_DEPENDENCIES = libasio.a +am_services_daytime_client_OBJECTS = \ + services/daytime_client.$(OBJEXT) \ + services/logger_service.$(OBJEXT) +services_daytime_client_OBJECTS = \ + $(am_services_daytime_client_OBJECTS) +services_daytime_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@services_daytime_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_socks4_sync_client_OBJECTS = socks4/sync_client.$(OBJEXT) +socks4_sync_client_OBJECTS = $(am_socks4_sync_client_OBJECTS) +socks4_sync_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@socks4_sync_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__spawn_echo_server_SOURCES_DIST = spawn/echo_server.cpp +@HAVE_BOOST_COROUTINE_TRUE@am_spawn_echo_server_OBJECTS = \ +@HAVE_BOOST_COROUTINE_TRUE@ spawn/echo_server.$(OBJEXT) +spawn_echo_server_OBJECTS = $(am_spawn_echo_server_OBJECTS) +@HAVE_BOOST_COROUTINE_TRUE@spawn_echo_server_DEPENDENCIES = $(LDADD) +am__spawn_parallel_grep_SOURCES_DIST = spawn/parallel_grep.cpp +@HAVE_BOOST_COROUTINE_TRUE@am_spawn_parallel_grep_OBJECTS = \ +@HAVE_BOOST_COROUTINE_TRUE@ spawn/parallel_grep.$(OBJEXT) +spawn_parallel_grep_OBJECTS = $(am_spawn_parallel_grep_OBJECTS) +@HAVE_BOOST_COROUTINE_TRUE@spawn_parallel_grep_DEPENDENCIES = \ +@HAVE_BOOST_COROUTINE_TRUE@ $(LDADD) +am__ssl_client_SOURCES_DIST = ssl/client.cpp +@HAVE_OPENSSL_TRUE@am_ssl_client_OBJECTS = ssl/client.$(OBJEXT) +ssl_client_OBJECTS = $(am_ssl_client_OBJECTS) +ssl_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@ssl_client_DEPENDENCIES = libasio.a +am__ssl_server_SOURCES_DIST = ssl/server.cpp +@HAVE_OPENSSL_TRUE@am_ssl_server_OBJECTS = ssl/server.$(OBJEXT) +ssl_server_OBJECTS = $(am_ssl_server_OBJECTS) +ssl_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@ssl_server_DEPENDENCIES = libasio.a +am_timeouts_async_tcp_client_OBJECTS = \ + timeouts/async_tcp_client.$(OBJEXT) +timeouts_async_tcp_client_OBJECTS = \ + $(am_timeouts_async_tcp_client_OBJECTS) +timeouts_async_tcp_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timeouts_async_tcp_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_timeouts_blocking_tcp_client_OBJECTS = \ + timeouts/blocking_tcp_client.$(OBJEXT) +timeouts_blocking_tcp_client_OBJECTS = \ + $(am_timeouts_blocking_tcp_client_OBJECTS) +timeouts_blocking_tcp_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timeouts_blocking_tcp_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_timeouts_blocking_token_tcp_client_OBJECTS = \ + timeouts/blocking_token_tcp_client.$(OBJEXT) +timeouts_blocking_token_tcp_client_OBJECTS = \ + $(am_timeouts_blocking_token_tcp_client_OBJECTS) +timeouts_blocking_token_tcp_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timeouts_blocking_token_tcp_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_timeouts_blocking_udp_client_OBJECTS = \ + timeouts/blocking_udp_client.$(OBJEXT) +timeouts_blocking_udp_client_OBJECTS = \ + $(am_timeouts_blocking_udp_client_OBJECTS) +timeouts_blocking_udp_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timeouts_blocking_udp_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_timeouts_server_OBJECTS = timeouts/server.$(OBJEXT) +timeouts_server_OBJECTS = $(am_timeouts_server_OBJECTS) +timeouts_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timeouts_server_DEPENDENCIES = libasio.a +am_timers_time_t_timer_OBJECTS = timers/time_t_timer.$(OBJEXT) +timers_time_t_timer_OBJECTS = $(am_timers_time_t_timer_OBJECTS) +timers_time_t_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@timers_time_t_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime1_client_OBJECTS = \ + tutorial/daytime1/client.$(OBJEXT) +tutorial_daytime1_client_OBJECTS = \ + $(am_tutorial_daytime1_client_OBJECTS) +tutorial_daytime1_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime1_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime2_server_OBJECTS = \ + tutorial/daytime2/server.$(OBJEXT) +tutorial_daytime2_server_OBJECTS = \ + $(am_tutorial_daytime2_server_OBJECTS) +tutorial_daytime2_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime2_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime3_server_OBJECTS = \ + tutorial/daytime3/server.$(OBJEXT) +tutorial_daytime3_server_OBJECTS = \ + $(am_tutorial_daytime3_server_OBJECTS) +tutorial_daytime3_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime3_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime4_client_OBJECTS = \ + tutorial/daytime4/client.$(OBJEXT) +tutorial_daytime4_client_OBJECTS = \ + $(am_tutorial_daytime4_client_OBJECTS) +tutorial_daytime4_client_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime4_client_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime5_server_OBJECTS = \ + tutorial/daytime5/server.$(OBJEXT) +tutorial_daytime5_server_OBJECTS = \ + $(am_tutorial_daytime5_server_OBJECTS) +tutorial_daytime5_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime5_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime6_server_OBJECTS = \ + tutorial/daytime6/server.$(OBJEXT) +tutorial_daytime6_server_OBJECTS = \ + $(am_tutorial_daytime6_server_OBJECTS) +tutorial_daytime6_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime6_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_daytime7_server_OBJECTS = \ + tutorial/daytime7/server.$(OBJEXT) +tutorial_daytime7_server_OBJECTS = \ + $(am_tutorial_daytime7_server_OBJECTS) +tutorial_daytime7_server_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_daytime7_server_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_timer1_timer_OBJECTS = tutorial/timer1/timer.$(OBJEXT) +tutorial_timer1_timer_OBJECTS = $(am_tutorial_timer1_timer_OBJECTS) +tutorial_timer1_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_timer1_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_timer2_timer_OBJECTS = tutorial/timer2/timer.$(OBJEXT) +tutorial_timer2_timer_OBJECTS = $(am_tutorial_timer2_timer_OBJECTS) +tutorial_timer2_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_timer2_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_timer3_timer_OBJECTS = tutorial/timer3/timer.$(OBJEXT) +tutorial_timer3_timer_OBJECTS = $(am_tutorial_timer3_timer_OBJECTS) +tutorial_timer3_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_timer3_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_timer4_timer_OBJECTS = tutorial/timer4/timer.$(OBJEXT) +tutorial_timer4_timer_OBJECTS = $(am_tutorial_timer4_timer_OBJECTS) +tutorial_timer4_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_timer4_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am_tutorial_timer5_timer_OBJECTS = tutorial/timer5/timer.$(OBJEXT) +tutorial_timer5_timer_OBJECTS = $(am_tutorial_timer5_timer_OBJECTS) +tutorial_timer5_timer_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@tutorial_timer5_timer_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +am__windows_transmit_file_SOURCES_DIST = windows/transmit_file.cpp +@WINDOWS_TARGET_TRUE@am_windows_transmit_file_OBJECTS = \ +@WINDOWS_TARGET_TRUE@ windows/transmit_file.$(OBJEXT) +windows_transmit_file_OBJECTS = $(am_windows_transmit_file_OBJECTS) +windows_transmit_file_LDADD = $(LDADD) +@SEPARATE_COMPILATION_TRUE@windows_transmit_file_DEPENDENCIES = \ +@SEPARATE_COMPILATION_TRUE@ libasio.a +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 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ../../$(DEPDIR)/asio.Po \ + ../../$(DEPDIR)/asio_ssl.Po allocation/$(DEPDIR)/server.Po \ + buffers/$(DEPDIR)/reference_counted.Po \ + chat/$(DEPDIR)/chat_client.Po chat/$(DEPDIR)/chat_server.Po \ + chat/$(DEPDIR)/posix_chat_client.Po \ + echo/$(DEPDIR)/async_tcp_echo_server.Po \ + echo/$(DEPDIR)/async_udp_echo_server.Po \ + echo/$(DEPDIR)/blocking_tcp_echo_client.Po \ + echo/$(DEPDIR)/blocking_tcp_echo_server.Po \ + echo/$(DEPDIR)/blocking_udp_echo_client.Po \ + echo/$(DEPDIR)/blocking_udp_echo_server.Po \ + fork/$(DEPDIR)/daemon.Po \ + fork/$(DEPDIR)/process_per_connection.Po \ + http/client/$(DEPDIR)/async_client.Po \ + http/client/$(DEPDIR)/sync_client.Po \ + http/server/$(DEPDIR)/connection.Po \ + http/server/$(DEPDIR)/connection_manager.Po \ + http/server/$(DEPDIR)/main.Po \ + http/server/$(DEPDIR)/mime_types.Po \ + http/server/$(DEPDIR)/reply.Po \ + http/server/$(DEPDIR)/request_handler.Po \ + http/server/$(DEPDIR)/request_parser.Po \ + http/server/$(DEPDIR)/server.Po \ + http/server2/$(DEPDIR)/connection.Po \ + http/server2/$(DEPDIR)/io_context_pool.Po \ + http/server2/$(DEPDIR)/main.Po \ + http/server2/$(DEPDIR)/mime_types.Po \ + http/server2/$(DEPDIR)/reply.Po \ + http/server2/$(DEPDIR)/request_handler.Po \ + http/server2/$(DEPDIR)/request_parser.Po \ + http/server2/$(DEPDIR)/server.Po \ + http/server3/$(DEPDIR)/connection.Po \ + http/server3/$(DEPDIR)/main.Po \ + http/server3/$(DEPDIR)/mime_types.Po \ + http/server3/$(DEPDIR)/reply.Po \ + http/server3/$(DEPDIR)/request_handler.Po \ + http/server3/$(DEPDIR)/request_parser.Po \ + http/server3/$(DEPDIR)/server.Po \ + http/server4/$(DEPDIR)/file_handler.Po \ + http/server4/$(DEPDIR)/main.Po \ + http/server4/$(DEPDIR)/mime_types.Po \ + http/server4/$(DEPDIR)/reply.Po \ + http/server4/$(DEPDIR)/request_parser.Po \ + http/server4/$(DEPDIR)/server.Po icmp/$(DEPDIR)/ping.Po \ + invocation/$(DEPDIR)/prioritised_handlers.Po \ + iostreams/$(DEPDIR)/daytime_client.Po \ + iostreams/$(DEPDIR)/daytime_server.Po \ + iostreams/$(DEPDIR)/http_client.Po \ + local/$(DEPDIR)/connect_pair.Po \ + local/$(DEPDIR)/iostream_client.Po \ + local/$(DEPDIR)/stream_client.Po \ + local/$(DEPDIR)/stream_server.Po \ + multicast/$(DEPDIR)/receiver.Po multicast/$(DEPDIR)/sender.Po \ + nonblocking/$(DEPDIR)/third_party_lib.Po \ + porthopper/$(DEPDIR)/client.Po porthopper/$(DEPDIR)/server.Po \ + services/$(DEPDIR)/daytime_client.Po \ + services/$(DEPDIR)/logger_service.Po \ + socks4/$(DEPDIR)/sync_client.Po spawn/$(DEPDIR)/echo_server.Po \ + spawn/$(DEPDIR)/parallel_grep.Po ssl/$(DEPDIR)/client.Po \ + ssl/$(DEPDIR)/server.Po timeouts/$(DEPDIR)/async_tcp_client.Po \ + timeouts/$(DEPDIR)/blocking_tcp_client.Po \ + timeouts/$(DEPDIR)/blocking_token_tcp_client.Po \ + timeouts/$(DEPDIR)/blocking_udp_client.Po \ + timeouts/$(DEPDIR)/server.Po timers/$(DEPDIR)/time_t_timer.Po \ + tutorial/daytime1/$(DEPDIR)/client.Po \ + tutorial/daytime2/$(DEPDIR)/server.Po \ + tutorial/daytime3/$(DEPDIR)/server.Po \ + tutorial/daytime4/$(DEPDIR)/client.Po \ + tutorial/daytime5/$(DEPDIR)/server.Po \ + tutorial/daytime6/$(DEPDIR)/server.Po \ + tutorial/daytime7/$(DEPDIR)/server.Po \ + tutorial/timer1/$(DEPDIR)/timer.Po \ + tutorial/timer2/$(DEPDIR)/timer.Po \ + tutorial/timer3/$(DEPDIR)/timer.Po \ + tutorial/timer4/$(DEPDIR)/timer.Po \ + tutorial/timer5/$(DEPDIR)/timer.Po \ + windows/$(DEPDIR)/transmit_file.Po +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(libasio_a_SOURCES) $(allocation_server_SOURCES) \ + $(buffers_reference_counted_SOURCES) \ + $(chat_chat_client_SOURCES) $(chat_chat_server_SOURCES) \ + $(chat_posix_chat_client_SOURCES) \ + $(echo_async_tcp_echo_server_SOURCES) \ + $(echo_async_udp_echo_server_SOURCES) \ + $(echo_blocking_tcp_echo_client_SOURCES) \ + $(echo_blocking_tcp_echo_server_SOURCES) \ + $(echo_blocking_udp_echo_client_SOURCES) \ + $(echo_blocking_udp_echo_server_SOURCES) \ + $(fork_daemon_SOURCES) $(fork_process_per_connection_SOURCES) \ + $(http_client_async_client_SOURCES) \ + $(http_client_sync_client_SOURCES) \ + $(http_server_http_server_SOURCES) \ + $(http_server2_http_server_SOURCES) \ + $(http_server3_http_server_SOURCES) \ + $(http_server4_http_server_SOURCES) $(icmp_ping_SOURCES) \ + $(invocation_prioritised_handlers_SOURCES) \ + $(iostreams_daytime_client_SOURCES) \ + $(iostreams_daytime_server_SOURCES) \ + $(iostreams_http_client_SOURCES) $(local_connect_pair_SOURCES) \ + $(local_iostream_client_SOURCES) \ + $(local_stream_client_SOURCES) $(local_stream_server_SOURCES) \ + $(multicast_receiver_SOURCES) $(multicast_sender_SOURCES) \ + $(nonblocking_third_party_lib_SOURCES) \ + $(porthopper_client_SOURCES) $(porthopper_server_SOURCES) \ + $(services_daytime_client_SOURCES) \ + $(socks4_sync_client_SOURCES) $(spawn_echo_server_SOURCES) \ + $(spawn_parallel_grep_SOURCES) $(ssl_client_SOURCES) \ + $(ssl_server_SOURCES) $(timeouts_async_tcp_client_SOURCES) \ + $(timeouts_blocking_tcp_client_SOURCES) \ + $(timeouts_blocking_token_tcp_client_SOURCES) \ + $(timeouts_blocking_udp_client_SOURCES) \ + $(timeouts_server_SOURCES) $(timers_time_t_timer_SOURCES) \ + $(tutorial_daytime1_client_SOURCES) \ + $(tutorial_daytime2_server_SOURCES) \ + $(tutorial_daytime3_server_SOURCES) \ + $(tutorial_daytime4_client_SOURCES) \ + $(tutorial_daytime5_server_SOURCES) \ + $(tutorial_daytime6_server_SOURCES) \ + $(tutorial_daytime7_server_SOURCES) \ + $(tutorial_timer1_timer_SOURCES) \ + $(tutorial_timer2_timer_SOURCES) \ + $(tutorial_timer3_timer_SOURCES) \ + $(tutorial_timer4_timer_SOURCES) \ + $(tutorial_timer5_timer_SOURCES) \ + $(windows_transmit_file_SOURCES) +DIST_SOURCES = $(am__libasio_a_SOURCES_DIST) \ + $(allocation_server_SOURCES) \ + $(buffers_reference_counted_SOURCES) \ + $(chat_chat_client_SOURCES) $(chat_chat_server_SOURCES) \ + $(am__chat_posix_chat_client_SOURCES_DIST) \ + $(echo_async_tcp_echo_server_SOURCES) \ + $(echo_async_udp_echo_server_SOURCES) \ + $(echo_blocking_tcp_echo_client_SOURCES) \ + $(echo_blocking_tcp_echo_server_SOURCES) \ + $(echo_blocking_udp_echo_client_SOURCES) \ + $(echo_blocking_udp_echo_server_SOURCES) \ + $(am__fork_daemon_SOURCES_DIST) \ + $(am__fork_process_per_connection_SOURCES_DIST) \ + $(http_client_async_client_SOURCES) \ + $(http_client_sync_client_SOURCES) \ + $(http_server_http_server_SOURCES) \ + $(http_server2_http_server_SOURCES) \ + $(http_server3_http_server_SOURCES) \ + $(http_server4_http_server_SOURCES) $(icmp_ping_SOURCES) \ + $(invocation_prioritised_handlers_SOURCES) \ + $(iostreams_daytime_client_SOURCES) \ + $(iostreams_daytime_server_SOURCES) \ + $(iostreams_http_client_SOURCES) \ + $(am__local_connect_pair_SOURCES_DIST) \ + $(am__local_iostream_client_SOURCES_DIST) \ + $(am__local_stream_client_SOURCES_DIST) \ + $(am__local_stream_server_SOURCES_DIST) \ + $(multicast_receiver_SOURCES) $(multicast_sender_SOURCES) \ + $(nonblocking_third_party_lib_SOURCES) \ + $(porthopper_client_SOURCES) $(porthopper_server_SOURCES) \ + $(services_daytime_client_SOURCES) \ + $(socks4_sync_client_SOURCES) \ + $(am__spawn_echo_server_SOURCES_DIST) \ + $(am__spawn_parallel_grep_SOURCES_DIST) \ + $(am__ssl_client_SOURCES_DIST) $(am__ssl_server_SOURCES_DIST) \ + $(timeouts_async_tcp_client_SOURCES) \ + $(timeouts_blocking_tcp_client_SOURCES) \ + $(timeouts_blocking_token_tcp_client_SOURCES) \ + $(timeouts_blocking_udp_client_SOURCES) \ + $(timeouts_server_SOURCES) $(timers_time_t_timer_SOURCES) \ + $(tutorial_daytime1_client_SOURCES) \ + $(tutorial_daytime2_server_SOURCES) \ + $(tutorial_daytime3_server_SOURCES) \ + $(tutorial_daytime4_client_SOURCES) \ + $(tutorial_daytime5_server_SOURCES) \ + $(tutorial_daytime6_server_SOURCES) \ + $(tutorial_daytime7_server_SOURCES) \ + $(tutorial_timer1_timer_SOURCES) \ + $(tutorial_timer2_timer_SOURCES) \ + $(tutorial_timer3_timer_SOURCES) \ + $(tutorial_timer4_timer_SOURCES) \ + $(tutorial_timer5_timer_SOURCES) \ + $(am__windows_transmit_file_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_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)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +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@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +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@ +AUTOMAKE_OPTIONS = subdir-objects +@SEPARATE_COMPILATION_TRUE@noinst_LIBRARIES = libasio.a +@SEPARATE_COMPILATION_TRUE@libasio_a_SOURCES = ../../asio.cpp \ +@SEPARATE_COMPILATION_TRUE@ $(am__append_1) +@SEPARATE_COMPILATION_TRUE@LDADD = libasio.a +noinst_HEADERS = \ + chat/chat_message.hpp \ + services/basic_logger.hpp \ + services/logger.hpp \ + services/logger_service.hpp + +AM_CXXFLAGS = -I$(srcdir)/../../../include +allocation_server_SOURCES = allocation/server.cpp +buffers_reference_counted_SOURCES = buffers/reference_counted.cpp +chat_chat_client_SOURCES = chat/chat_client.cpp +chat_chat_server_SOURCES = chat/chat_server.cpp +echo_async_tcp_echo_server_SOURCES = echo/async_tcp_echo_server.cpp +echo_async_udp_echo_server_SOURCES = echo/async_udp_echo_server.cpp +echo_blocking_tcp_echo_client_SOURCES = echo/blocking_tcp_echo_client.cpp +echo_blocking_tcp_echo_server_SOURCES = echo/blocking_tcp_echo_server.cpp +echo_blocking_udp_echo_client_SOURCES = echo/blocking_udp_echo_client.cpp +echo_blocking_udp_echo_server_SOURCES = echo/blocking_udp_echo_server.cpp +http_client_async_client_SOURCES = http/client/async_client.cpp +http_client_sync_client_SOURCES = http/client/sync_client.cpp +http_server_http_server_SOURCES = \ + http/server/connection.cpp \ + http/server/connection_manager.cpp \ + http/server/main.cpp \ + http/server/mime_types.cpp \ + http/server/reply.cpp \ + http/server/request_handler.cpp \ + http/server/request_parser.cpp \ + http/server/server.cpp + +http_server2_http_server_SOURCES = \ + http/server2/connection.cpp \ + http/server2/io_context_pool.cpp \ + http/server2/main.cpp \ + http/server2/mime_types.cpp \ + http/server2/reply.cpp \ + http/server2/request_handler.cpp \ + http/server2/request_parser.cpp \ + http/server2/server.cpp + +http_server3_http_server_SOURCES = \ + http/server3/connection.cpp \ + http/server3/main.cpp \ + http/server3/mime_types.cpp \ + http/server3/reply.cpp \ + http/server3/request_handler.cpp \ + http/server3/request_parser.cpp \ + http/server3/server.cpp + +http_server4_http_server_SOURCES = \ + http/server4/file_handler.cpp \ + http/server4/main.cpp \ + http/server4/mime_types.cpp \ + http/server4/reply.cpp \ + http/server4/request_parser.cpp \ + http/server4/server.cpp + +icmp_ping_SOURCES = icmp/ping.cpp +invocation_prioritised_handlers_SOURCES = invocation/prioritised_handlers.cpp +iostreams_daytime_client_SOURCES = iostreams/daytime_client.cpp +iostreams_daytime_server_SOURCES = iostreams/daytime_server.cpp +iostreams_http_client_SOURCES = iostreams/http_client.cpp +multicast_receiver_SOURCES = multicast/receiver.cpp +multicast_sender_SOURCES = multicast/sender.cpp +nonblocking_third_party_lib_SOURCES = nonblocking/third_party_lib.cpp +porthopper_client_SOURCES = porthopper/client.cpp +porthopper_server_SOURCES = porthopper/server.cpp +services_daytime_client_SOURCES = \ + services/daytime_client.cpp \ + services/logger_service.cpp + +socks4_sync_client_SOURCES = socks4/sync_client.cpp +timeouts_async_tcp_client_SOURCES = timeouts/async_tcp_client.cpp +timeouts_blocking_tcp_client_SOURCES = timeouts/blocking_tcp_client.cpp +timeouts_blocking_token_tcp_client_SOURCES = timeouts/blocking_token_tcp_client.cpp +timeouts_blocking_udp_client_SOURCES = timeouts/blocking_udp_client.cpp +timeouts_server_SOURCES = timeouts/server.cpp +timers_time_t_timer_SOURCES = timers/time_t_timer.cpp +tutorial_timer1_timer_SOURCES = tutorial/timer1/timer.cpp +tutorial_timer2_timer_SOURCES = tutorial/timer2/timer.cpp +tutorial_timer3_timer_SOURCES = tutorial/timer3/timer.cpp +tutorial_timer4_timer_SOURCES = tutorial/timer4/timer.cpp +tutorial_timer5_timer_SOURCES = tutorial/timer5/timer.cpp +tutorial_daytime1_client_SOURCES = tutorial/daytime1/client.cpp +tutorial_daytime2_server_SOURCES = tutorial/daytime2/server.cpp +tutorial_daytime3_server_SOURCES = tutorial/daytime3/server.cpp +tutorial_daytime4_client_SOURCES = tutorial/daytime4/client.cpp +tutorial_daytime5_server_SOURCES = tutorial/daytime5/server.cpp +tutorial_daytime6_server_SOURCES = tutorial/daytime6/server.cpp +tutorial_daytime7_server_SOURCES = tutorial/daytime7/server.cpp +@WINDOWS_TARGET_FALSE@chat_posix_chat_client_SOURCES = chat/posix_chat_client.cpp +@WINDOWS_TARGET_FALSE@fork_daemon_SOURCES = fork/daemon.cpp +@WINDOWS_TARGET_FALSE@fork_process_per_connection_SOURCES = fork/process_per_connection.cpp +@WINDOWS_TARGET_FALSE@local_connect_pair_SOURCES = local/connect_pair.cpp +@WINDOWS_TARGET_FALSE@local_iostream_client_SOURCES = local/iostream_client.cpp +@WINDOWS_TARGET_FALSE@local_stream_server_SOURCES = local/stream_server.cpp +@WINDOWS_TARGET_FALSE@local_stream_client_SOURCES = local/stream_client.cpp +@WINDOWS_TARGET_TRUE@windows_transmit_file_SOURCES = windows/transmit_file.cpp +@HAVE_OPENSSL_TRUE@ssl_client_SOURCES = ssl/client.cpp +@HAVE_OPENSSL_TRUE@ssl_server_SOURCES = ssl/server.cpp +@HAVE_BOOST_COROUTINE_TRUE@spawn_echo_server_SOURCES = spawn/echo_server.cpp +@HAVE_BOOST_COROUTINE_TRUE@spawn_echo_server_LDADD = $(LDADD) -lboost_coroutine -lboost_context -lboost_thread -lboost_chrono -lboost_system +@HAVE_BOOST_COROUTINE_TRUE@spawn_parallel_grep_SOURCES = spawn/parallel_grep.cpp +@HAVE_BOOST_COROUTINE_TRUE@spawn_parallel_grep_LDADD = $(LDADD) -lboost_coroutine -lboost_context -lboost_thread -lboost_chrono -lboost_system +EXTRA_DIST = \ + http/server/connection.hpp \ + http/server/connection_manager.hpp \ + http/server/header.hpp \ + http/server/mime_types.hpp \ + http/server/reply.hpp \ + http/server/request.hpp \ + http/server/request_handler.hpp \ + http/server/request_parser.hpp \ + http/server/server.hpp \ + http/server2/connection.hpp \ + http/server2/io_context_pool.hpp \ + http/server2/header.hpp \ + http/server2/mime_types.hpp \ + http/server2/reply.hpp \ + http/server2/request.hpp \ + http/server2/request_handler.hpp \ + http/server2/request_parser.hpp \ + http/server2/server.hpp \ + http/server3/connection.hpp \ + http/server3/header.hpp \ + http/server3/mime_types.hpp \ + http/server3/reply.hpp \ + http/server3/request.hpp \ + http/server3/request_handler.hpp \ + http/server3/request_parser.hpp \ + http/server3/server.hpp \ + http/server4/file_handler.hpp \ + http/server4/header.hpp \ + http/server4/mime_types.hpp \ + http/server4/reply.hpp \ + http/server4/request.hpp \ + http/server4/request_parser.hpp \ + http/server4/server.hpp \ + icmp/icmp_header.hpp \ + icmp/ipv4_header.hpp \ + porthopper/protocol.hpp \ + serialization/client.cpp \ + serialization/server.cpp \ + serialization/connection.hpp \ + serialization/stock.hpp \ + services/basic_logger.hpp \ + services/logger.hpp \ + services/logger_service.hpp \ + socks4/socks4.hpp \ + ssl/README \ + ssl/ca.pem \ + ssl/server.pem \ + ssl/dh2048.pem + +MAINTAINERCLEANFILES = \ + $(srcdir)/Makefile.in + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(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 src/examples/cpp03/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/examples/cpp03/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): + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +../../$(am__dirstamp): + @$(MKDIR_P) ../.. + @: > ../../$(am__dirstamp) +../../$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ../../$(DEPDIR) + @: > ../../$(DEPDIR)/$(am__dirstamp) +../../asio.$(OBJEXT): ../../$(am__dirstamp) \ + ../../$(DEPDIR)/$(am__dirstamp) +../../asio_ssl.$(OBJEXT): ../../$(am__dirstamp) \ + ../../$(DEPDIR)/$(am__dirstamp) + +libasio.a: $(libasio_a_OBJECTS) $(libasio_a_DEPENDENCIES) $(EXTRA_libasio_a_DEPENDENCIES) + $(AM_V_at)-rm -f libasio.a + $(AM_V_AR)$(libasio_a_AR) libasio.a $(libasio_a_OBJECTS) $(libasio_a_LIBADD) + $(AM_V_at)$(RANLIB) libasio.a +allocation/$(am__dirstamp): + @$(MKDIR_P) allocation + @: > allocation/$(am__dirstamp) +allocation/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) allocation/$(DEPDIR) + @: > allocation/$(DEPDIR)/$(am__dirstamp) +allocation/server.$(OBJEXT): allocation/$(am__dirstamp) \ + allocation/$(DEPDIR)/$(am__dirstamp) + +allocation/server$(EXEEXT): $(allocation_server_OBJECTS) $(allocation_server_DEPENDENCIES) $(EXTRA_allocation_server_DEPENDENCIES) allocation/$(am__dirstamp) + @rm -f allocation/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(allocation_server_OBJECTS) $(allocation_server_LDADD) $(LIBS) +buffers/$(am__dirstamp): + @$(MKDIR_P) buffers + @: > buffers/$(am__dirstamp) +buffers/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) buffers/$(DEPDIR) + @: > buffers/$(DEPDIR)/$(am__dirstamp) +buffers/reference_counted.$(OBJEXT): buffers/$(am__dirstamp) \ + buffers/$(DEPDIR)/$(am__dirstamp) + +buffers/reference_counted$(EXEEXT): $(buffers_reference_counted_OBJECTS) $(buffers_reference_counted_DEPENDENCIES) $(EXTRA_buffers_reference_counted_DEPENDENCIES) buffers/$(am__dirstamp) + @rm -f buffers/reference_counted$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(buffers_reference_counted_OBJECTS) $(buffers_reference_counted_LDADD) $(LIBS) +chat/$(am__dirstamp): + @$(MKDIR_P) chat + @: > chat/$(am__dirstamp) +chat/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) chat/$(DEPDIR) + @: > chat/$(DEPDIR)/$(am__dirstamp) +chat/chat_client.$(OBJEXT): chat/$(am__dirstamp) \ + chat/$(DEPDIR)/$(am__dirstamp) + +chat/chat_client$(EXEEXT): $(chat_chat_client_OBJECTS) $(chat_chat_client_DEPENDENCIES) $(EXTRA_chat_chat_client_DEPENDENCIES) chat/$(am__dirstamp) + @rm -f chat/chat_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(chat_chat_client_OBJECTS) $(chat_chat_client_LDADD) $(LIBS) +chat/chat_server.$(OBJEXT): chat/$(am__dirstamp) \ + chat/$(DEPDIR)/$(am__dirstamp) + +chat/chat_server$(EXEEXT): $(chat_chat_server_OBJECTS) $(chat_chat_server_DEPENDENCIES) $(EXTRA_chat_chat_server_DEPENDENCIES) chat/$(am__dirstamp) + @rm -f chat/chat_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(chat_chat_server_OBJECTS) $(chat_chat_server_LDADD) $(LIBS) +chat/posix_chat_client.$(OBJEXT): chat/$(am__dirstamp) \ + chat/$(DEPDIR)/$(am__dirstamp) + +chat/posix_chat_client$(EXEEXT): $(chat_posix_chat_client_OBJECTS) $(chat_posix_chat_client_DEPENDENCIES) $(EXTRA_chat_posix_chat_client_DEPENDENCIES) chat/$(am__dirstamp) + @rm -f chat/posix_chat_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(chat_posix_chat_client_OBJECTS) $(chat_posix_chat_client_LDADD) $(LIBS) +echo/$(am__dirstamp): + @$(MKDIR_P) echo + @: > echo/$(am__dirstamp) +echo/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) echo/$(DEPDIR) + @: > echo/$(DEPDIR)/$(am__dirstamp) +echo/async_tcp_echo_server.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/async_tcp_echo_server$(EXEEXT): $(echo_async_tcp_echo_server_OBJECTS) $(echo_async_tcp_echo_server_DEPENDENCIES) $(EXTRA_echo_async_tcp_echo_server_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/async_tcp_echo_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_async_tcp_echo_server_OBJECTS) $(echo_async_tcp_echo_server_LDADD) $(LIBS) +echo/async_udp_echo_server.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/async_udp_echo_server$(EXEEXT): $(echo_async_udp_echo_server_OBJECTS) $(echo_async_udp_echo_server_DEPENDENCIES) $(EXTRA_echo_async_udp_echo_server_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/async_udp_echo_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_async_udp_echo_server_OBJECTS) $(echo_async_udp_echo_server_LDADD) $(LIBS) +echo/blocking_tcp_echo_client.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/blocking_tcp_echo_client$(EXEEXT): $(echo_blocking_tcp_echo_client_OBJECTS) $(echo_blocking_tcp_echo_client_DEPENDENCIES) $(EXTRA_echo_blocking_tcp_echo_client_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/blocking_tcp_echo_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_blocking_tcp_echo_client_OBJECTS) $(echo_blocking_tcp_echo_client_LDADD) $(LIBS) +echo/blocking_tcp_echo_server.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/blocking_tcp_echo_server$(EXEEXT): $(echo_blocking_tcp_echo_server_OBJECTS) $(echo_blocking_tcp_echo_server_DEPENDENCIES) $(EXTRA_echo_blocking_tcp_echo_server_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/blocking_tcp_echo_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_blocking_tcp_echo_server_OBJECTS) $(echo_blocking_tcp_echo_server_LDADD) $(LIBS) +echo/blocking_udp_echo_client.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/blocking_udp_echo_client$(EXEEXT): $(echo_blocking_udp_echo_client_OBJECTS) $(echo_blocking_udp_echo_client_DEPENDENCIES) $(EXTRA_echo_blocking_udp_echo_client_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/blocking_udp_echo_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_blocking_udp_echo_client_OBJECTS) $(echo_blocking_udp_echo_client_LDADD) $(LIBS) +echo/blocking_udp_echo_server.$(OBJEXT): echo/$(am__dirstamp) \ + echo/$(DEPDIR)/$(am__dirstamp) + +echo/blocking_udp_echo_server$(EXEEXT): $(echo_blocking_udp_echo_server_OBJECTS) $(echo_blocking_udp_echo_server_DEPENDENCIES) $(EXTRA_echo_blocking_udp_echo_server_DEPENDENCIES) echo/$(am__dirstamp) + @rm -f echo/blocking_udp_echo_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(echo_blocking_udp_echo_server_OBJECTS) $(echo_blocking_udp_echo_server_LDADD) $(LIBS) +fork/$(am__dirstamp): + @$(MKDIR_P) fork + @: > fork/$(am__dirstamp) +fork/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) fork/$(DEPDIR) + @: > fork/$(DEPDIR)/$(am__dirstamp) +fork/daemon.$(OBJEXT): fork/$(am__dirstamp) \ + fork/$(DEPDIR)/$(am__dirstamp) + +fork/daemon$(EXEEXT): $(fork_daemon_OBJECTS) $(fork_daemon_DEPENDENCIES) $(EXTRA_fork_daemon_DEPENDENCIES) fork/$(am__dirstamp) + @rm -f fork/daemon$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(fork_daemon_OBJECTS) $(fork_daemon_LDADD) $(LIBS) +fork/process_per_connection.$(OBJEXT): fork/$(am__dirstamp) \ + fork/$(DEPDIR)/$(am__dirstamp) + +fork/process_per_connection$(EXEEXT): $(fork_process_per_connection_OBJECTS) $(fork_process_per_connection_DEPENDENCIES) $(EXTRA_fork_process_per_connection_DEPENDENCIES) fork/$(am__dirstamp) + @rm -f fork/process_per_connection$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(fork_process_per_connection_OBJECTS) $(fork_process_per_connection_LDADD) $(LIBS) +http/client/$(am__dirstamp): + @$(MKDIR_P) http/client + @: > http/client/$(am__dirstamp) +http/client/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) http/client/$(DEPDIR) + @: > http/client/$(DEPDIR)/$(am__dirstamp) +http/client/async_client.$(OBJEXT): http/client/$(am__dirstamp) \ + http/client/$(DEPDIR)/$(am__dirstamp) + +http/client/async_client$(EXEEXT): $(http_client_async_client_OBJECTS) $(http_client_async_client_DEPENDENCIES) $(EXTRA_http_client_async_client_DEPENDENCIES) http/client/$(am__dirstamp) + @rm -f http/client/async_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_client_async_client_OBJECTS) $(http_client_async_client_LDADD) $(LIBS) +http/client/sync_client.$(OBJEXT): http/client/$(am__dirstamp) \ + http/client/$(DEPDIR)/$(am__dirstamp) + +http/client/sync_client$(EXEEXT): $(http_client_sync_client_OBJECTS) $(http_client_sync_client_DEPENDENCIES) $(EXTRA_http_client_sync_client_DEPENDENCIES) http/client/$(am__dirstamp) + @rm -f http/client/sync_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_client_sync_client_OBJECTS) $(http_client_sync_client_LDADD) $(LIBS) +http/server/$(am__dirstamp): + @$(MKDIR_P) http/server + @: > http/server/$(am__dirstamp) +http/server/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) http/server/$(DEPDIR) + @: > http/server/$(DEPDIR)/$(am__dirstamp) +http/server/connection.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/connection_manager.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/main.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/mime_types.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/reply.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/request_handler.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/request_parser.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) +http/server/server.$(OBJEXT): http/server/$(am__dirstamp) \ + http/server/$(DEPDIR)/$(am__dirstamp) + +http/server/http_server$(EXEEXT): $(http_server_http_server_OBJECTS) $(http_server_http_server_DEPENDENCIES) $(EXTRA_http_server_http_server_DEPENDENCIES) http/server/$(am__dirstamp) + @rm -f http/server/http_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_server_http_server_OBJECTS) $(http_server_http_server_LDADD) $(LIBS) +http/server2/$(am__dirstamp): + @$(MKDIR_P) http/server2 + @: > http/server2/$(am__dirstamp) +http/server2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) http/server2/$(DEPDIR) + @: > http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/connection.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/io_context_pool.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/main.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/mime_types.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/reply.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/request_handler.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/request_parser.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) +http/server2/server.$(OBJEXT): http/server2/$(am__dirstamp) \ + http/server2/$(DEPDIR)/$(am__dirstamp) + +http/server2/http_server$(EXEEXT): $(http_server2_http_server_OBJECTS) $(http_server2_http_server_DEPENDENCIES) $(EXTRA_http_server2_http_server_DEPENDENCIES) http/server2/$(am__dirstamp) + @rm -f http/server2/http_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_server2_http_server_OBJECTS) $(http_server2_http_server_LDADD) $(LIBS) +http/server3/$(am__dirstamp): + @$(MKDIR_P) http/server3 + @: > http/server3/$(am__dirstamp) +http/server3/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) http/server3/$(DEPDIR) + @: > http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/connection.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/main.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/mime_types.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/reply.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/request_handler.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/request_parser.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) +http/server3/server.$(OBJEXT): http/server3/$(am__dirstamp) \ + http/server3/$(DEPDIR)/$(am__dirstamp) + +http/server3/http_server$(EXEEXT): $(http_server3_http_server_OBJECTS) $(http_server3_http_server_DEPENDENCIES) $(EXTRA_http_server3_http_server_DEPENDENCIES) http/server3/$(am__dirstamp) + @rm -f http/server3/http_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_server3_http_server_OBJECTS) $(http_server3_http_server_LDADD) $(LIBS) +http/server4/$(am__dirstamp): + @$(MKDIR_P) http/server4 + @: > http/server4/$(am__dirstamp) +http/server4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) http/server4/$(DEPDIR) + @: > http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/file_handler.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/main.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/mime_types.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/reply.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/request_parser.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) +http/server4/server.$(OBJEXT): http/server4/$(am__dirstamp) \ + http/server4/$(DEPDIR)/$(am__dirstamp) + +http/server4/http_server$(EXEEXT): $(http_server4_http_server_OBJECTS) $(http_server4_http_server_DEPENDENCIES) $(EXTRA_http_server4_http_server_DEPENDENCIES) http/server4/$(am__dirstamp) + @rm -f http/server4/http_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(http_server4_http_server_OBJECTS) $(http_server4_http_server_LDADD) $(LIBS) +icmp/$(am__dirstamp): + @$(MKDIR_P) icmp + @: > icmp/$(am__dirstamp) +icmp/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) icmp/$(DEPDIR) + @: > icmp/$(DEPDIR)/$(am__dirstamp) +icmp/ping.$(OBJEXT): icmp/$(am__dirstamp) \ + icmp/$(DEPDIR)/$(am__dirstamp) + +icmp/ping$(EXEEXT): $(icmp_ping_OBJECTS) $(icmp_ping_DEPENDENCIES) $(EXTRA_icmp_ping_DEPENDENCIES) icmp/$(am__dirstamp) + @rm -f icmp/ping$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(icmp_ping_OBJECTS) $(icmp_ping_LDADD) $(LIBS) +invocation/$(am__dirstamp): + @$(MKDIR_P) invocation + @: > invocation/$(am__dirstamp) +invocation/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) invocation/$(DEPDIR) + @: > invocation/$(DEPDIR)/$(am__dirstamp) +invocation/prioritised_handlers.$(OBJEXT): invocation/$(am__dirstamp) \ + invocation/$(DEPDIR)/$(am__dirstamp) + +invocation/prioritised_handlers$(EXEEXT): $(invocation_prioritised_handlers_OBJECTS) $(invocation_prioritised_handlers_DEPENDENCIES) $(EXTRA_invocation_prioritised_handlers_DEPENDENCIES) invocation/$(am__dirstamp) + @rm -f invocation/prioritised_handlers$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(invocation_prioritised_handlers_OBJECTS) $(invocation_prioritised_handlers_LDADD) $(LIBS) +iostreams/$(am__dirstamp): + @$(MKDIR_P) iostreams + @: > iostreams/$(am__dirstamp) +iostreams/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) iostreams/$(DEPDIR) + @: > iostreams/$(DEPDIR)/$(am__dirstamp) +iostreams/daytime_client.$(OBJEXT): iostreams/$(am__dirstamp) \ + iostreams/$(DEPDIR)/$(am__dirstamp) + +iostreams/daytime_client$(EXEEXT): $(iostreams_daytime_client_OBJECTS) $(iostreams_daytime_client_DEPENDENCIES) $(EXTRA_iostreams_daytime_client_DEPENDENCIES) iostreams/$(am__dirstamp) + @rm -f iostreams/daytime_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(iostreams_daytime_client_OBJECTS) $(iostreams_daytime_client_LDADD) $(LIBS) +iostreams/daytime_server.$(OBJEXT): iostreams/$(am__dirstamp) \ + iostreams/$(DEPDIR)/$(am__dirstamp) + +iostreams/daytime_server$(EXEEXT): $(iostreams_daytime_server_OBJECTS) $(iostreams_daytime_server_DEPENDENCIES) $(EXTRA_iostreams_daytime_server_DEPENDENCIES) iostreams/$(am__dirstamp) + @rm -f iostreams/daytime_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(iostreams_daytime_server_OBJECTS) $(iostreams_daytime_server_LDADD) $(LIBS) +iostreams/http_client.$(OBJEXT): iostreams/$(am__dirstamp) \ + iostreams/$(DEPDIR)/$(am__dirstamp) + +iostreams/http_client$(EXEEXT): $(iostreams_http_client_OBJECTS) $(iostreams_http_client_DEPENDENCIES) $(EXTRA_iostreams_http_client_DEPENDENCIES) iostreams/$(am__dirstamp) + @rm -f iostreams/http_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(iostreams_http_client_OBJECTS) $(iostreams_http_client_LDADD) $(LIBS) +local/$(am__dirstamp): + @$(MKDIR_P) local + @: > local/$(am__dirstamp) +local/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) local/$(DEPDIR) + @: > local/$(DEPDIR)/$(am__dirstamp) +local/connect_pair.$(OBJEXT): local/$(am__dirstamp) \ + local/$(DEPDIR)/$(am__dirstamp) + +local/connect_pair$(EXEEXT): $(local_connect_pair_OBJECTS) $(local_connect_pair_DEPENDENCIES) $(EXTRA_local_connect_pair_DEPENDENCIES) local/$(am__dirstamp) + @rm -f local/connect_pair$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(local_connect_pair_OBJECTS) $(local_connect_pair_LDADD) $(LIBS) +local/iostream_client.$(OBJEXT): local/$(am__dirstamp) \ + local/$(DEPDIR)/$(am__dirstamp) + +local/iostream_client$(EXEEXT): $(local_iostream_client_OBJECTS) $(local_iostream_client_DEPENDENCIES) $(EXTRA_local_iostream_client_DEPENDENCIES) local/$(am__dirstamp) + @rm -f local/iostream_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(local_iostream_client_OBJECTS) $(local_iostream_client_LDADD) $(LIBS) +local/stream_client.$(OBJEXT): local/$(am__dirstamp) \ + local/$(DEPDIR)/$(am__dirstamp) + +local/stream_client$(EXEEXT): $(local_stream_client_OBJECTS) $(local_stream_client_DEPENDENCIES) $(EXTRA_local_stream_client_DEPENDENCIES) local/$(am__dirstamp) + @rm -f local/stream_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(local_stream_client_OBJECTS) $(local_stream_client_LDADD) $(LIBS) +local/stream_server.$(OBJEXT): local/$(am__dirstamp) \ + local/$(DEPDIR)/$(am__dirstamp) + +local/stream_server$(EXEEXT): $(local_stream_server_OBJECTS) $(local_stream_server_DEPENDENCIES) $(EXTRA_local_stream_server_DEPENDENCIES) local/$(am__dirstamp) + @rm -f local/stream_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(local_stream_server_OBJECTS) $(local_stream_server_LDADD) $(LIBS) +multicast/$(am__dirstamp): + @$(MKDIR_P) multicast + @: > multicast/$(am__dirstamp) +multicast/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) multicast/$(DEPDIR) + @: > multicast/$(DEPDIR)/$(am__dirstamp) +multicast/receiver.$(OBJEXT): multicast/$(am__dirstamp) \ + multicast/$(DEPDIR)/$(am__dirstamp) + +multicast/receiver$(EXEEXT): $(multicast_receiver_OBJECTS) $(multicast_receiver_DEPENDENCIES) $(EXTRA_multicast_receiver_DEPENDENCIES) multicast/$(am__dirstamp) + @rm -f multicast/receiver$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(multicast_receiver_OBJECTS) $(multicast_receiver_LDADD) $(LIBS) +multicast/sender.$(OBJEXT): multicast/$(am__dirstamp) \ + multicast/$(DEPDIR)/$(am__dirstamp) + +multicast/sender$(EXEEXT): $(multicast_sender_OBJECTS) $(multicast_sender_DEPENDENCIES) $(EXTRA_multicast_sender_DEPENDENCIES) multicast/$(am__dirstamp) + @rm -f multicast/sender$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(multicast_sender_OBJECTS) $(multicast_sender_LDADD) $(LIBS) +nonblocking/$(am__dirstamp): + @$(MKDIR_P) nonblocking + @: > nonblocking/$(am__dirstamp) +nonblocking/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) nonblocking/$(DEPDIR) + @: > nonblocking/$(DEPDIR)/$(am__dirstamp) +nonblocking/third_party_lib.$(OBJEXT): nonblocking/$(am__dirstamp) \ + nonblocking/$(DEPDIR)/$(am__dirstamp) + +nonblocking/third_party_lib$(EXEEXT): $(nonblocking_third_party_lib_OBJECTS) $(nonblocking_third_party_lib_DEPENDENCIES) $(EXTRA_nonblocking_third_party_lib_DEPENDENCIES) nonblocking/$(am__dirstamp) + @rm -f nonblocking/third_party_lib$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(nonblocking_third_party_lib_OBJECTS) $(nonblocking_third_party_lib_LDADD) $(LIBS) +porthopper/$(am__dirstamp): + @$(MKDIR_P) porthopper + @: > porthopper/$(am__dirstamp) +porthopper/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) porthopper/$(DEPDIR) + @: > porthopper/$(DEPDIR)/$(am__dirstamp) +porthopper/client.$(OBJEXT): porthopper/$(am__dirstamp) \ + porthopper/$(DEPDIR)/$(am__dirstamp) + +porthopper/client$(EXEEXT): $(porthopper_client_OBJECTS) $(porthopper_client_DEPENDENCIES) $(EXTRA_porthopper_client_DEPENDENCIES) porthopper/$(am__dirstamp) + @rm -f porthopper/client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(porthopper_client_OBJECTS) $(porthopper_client_LDADD) $(LIBS) +porthopper/server.$(OBJEXT): porthopper/$(am__dirstamp) \ + porthopper/$(DEPDIR)/$(am__dirstamp) + +porthopper/server$(EXEEXT): $(porthopper_server_OBJECTS) $(porthopper_server_DEPENDENCIES) $(EXTRA_porthopper_server_DEPENDENCIES) porthopper/$(am__dirstamp) + @rm -f porthopper/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(porthopper_server_OBJECTS) $(porthopper_server_LDADD) $(LIBS) +services/$(am__dirstamp): + @$(MKDIR_P) services + @: > services/$(am__dirstamp) +services/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) services/$(DEPDIR) + @: > services/$(DEPDIR)/$(am__dirstamp) +services/daytime_client.$(OBJEXT): services/$(am__dirstamp) \ + services/$(DEPDIR)/$(am__dirstamp) +services/logger_service.$(OBJEXT): services/$(am__dirstamp) \ + services/$(DEPDIR)/$(am__dirstamp) + +services/daytime_client$(EXEEXT): $(services_daytime_client_OBJECTS) $(services_daytime_client_DEPENDENCIES) $(EXTRA_services_daytime_client_DEPENDENCIES) services/$(am__dirstamp) + @rm -f services/daytime_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(services_daytime_client_OBJECTS) $(services_daytime_client_LDADD) $(LIBS) +socks4/$(am__dirstamp): + @$(MKDIR_P) socks4 + @: > socks4/$(am__dirstamp) +socks4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) socks4/$(DEPDIR) + @: > socks4/$(DEPDIR)/$(am__dirstamp) +socks4/sync_client.$(OBJEXT): socks4/$(am__dirstamp) \ + socks4/$(DEPDIR)/$(am__dirstamp) + +socks4/sync_client$(EXEEXT): $(socks4_sync_client_OBJECTS) $(socks4_sync_client_DEPENDENCIES) $(EXTRA_socks4_sync_client_DEPENDENCIES) socks4/$(am__dirstamp) + @rm -f socks4/sync_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(socks4_sync_client_OBJECTS) $(socks4_sync_client_LDADD) $(LIBS) +spawn/$(am__dirstamp): + @$(MKDIR_P) spawn + @: > spawn/$(am__dirstamp) +spawn/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) spawn/$(DEPDIR) + @: > spawn/$(DEPDIR)/$(am__dirstamp) +spawn/echo_server.$(OBJEXT): spawn/$(am__dirstamp) \ + spawn/$(DEPDIR)/$(am__dirstamp) + +spawn/echo_server$(EXEEXT): $(spawn_echo_server_OBJECTS) $(spawn_echo_server_DEPENDENCIES) $(EXTRA_spawn_echo_server_DEPENDENCIES) spawn/$(am__dirstamp) + @rm -f spawn/echo_server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(spawn_echo_server_OBJECTS) $(spawn_echo_server_LDADD) $(LIBS) +spawn/parallel_grep.$(OBJEXT): spawn/$(am__dirstamp) \ + spawn/$(DEPDIR)/$(am__dirstamp) + +spawn/parallel_grep$(EXEEXT): $(spawn_parallel_grep_OBJECTS) $(spawn_parallel_grep_DEPENDENCIES) $(EXTRA_spawn_parallel_grep_DEPENDENCIES) spawn/$(am__dirstamp) + @rm -f spawn/parallel_grep$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(spawn_parallel_grep_OBJECTS) $(spawn_parallel_grep_LDADD) $(LIBS) +ssl/$(am__dirstamp): + @$(MKDIR_P) ssl + @: > ssl/$(am__dirstamp) +ssl/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ssl/$(DEPDIR) + @: > ssl/$(DEPDIR)/$(am__dirstamp) +ssl/client.$(OBJEXT): ssl/$(am__dirstamp) \ + ssl/$(DEPDIR)/$(am__dirstamp) + +ssl/client$(EXEEXT): $(ssl_client_OBJECTS) $(ssl_client_DEPENDENCIES) $(EXTRA_ssl_client_DEPENDENCIES) ssl/$(am__dirstamp) + @rm -f ssl/client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(ssl_client_OBJECTS) $(ssl_client_LDADD) $(LIBS) +ssl/server.$(OBJEXT): ssl/$(am__dirstamp) \ + ssl/$(DEPDIR)/$(am__dirstamp) + +ssl/server$(EXEEXT): $(ssl_server_OBJECTS) $(ssl_server_DEPENDENCIES) $(EXTRA_ssl_server_DEPENDENCIES) ssl/$(am__dirstamp) + @rm -f ssl/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(ssl_server_OBJECTS) $(ssl_server_LDADD) $(LIBS) +timeouts/$(am__dirstamp): + @$(MKDIR_P) timeouts + @: > timeouts/$(am__dirstamp) +timeouts/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) timeouts/$(DEPDIR) + @: > timeouts/$(DEPDIR)/$(am__dirstamp) +timeouts/async_tcp_client.$(OBJEXT): timeouts/$(am__dirstamp) \ + timeouts/$(DEPDIR)/$(am__dirstamp) + +timeouts/async_tcp_client$(EXEEXT): $(timeouts_async_tcp_client_OBJECTS) $(timeouts_async_tcp_client_DEPENDENCIES) $(EXTRA_timeouts_async_tcp_client_DEPENDENCIES) timeouts/$(am__dirstamp) + @rm -f timeouts/async_tcp_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timeouts_async_tcp_client_OBJECTS) $(timeouts_async_tcp_client_LDADD) $(LIBS) +timeouts/blocking_tcp_client.$(OBJEXT): timeouts/$(am__dirstamp) \ + timeouts/$(DEPDIR)/$(am__dirstamp) + +timeouts/blocking_tcp_client$(EXEEXT): $(timeouts_blocking_tcp_client_OBJECTS) $(timeouts_blocking_tcp_client_DEPENDENCIES) $(EXTRA_timeouts_blocking_tcp_client_DEPENDENCIES) timeouts/$(am__dirstamp) + @rm -f timeouts/blocking_tcp_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timeouts_blocking_tcp_client_OBJECTS) $(timeouts_blocking_tcp_client_LDADD) $(LIBS) +timeouts/blocking_token_tcp_client.$(OBJEXT): \ + timeouts/$(am__dirstamp) timeouts/$(DEPDIR)/$(am__dirstamp) + +timeouts/blocking_token_tcp_client$(EXEEXT): $(timeouts_blocking_token_tcp_client_OBJECTS) $(timeouts_blocking_token_tcp_client_DEPENDENCIES) $(EXTRA_timeouts_blocking_token_tcp_client_DEPENDENCIES) timeouts/$(am__dirstamp) + @rm -f timeouts/blocking_token_tcp_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timeouts_blocking_token_tcp_client_OBJECTS) $(timeouts_blocking_token_tcp_client_LDADD) $(LIBS) +timeouts/blocking_udp_client.$(OBJEXT): timeouts/$(am__dirstamp) \ + timeouts/$(DEPDIR)/$(am__dirstamp) + +timeouts/blocking_udp_client$(EXEEXT): $(timeouts_blocking_udp_client_OBJECTS) $(timeouts_blocking_udp_client_DEPENDENCIES) $(EXTRA_timeouts_blocking_udp_client_DEPENDENCIES) timeouts/$(am__dirstamp) + @rm -f timeouts/blocking_udp_client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timeouts_blocking_udp_client_OBJECTS) $(timeouts_blocking_udp_client_LDADD) $(LIBS) +timeouts/server.$(OBJEXT): timeouts/$(am__dirstamp) \ + timeouts/$(DEPDIR)/$(am__dirstamp) + +timeouts/server$(EXEEXT): $(timeouts_server_OBJECTS) $(timeouts_server_DEPENDENCIES) $(EXTRA_timeouts_server_DEPENDENCIES) timeouts/$(am__dirstamp) + @rm -f timeouts/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timeouts_server_OBJECTS) $(timeouts_server_LDADD) $(LIBS) +timers/$(am__dirstamp): + @$(MKDIR_P) timers + @: > timers/$(am__dirstamp) +timers/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) timers/$(DEPDIR) + @: > timers/$(DEPDIR)/$(am__dirstamp) +timers/time_t_timer.$(OBJEXT): timers/$(am__dirstamp) \ + timers/$(DEPDIR)/$(am__dirstamp) + +timers/time_t_timer$(EXEEXT): $(timers_time_t_timer_OBJECTS) $(timers_time_t_timer_DEPENDENCIES) $(EXTRA_timers_time_t_timer_DEPENDENCIES) timers/$(am__dirstamp) + @rm -f timers/time_t_timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(timers_time_t_timer_OBJECTS) $(timers_time_t_timer_LDADD) $(LIBS) +tutorial/daytime1/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime1 + @: > tutorial/daytime1/$(am__dirstamp) +tutorial/daytime1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime1/$(DEPDIR) + @: > tutorial/daytime1/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime1/client.$(OBJEXT): tutorial/daytime1/$(am__dirstamp) \ + tutorial/daytime1/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime1/client$(EXEEXT): $(tutorial_daytime1_client_OBJECTS) $(tutorial_daytime1_client_DEPENDENCIES) $(EXTRA_tutorial_daytime1_client_DEPENDENCIES) tutorial/daytime1/$(am__dirstamp) + @rm -f tutorial/daytime1/client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime1_client_OBJECTS) $(tutorial_daytime1_client_LDADD) $(LIBS) +tutorial/daytime2/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime2 + @: > tutorial/daytime2/$(am__dirstamp) +tutorial/daytime2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime2/$(DEPDIR) + @: > tutorial/daytime2/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime2/server.$(OBJEXT): tutorial/daytime2/$(am__dirstamp) \ + tutorial/daytime2/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime2/server$(EXEEXT): $(tutorial_daytime2_server_OBJECTS) $(tutorial_daytime2_server_DEPENDENCIES) $(EXTRA_tutorial_daytime2_server_DEPENDENCIES) tutorial/daytime2/$(am__dirstamp) + @rm -f tutorial/daytime2/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime2_server_OBJECTS) $(tutorial_daytime2_server_LDADD) $(LIBS) +tutorial/daytime3/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime3 + @: > tutorial/daytime3/$(am__dirstamp) +tutorial/daytime3/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime3/$(DEPDIR) + @: > tutorial/daytime3/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime3/server.$(OBJEXT): tutorial/daytime3/$(am__dirstamp) \ + tutorial/daytime3/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime3/server$(EXEEXT): $(tutorial_daytime3_server_OBJECTS) $(tutorial_daytime3_server_DEPENDENCIES) $(EXTRA_tutorial_daytime3_server_DEPENDENCIES) tutorial/daytime3/$(am__dirstamp) + @rm -f tutorial/daytime3/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime3_server_OBJECTS) $(tutorial_daytime3_server_LDADD) $(LIBS) +tutorial/daytime4/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime4 + @: > tutorial/daytime4/$(am__dirstamp) +tutorial/daytime4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime4/$(DEPDIR) + @: > tutorial/daytime4/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime4/client.$(OBJEXT): tutorial/daytime4/$(am__dirstamp) \ + tutorial/daytime4/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime4/client$(EXEEXT): $(tutorial_daytime4_client_OBJECTS) $(tutorial_daytime4_client_DEPENDENCIES) $(EXTRA_tutorial_daytime4_client_DEPENDENCIES) tutorial/daytime4/$(am__dirstamp) + @rm -f tutorial/daytime4/client$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime4_client_OBJECTS) $(tutorial_daytime4_client_LDADD) $(LIBS) +tutorial/daytime5/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime5 + @: > tutorial/daytime5/$(am__dirstamp) +tutorial/daytime5/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime5/$(DEPDIR) + @: > tutorial/daytime5/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime5/server.$(OBJEXT): tutorial/daytime5/$(am__dirstamp) \ + tutorial/daytime5/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime5/server$(EXEEXT): $(tutorial_daytime5_server_OBJECTS) $(tutorial_daytime5_server_DEPENDENCIES) $(EXTRA_tutorial_daytime5_server_DEPENDENCIES) tutorial/daytime5/$(am__dirstamp) + @rm -f tutorial/daytime5/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime5_server_OBJECTS) $(tutorial_daytime5_server_LDADD) $(LIBS) +tutorial/daytime6/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime6 + @: > tutorial/daytime6/$(am__dirstamp) +tutorial/daytime6/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime6/$(DEPDIR) + @: > tutorial/daytime6/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime6/server.$(OBJEXT): tutorial/daytime6/$(am__dirstamp) \ + tutorial/daytime6/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime6/server$(EXEEXT): $(tutorial_daytime6_server_OBJECTS) $(tutorial_daytime6_server_DEPENDENCIES) $(EXTRA_tutorial_daytime6_server_DEPENDENCIES) tutorial/daytime6/$(am__dirstamp) + @rm -f tutorial/daytime6/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime6_server_OBJECTS) $(tutorial_daytime6_server_LDADD) $(LIBS) +tutorial/daytime7/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime7 + @: > tutorial/daytime7/$(am__dirstamp) +tutorial/daytime7/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/daytime7/$(DEPDIR) + @: > tutorial/daytime7/$(DEPDIR)/$(am__dirstamp) +tutorial/daytime7/server.$(OBJEXT): tutorial/daytime7/$(am__dirstamp) \ + tutorial/daytime7/$(DEPDIR)/$(am__dirstamp) + +tutorial/daytime7/server$(EXEEXT): $(tutorial_daytime7_server_OBJECTS) $(tutorial_daytime7_server_DEPENDENCIES) $(EXTRA_tutorial_daytime7_server_DEPENDENCIES) tutorial/daytime7/$(am__dirstamp) + @rm -f tutorial/daytime7/server$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_daytime7_server_OBJECTS) $(tutorial_daytime7_server_LDADD) $(LIBS) +tutorial/timer1/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer1 + @: > tutorial/timer1/$(am__dirstamp) +tutorial/timer1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer1/$(DEPDIR) + @: > tutorial/timer1/$(DEPDIR)/$(am__dirstamp) +tutorial/timer1/timer.$(OBJEXT): tutorial/timer1/$(am__dirstamp) \ + tutorial/timer1/$(DEPDIR)/$(am__dirstamp) + +tutorial/timer1/timer$(EXEEXT): $(tutorial_timer1_timer_OBJECTS) $(tutorial_timer1_timer_DEPENDENCIES) $(EXTRA_tutorial_timer1_timer_DEPENDENCIES) tutorial/timer1/$(am__dirstamp) + @rm -f tutorial/timer1/timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_timer1_timer_OBJECTS) $(tutorial_timer1_timer_LDADD) $(LIBS) +tutorial/timer2/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer2 + @: > tutorial/timer2/$(am__dirstamp) +tutorial/timer2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer2/$(DEPDIR) + @: > tutorial/timer2/$(DEPDIR)/$(am__dirstamp) +tutorial/timer2/timer.$(OBJEXT): tutorial/timer2/$(am__dirstamp) \ + tutorial/timer2/$(DEPDIR)/$(am__dirstamp) + +tutorial/timer2/timer$(EXEEXT): $(tutorial_timer2_timer_OBJECTS) $(tutorial_timer2_timer_DEPENDENCIES) $(EXTRA_tutorial_timer2_timer_DEPENDENCIES) tutorial/timer2/$(am__dirstamp) + @rm -f tutorial/timer2/timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_timer2_timer_OBJECTS) $(tutorial_timer2_timer_LDADD) $(LIBS) +tutorial/timer3/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer3 + @: > tutorial/timer3/$(am__dirstamp) +tutorial/timer3/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer3/$(DEPDIR) + @: > tutorial/timer3/$(DEPDIR)/$(am__dirstamp) +tutorial/timer3/timer.$(OBJEXT): tutorial/timer3/$(am__dirstamp) \ + tutorial/timer3/$(DEPDIR)/$(am__dirstamp) + +tutorial/timer3/timer$(EXEEXT): $(tutorial_timer3_timer_OBJECTS) $(tutorial_timer3_timer_DEPENDENCIES) $(EXTRA_tutorial_timer3_timer_DEPENDENCIES) tutorial/timer3/$(am__dirstamp) + @rm -f tutorial/timer3/timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_timer3_timer_OBJECTS) $(tutorial_timer3_timer_LDADD) $(LIBS) +tutorial/timer4/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer4 + @: > tutorial/timer4/$(am__dirstamp) +tutorial/timer4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer4/$(DEPDIR) + @: > tutorial/timer4/$(DEPDIR)/$(am__dirstamp) +tutorial/timer4/timer.$(OBJEXT): tutorial/timer4/$(am__dirstamp) \ + tutorial/timer4/$(DEPDIR)/$(am__dirstamp) + +tutorial/timer4/timer$(EXEEXT): $(tutorial_timer4_timer_OBJECTS) $(tutorial_timer4_timer_DEPENDENCIES) $(EXTRA_tutorial_timer4_timer_DEPENDENCIES) tutorial/timer4/$(am__dirstamp) + @rm -f tutorial/timer4/timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_timer4_timer_OBJECTS) $(tutorial_timer4_timer_LDADD) $(LIBS) +tutorial/timer5/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer5 + @: > tutorial/timer5/$(am__dirstamp) +tutorial/timer5/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tutorial/timer5/$(DEPDIR) + @: > tutorial/timer5/$(DEPDIR)/$(am__dirstamp) +tutorial/timer5/timer.$(OBJEXT): tutorial/timer5/$(am__dirstamp) \ + tutorial/timer5/$(DEPDIR)/$(am__dirstamp) + +tutorial/timer5/timer$(EXEEXT): $(tutorial_timer5_timer_OBJECTS) $(tutorial_timer5_timer_DEPENDENCIES) $(EXTRA_tutorial_timer5_timer_DEPENDENCIES) tutorial/timer5/$(am__dirstamp) + @rm -f tutorial/timer5/timer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(tutorial_timer5_timer_OBJECTS) $(tutorial_timer5_timer_LDADD) $(LIBS) +windows/$(am__dirstamp): + @$(MKDIR_P) windows + @: > windows/$(am__dirstamp) +windows/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) windows/$(DEPDIR) + @: > windows/$(DEPDIR)/$(am__dirstamp) +windows/transmit_file.$(OBJEXT): windows/$(am__dirstamp) \ + windows/$(DEPDIR)/$(am__dirstamp) + +windows/transmit_file$(EXEEXT): $(windows_transmit_file_OBJECTS) $(windows_transmit_file_DEPENDENCIES) $(EXTRA_windows_transmit_file_DEPENDENCIES) windows/$(am__dirstamp) + @rm -f windows/transmit_file$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(windows_transmit_file_OBJECTS) $(windows_transmit_file_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f ../../*.$(OBJEXT) + -rm -f allocation/*.$(OBJEXT) + -rm -f buffers/*.$(OBJEXT) + -rm -f chat/*.$(OBJEXT) + -rm -f echo/*.$(OBJEXT) + -rm -f fork/*.$(OBJEXT) + -rm -f http/client/*.$(OBJEXT) + -rm -f http/server/*.$(OBJEXT) + -rm -f http/server2/*.$(OBJEXT) + -rm -f http/server3/*.$(OBJEXT) + -rm -f http/server4/*.$(OBJEXT) + -rm -f icmp/*.$(OBJEXT) + -rm -f invocation/*.$(OBJEXT) + -rm -f iostreams/*.$(OBJEXT) + -rm -f local/*.$(OBJEXT) + -rm -f multicast/*.$(OBJEXT) + -rm -f nonblocking/*.$(OBJEXT) + -rm -f porthopper/*.$(OBJEXT) + -rm -f services/*.$(OBJEXT) + -rm -f socks4/*.$(OBJEXT) + -rm -f spawn/*.$(OBJEXT) + -rm -f ssl/*.$(OBJEXT) + -rm -f timeouts/*.$(OBJEXT) + -rm -f timers/*.$(OBJEXT) + -rm -f tutorial/daytime1/*.$(OBJEXT) + -rm -f tutorial/daytime2/*.$(OBJEXT) + -rm -f tutorial/daytime3/*.$(OBJEXT) + -rm -f tutorial/daytime4/*.$(OBJEXT) + -rm -f tutorial/daytime5/*.$(OBJEXT) + -rm -f tutorial/daytime6/*.$(OBJEXT) + -rm -f tutorial/daytime7/*.$(OBJEXT) + -rm -f tutorial/timer1/*.$(OBJEXT) + -rm -f tutorial/timer2/*.$(OBJEXT) + -rm -f tutorial/timer3/*.$(OBJEXT) + -rm -f tutorial/timer4/*.$(OBJEXT) + -rm -f tutorial/timer5/*.$(OBJEXT) + -rm -f windows/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@../../$(DEPDIR)/asio.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../../$(DEPDIR)/asio_ssl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@allocation/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@buffers/$(DEPDIR)/reference_counted.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@chat/$(DEPDIR)/chat_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@chat/$(DEPDIR)/chat_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@chat/$(DEPDIR)/posix_chat_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/async_tcp_echo_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/async_udp_echo_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/blocking_tcp_echo_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/blocking_tcp_echo_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/blocking_udp_echo_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@echo/$(DEPDIR)/blocking_udp_echo_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fork/$(DEPDIR)/daemon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fork/$(DEPDIR)/process_per_connection.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/client/$(DEPDIR)/async_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/client/$(DEPDIR)/sync_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/connection.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/connection_manager.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/mime_types.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/reply.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/request_handler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/request_parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/connection.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/io_context_pool.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/mime_types.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/reply.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/request_handler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/request_parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server2/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/connection.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/mime_types.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/reply.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/request_handler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/request_parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server3/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/file_handler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/mime_types.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/reply.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/request_parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@http/server4/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@icmp/$(DEPDIR)/ping.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@invocation/$(DEPDIR)/prioritised_handlers.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@iostreams/$(DEPDIR)/daytime_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@iostreams/$(DEPDIR)/daytime_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@iostreams/$(DEPDIR)/http_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@local/$(DEPDIR)/connect_pair.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@local/$(DEPDIR)/iostream_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@local/$(DEPDIR)/stream_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@local/$(DEPDIR)/stream_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@multicast/$(DEPDIR)/receiver.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@multicast/$(DEPDIR)/sender.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nonblocking/$(DEPDIR)/third_party_lib.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@porthopper/$(DEPDIR)/client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@porthopper/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@services/$(DEPDIR)/daytime_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@services/$(DEPDIR)/logger_service.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@socks4/$(DEPDIR)/sync_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@spawn/$(DEPDIR)/echo_server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@spawn/$(DEPDIR)/parallel_grep.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ssl/$(DEPDIR)/client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ssl/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timeouts/$(DEPDIR)/async_tcp_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timeouts/$(DEPDIR)/blocking_tcp_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timeouts/$(DEPDIR)/blocking_token_tcp_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timeouts/$(DEPDIR)/blocking_udp_client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timeouts/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@timers/$(DEPDIR)/time_t_timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime1/$(DEPDIR)/client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime2/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime3/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime4/$(DEPDIR)/client.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime5/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime6/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/daytime7/$(DEPDIR)/server.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/timer1/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/timer2/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/timer3/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/timer4/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tutorial/timer5/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@windows/$(DEPDIR)/transmit_file.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +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 $(PROGRAMS) $(LIBRARIES) $(HEADERS) +installdirs: +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) + -rm -f ../../$(DEPDIR)/$(am__dirstamp) + -rm -f ../../$(am__dirstamp) + -rm -f allocation/$(DEPDIR)/$(am__dirstamp) + -rm -f allocation/$(am__dirstamp) + -rm -f buffers/$(DEPDIR)/$(am__dirstamp) + -rm -f buffers/$(am__dirstamp) + -rm -f chat/$(DEPDIR)/$(am__dirstamp) + -rm -f chat/$(am__dirstamp) + -rm -f echo/$(DEPDIR)/$(am__dirstamp) + -rm -f echo/$(am__dirstamp) + -rm -f fork/$(DEPDIR)/$(am__dirstamp) + -rm -f fork/$(am__dirstamp) + -rm -f http/client/$(DEPDIR)/$(am__dirstamp) + -rm -f http/client/$(am__dirstamp) + -rm -f http/server/$(DEPDIR)/$(am__dirstamp) + -rm -f http/server/$(am__dirstamp) + -rm -f http/server2/$(DEPDIR)/$(am__dirstamp) + -rm -f http/server2/$(am__dirstamp) + -rm -f http/server3/$(DEPDIR)/$(am__dirstamp) + -rm -f http/server3/$(am__dirstamp) + -rm -f http/server4/$(DEPDIR)/$(am__dirstamp) + -rm -f http/server4/$(am__dirstamp) + -rm -f icmp/$(DEPDIR)/$(am__dirstamp) + -rm -f icmp/$(am__dirstamp) + -rm -f invocation/$(DEPDIR)/$(am__dirstamp) + -rm -f invocation/$(am__dirstamp) + -rm -f iostreams/$(DEPDIR)/$(am__dirstamp) + -rm -f iostreams/$(am__dirstamp) + -rm -f local/$(DEPDIR)/$(am__dirstamp) + -rm -f local/$(am__dirstamp) + -rm -f multicast/$(DEPDIR)/$(am__dirstamp) + -rm -f multicast/$(am__dirstamp) + -rm -f nonblocking/$(DEPDIR)/$(am__dirstamp) + -rm -f nonblocking/$(am__dirstamp) + -rm -f porthopper/$(DEPDIR)/$(am__dirstamp) + -rm -f porthopper/$(am__dirstamp) + -rm -f services/$(DEPDIR)/$(am__dirstamp) + -rm -f services/$(am__dirstamp) + -rm -f socks4/$(DEPDIR)/$(am__dirstamp) + -rm -f socks4/$(am__dirstamp) + -rm -f spawn/$(DEPDIR)/$(am__dirstamp) + -rm -f spawn/$(am__dirstamp) + -rm -f ssl/$(DEPDIR)/$(am__dirstamp) + -rm -f ssl/$(am__dirstamp) + -rm -f timeouts/$(DEPDIR)/$(am__dirstamp) + -rm -f timeouts/$(am__dirstamp) + -rm -f timers/$(DEPDIR)/$(am__dirstamp) + -rm -f timers/$(am__dirstamp) + -rm -f tutorial/daytime1/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime1/$(am__dirstamp) + -rm -f tutorial/daytime2/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime2/$(am__dirstamp) + -rm -f tutorial/daytime3/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime3/$(am__dirstamp) + -rm -f tutorial/daytime4/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime4/$(am__dirstamp) + -rm -f tutorial/daytime5/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime5/$(am__dirstamp) + -rm -f tutorial/daytime6/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime6/$(am__dirstamp) + -rm -f tutorial/daytime7/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/daytime7/$(am__dirstamp) + -rm -f tutorial/timer1/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/timer1/$(am__dirstamp) + -rm -f tutorial/timer2/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/timer2/$(am__dirstamp) + -rm -f tutorial/timer3/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/timer3/$(am__dirstamp) + -rm -f tutorial/timer4/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/timer4/$(am__dirstamp) + -rm -f tutorial/timer5/$(DEPDIR)/$(am__dirstamp) + -rm -f tutorial/timer5/$(am__dirstamp) + -rm -f windows/$(DEPDIR)/$(am__dirstamp) + -rm -f windows/$(am__dirstamp) + +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 clean-noinstLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f ../../$(DEPDIR)/asio.Po + -rm -f ../../$(DEPDIR)/asio_ssl.Po + -rm -f allocation/$(DEPDIR)/server.Po + -rm -f buffers/$(DEPDIR)/reference_counted.Po + -rm -f chat/$(DEPDIR)/chat_client.Po + -rm -f chat/$(DEPDIR)/chat_server.Po + -rm -f chat/$(DEPDIR)/posix_chat_client.Po + -rm -f echo/$(DEPDIR)/async_tcp_echo_server.Po + -rm -f echo/$(DEPDIR)/async_udp_echo_server.Po + -rm -f echo/$(DEPDIR)/blocking_tcp_echo_client.Po + -rm -f echo/$(DEPDIR)/blocking_tcp_echo_server.Po + -rm -f echo/$(DEPDIR)/blocking_udp_echo_client.Po + -rm -f echo/$(DEPDIR)/blocking_udp_echo_server.Po + -rm -f fork/$(DEPDIR)/daemon.Po + -rm -f fork/$(DEPDIR)/process_per_connection.Po + -rm -f http/client/$(DEPDIR)/async_client.Po + -rm -f http/client/$(DEPDIR)/sync_client.Po + -rm -f http/server/$(DEPDIR)/connection.Po + -rm -f http/server/$(DEPDIR)/connection_manager.Po + -rm -f http/server/$(DEPDIR)/main.Po + -rm -f http/server/$(DEPDIR)/mime_types.Po + -rm -f http/server/$(DEPDIR)/reply.Po + -rm -f http/server/$(DEPDIR)/request_handler.Po + -rm -f http/server/$(DEPDIR)/request_parser.Po + -rm -f http/server/$(DEPDIR)/server.Po + -rm -f http/server2/$(DEPDIR)/connection.Po + -rm -f http/server2/$(DEPDIR)/io_context_pool.Po + -rm -f http/server2/$(DEPDIR)/main.Po + -rm -f http/server2/$(DEPDIR)/mime_types.Po + -rm -f http/server2/$(DEPDIR)/reply.Po + -rm -f http/server2/$(DEPDIR)/request_handler.Po + -rm -f http/server2/$(DEPDIR)/request_parser.Po + -rm -f http/server2/$(DEPDIR)/server.Po + -rm -f http/server3/$(DEPDIR)/connection.Po + -rm -f http/server3/$(DEPDIR)/main.Po + -rm -f http/server3/$(DEPDIR)/mime_types.Po + -rm -f http/server3/$(DEPDIR)/reply.Po + -rm -f http/server3/$(DEPDIR)/request_handler.Po + -rm -f http/server3/$(DEPDIR)/request_parser.Po + -rm -f http/server3/$(DEPDIR)/server.Po + -rm -f http/server4/$(DEPDIR)/file_handler.Po + -rm -f http/server4/$(DEPDIR)/main.Po + -rm -f http/server4/$(DEPDIR)/mime_types.Po + -rm -f http/server4/$(DEPDIR)/reply.Po + -rm -f http/server4/$(DEPDIR)/request_parser.Po + -rm -f http/server4/$(DEPDIR)/server.Po + -rm -f icmp/$(DEPDIR)/ping.Po + -rm -f invocation/$(DEPDIR)/prioritised_handlers.Po + -rm -f iostreams/$(DEPDIR)/daytime_client.Po + -rm -f iostreams/$(DEPDIR)/daytime_server.Po + -rm -f iostreams/$(DEPDIR)/http_client.Po + -rm -f local/$(DEPDIR)/connect_pair.Po + -rm -f local/$(DEPDIR)/iostream_client.Po + -rm -f local/$(DEPDIR)/stream_client.Po + -rm -f local/$(DEPDIR)/stream_server.Po + -rm -f multicast/$(DEPDIR)/receiver.Po + -rm -f multicast/$(DEPDIR)/sender.Po + -rm -f nonblocking/$(DEPDIR)/third_party_lib.Po + -rm -f porthopper/$(DEPDIR)/client.Po + -rm -f porthopper/$(DEPDIR)/server.Po + -rm -f services/$(DEPDIR)/daytime_client.Po + -rm -f services/$(DEPDIR)/logger_service.Po + -rm -f socks4/$(DEPDIR)/sync_client.Po + -rm -f spawn/$(DEPDIR)/echo_server.Po + -rm -f spawn/$(DEPDIR)/parallel_grep.Po + -rm -f ssl/$(DEPDIR)/client.Po + -rm -f ssl/$(DEPDIR)/server.Po + -rm -f timeouts/$(DEPDIR)/async_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_token_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_udp_client.Po + -rm -f timeouts/$(DEPDIR)/server.Po + -rm -f timers/$(DEPDIR)/time_t_timer.Po + -rm -f tutorial/daytime1/$(DEPDIR)/client.Po + -rm -f tutorial/daytime2/$(DEPDIR)/server.Po + -rm -f tutorial/daytime3/$(DEPDIR)/server.Po + -rm -f tutorial/daytime4/$(DEPDIR)/client.Po + -rm -f tutorial/daytime5/$(DEPDIR)/server.Po + -rm -f tutorial/daytime6/$(DEPDIR)/server.Po + -rm -f tutorial/daytime7/$(DEPDIR)/server.Po + -rm -f tutorial/timer1/$(DEPDIR)/timer.Po + -rm -f tutorial/timer2/$(DEPDIR)/timer.Po + -rm -f tutorial/timer3/$(DEPDIR)/timer.Po + -rm -f tutorial/timer4/$(DEPDIR)/timer.Po + -rm -f tutorial/timer5/$(DEPDIR)/timer.Po + -rm -f windows/$(DEPDIR)/transmit_file.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +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 ../../$(DEPDIR)/asio.Po + -rm -f ../../$(DEPDIR)/asio_ssl.Po + -rm -f allocation/$(DEPDIR)/server.Po + -rm -f buffers/$(DEPDIR)/reference_counted.Po + -rm -f chat/$(DEPDIR)/chat_client.Po + -rm -f chat/$(DEPDIR)/chat_server.Po + -rm -f chat/$(DEPDIR)/posix_chat_client.Po + -rm -f echo/$(DEPDIR)/async_tcp_echo_server.Po + -rm -f echo/$(DEPDIR)/async_udp_echo_server.Po + -rm -f echo/$(DEPDIR)/blocking_tcp_echo_client.Po + -rm -f echo/$(DEPDIR)/blocking_tcp_echo_server.Po + -rm -f echo/$(DEPDIR)/blocking_udp_echo_client.Po + -rm -f echo/$(DEPDIR)/blocking_udp_echo_server.Po + -rm -f fork/$(DEPDIR)/daemon.Po + -rm -f fork/$(DEPDIR)/process_per_connection.Po + -rm -f http/client/$(DEPDIR)/async_client.Po + -rm -f http/client/$(DEPDIR)/sync_client.Po + -rm -f http/server/$(DEPDIR)/connection.Po + -rm -f http/server/$(DEPDIR)/connection_manager.Po + -rm -f http/server/$(DEPDIR)/main.Po + -rm -f http/server/$(DEPDIR)/mime_types.Po + -rm -f http/server/$(DEPDIR)/reply.Po + -rm -f http/server/$(DEPDIR)/request_handler.Po + -rm -f http/server/$(DEPDIR)/request_parser.Po + -rm -f http/server/$(DEPDIR)/server.Po + -rm -f http/server2/$(DEPDIR)/connection.Po + -rm -f http/server2/$(DEPDIR)/io_context_pool.Po + -rm -f http/server2/$(DEPDIR)/main.Po + -rm -f http/server2/$(DEPDIR)/mime_types.Po + -rm -f http/server2/$(DEPDIR)/reply.Po + -rm -f http/server2/$(DEPDIR)/request_handler.Po + -rm -f http/server2/$(DEPDIR)/request_parser.Po + -rm -f http/server2/$(DEPDIR)/server.Po + -rm -f http/server3/$(DEPDIR)/connection.Po + -rm -f http/server3/$(DEPDIR)/main.Po + -rm -f http/server3/$(DEPDIR)/mime_types.Po + -rm -f http/server3/$(DEPDIR)/reply.Po + -rm -f http/server3/$(DEPDIR)/request_handler.Po + -rm -f http/server3/$(DEPDIR)/request_parser.Po + -rm -f http/server3/$(DEPDIR)/server.Po + -rm -f http/server4/$(DEPDIR)/file_handler.Po + -rm -f http/server4/$(DEPDIR)/main.Po + -rm -f http/server4/$(DEPDIR)/mime_types.Po + -rm -f http/server4/$(DEPDIR)/reply.Po + -rm -f http/server4/$(DEPDIR)/request_parser.Po + -rm -f http/server4/$(DEPDIR)/server.Po + -rm -f icmp/$(DEPDIR)/ping.Po + -rm -f invocation/$(DEPDIR)/prioritised_handlers.Po + -rm -f iostreams/$(DEPDIR)/daytime_client.Po + -rm -f iostreams/$(DEPDIR)/daytime_server.Po + -rm -f iostreams/$(DEPDIR)/http_client.Po + -rm -f local/$(DEPDIR)/connect_pair.Po + -rm -f local/$(DEPDIR)/iostream_client.Po + -rm -f local/$(DEPDIR)/stream_client.Po + -rm -f local/$(DEPDIR)/stream_server.Po + -rm -f multicast/$(DEPDIR)/receiver.Po + -rm -f multicast/$(DEPDIR)/sender.Po + -rm -f nonblocking/$(DEPDIR)/third_party_lib.Po + -rm -f porthopper/$(DEPDIR)/client.Po + -rm -f porthopper/$(DEPDIR)/server.Po + -rm -f services/$(DEPDIR)/daytime_client.Po + -rm -f services/$(DEPDIR)/logger_service.Po + -rm -f socks4/$(DEPDIR)/sync_client.Po + -rm -f spawn/$(DEPDIR)/echo_server.Po + -rm -f spawn/$(DEPDIR)/parallel_grep.Po + -rm -f ssl/$(DEPDIR)/client.Po + -rm -f ssl/$(DEPDIR)/server.Po + -rm -f timeouts/$(DEPDIR)/async_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_token_tcp_client.Po + -rm -f timeouts/$(DEPDIR)/blocking_udp_client.Po + -rm -f timeouts/$(DEPDIR)/server.Po + -rm -f timers/$(DEPDIR)/time_t_timer.Po + -rm -f tutorial/daytime1/$(DEPDIR)/client.Po + -rm -f tutorial/daytime2/$(DEPDIR)/server.Po + -rm -f tutorial/daytime3/$(DEPDIR)/server.Po + -rm -f tutorial/daytime4/$(DEPDIR)/client.Po + -rm -f tutorial/daytime5/$(DEPDIR)/server.Po + -rm -f tutorial/daytime6/$(DEPDIR)/server.Po + -rm -f tutorial/daytime7/$(DEPDIR)/server.Po + -rm -f tutorial/timer1/$(DEPDIR)/timer.Po + -rm -f tutorial/timer2/$(DEPDIR)/timer.Po + -rm -f tutorial/timer3/$(DEPDIR)/timer.Po + -rm -f tutorial/timer4/$(DEPDIR)/timer.Po + -rm -f tutorial/timer5/$(DEPDIR)/timer.Po + -rm -f windows/$(DEPDIR)/transmit_file.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + 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-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.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/3rdparty/asio/src/examples/cpp03/allocation/.gitignore b/3rdparty/asio/src/examples/cpp03/allocation/.gitignore deleted file mode 100644 index 180ba886e58..00000000000 --- a/3rdparty/asio/src/examples/cpp03/allocation/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/allocation/server.cpp b/3rdparty/asio/src/examples/cpp03/allocation/server.cpp index e26eb564918..ca69460ff14 100644 --- a/3rdparty/asio/src/examples/cpp03/allocation/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/allocation/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #include <iostream> #include <boost/aligned_storage.hpp> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/enable_shared_from_this.hpp> #include <boost/noncopyable.hpp> #include <boost/shared_ptr.hpp> @@ -24,11 +24,11 @@ using asio::ip::tcp; // It contains a single block of memory which may be returned for allocation // requests. If the memory is in use when an allocation request is made, the // allocator delegates allocation to the global heap. -class handler_allocator +class handler_memory : private boost::noncopyable { public: - handler_allocator() + handler_memory() : in_use_(false) { } @@ -66,19 +66,78 @@ private: bool in_use_; }; +// The allocator to be associated with the handler objects. This allocator only +// needs to satisfy the C++11 minimal allocator requirements, plus rebind when +// targeting C++03. +template <typename T> +class handler_allocator +{ +public: + typedef T value_type; + + explicit handler_allocator(handler_memory& mem) + : memory_(mem) + { + } + + template <typename U> + handler_allocator(const handler_allocator<U>& other) + : memory_(other.memory_) + { + } + + template <typename U> + struct rebind + { + typedef handler_allocator<U> other; + }; + + bool operator==(const handler_allocator& other) const + { + return &memory_ == &other.memory_; + } + + bool operator!=(const handler_allocator& other) const + { + return &memory_ != &other.memory_; + } + + T* allocate(std::size_t n) const + { + return static_cast<T*>(memory_.allocate(sizeof(T) * n)); + } + + void deallocate(T* p, std::size_t /*n*/) const + { + return memory_.deallocate(p); + } + +//private: + // The underlying memory. + handler_memory& memory_; +}; + // Wrapper class template for handler objects to allow handler memory -// allocation to be customised. Calls to operator() are forwarded to the -// encapsulated handler. +// allocation to be customised. The allocator_type typedef and get_allocator() +// member function are used by the asynchronous operations to obtain the +// allocator. Calls to operator() are forwarded to the encapsulated handler. template <typename Handler> class custom_alloc_handler { public: - custom_alloc_handler(handler_allocator& a, Handler h) - : allocator_(a), + typedef handler_allocator<Handler> allocator_type; + + custom_alloc_handler(handler_memory& m, Handler h) + : memory_(m), handler_(h) { } + allocator_type get_allocator() const + { + return allocator_type(memory_); + } + template <typename Arg1> void operator()(Arg1 arg1) { @@ -91,29 +150,17 @@ public: handler_(arg1, arg2); } - friend void* asio_handler_allocate(std::size_t size, - custom_alloc_handler<Handler>* this_handler) - { - return this_handler->allocator_.allocate(size); - } - - friend void asio_handler_deallocate(void* pointer, std::size_t /*size*/, - custom_alloc_handler<Handler>* this_handler) - { - this_handler->allocator_.deallocate(pointer); - } - private: - handler_allocator& allocator_; + handler_memory& memory_; Handler handler_; }; // Helper function to wrap a handler object to add custom allocation. template <typename Handler> inline custom_alloc_handler<Handler> make_custom_alloc_handler( - handler_allocator& a, Handler h) + handler_memory& m, Handler h) { - return custom_alloc_handler<Handler>(a, h); + return custom_alloc_handler<Handler>(m, h); } class session @@ -133,7 +180,7 @@ public: void start() { socket_.async_read_some(asio::buffer(data_), - make_custom_alloc_handler(allocator_, + make_custom_alloc_handler(handler_memory_, boost::bind(&session::handle_read, shared_from_this(), asio::placeholders::error, @@ -147,7 +194,7 @@ public: { asio::async_write(socket_, asio::buffer(data_, bytes_transferred), - make_custom_alloc_handler(allocator_, + make_custom_alloc_handler(handler_memory_, boost::bind(&session::handle_write, shared_from_this(), asio::placeholders::error))); @@ -159,7 +206,7 @@ public: if (!error) { socket_.async_read_some(asio::buffer(data_), - make_custom_alloc_handler(allocator_, + make_custom_alloc_handler(handler_memory_, boost::bind(&session::handle_read, shared_from_this(), asio::placeholders::error, @@ -174,8 +221,8 @@ private: // Buffer used to store data received from the client. boost::array<char, 1024> data_; - // The allocator to use for handler-based custom memory allocation. - handler_allocator allocator_; + // The memory to use for handler-based custom memory allocation. + handler_memory handler_memory_; }; typedef boost::shared_ptr<session> session_ptr; diff --git a/3rdparty/asio/src/examples/cpp03/buffers/.gitignore b/3rdparty/asio/src/examples/cpp03/buffers/.gitignore deleted file mode 100644 index abe68c665f5..00000000000 --- a/3rdparty/asio/src/examples/cpp03/buffers/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -reference_counted -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/buffers/reference_counted.cpp b/3rdparty/asio/src/examples/cpp03/buffers/reference_counted.cpp index 9f7455cdbbd..29750f693dc 100644 --- a/3rdparty/asio/src/examples/cpp03/buffers/reference_counted.cpp +++ b/3rdparty/asio/src/examples/cpp03/buffers/reference_counted.cpp @@ -2,14 +2,14 @@ // reference_counted.cpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/enable_shared_from_this.hpp> #include <boost/shared_ptr.hpp> #include <iostream> diff --git a/3rdparty/asio/src/examples/cpp03/chat/.gitignore b/3rdparty/asio/src/examples/cpp03/chat/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/chat/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/chat/chat_client.cpp b/3rdparty/asio/src/examples/cpp03/chat/chat_client.cpp index 9dd16145b81..868e7d7bfa3 100644 --- a/3rdparty/asio/src/examples/cpp03/chat/chat_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/chat/chat_client.cpp @@ -2,7 +2,7 @@ // chat_client.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <cstdlib> #include <deque> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" #include "chat_message.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/chat/chat_message.hpp b/3rdparty/asio/src/examples/cpp03/chat/chat_message.hpp index ceeef2f03f8..26fb04357d0 100644 --- a/3rdparty/asio/src/examples/cpp03/chat/chat_message.hpp +++ b/3rdparty/asio/src/examples/cpp03/chat/chat_message.hpp @@ -2,7 +2,7 @@ // chat_message.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/chat/chat_server.cpp b/3rdparty/asio/src/examples/cpp03/chat/chat_server.cpp index 902515b3b54..c8abca218f1 100644 --- a/3rdparty/asio/src/examples/cpp03/chat/chat_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/chat/chat_server.cpp @@ -2,7 +2,7 @@ // chat_server.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -14,7 +14,7 @@ #include <iostream> #include <list> #include <set> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include "asio.hpp" @@ -46,7 +46,8 @@ public: { participants_.insert(participant); std::for_each(recent_msgs_.begin(), recent_msgs_.end(), - boost::bind(&chat_participant::deliver, participant, _1)); + boost::bind(&chat_participant::deliver, + participant, boost::placeholders::_1)); } void leave(chat_participant_ptr participant) @@ -61,7 +62,8 @@ public: recent_msgs_.pop_front(); std::for_each(participants_.begin(), participants_.end(), - boost::bind(&chat_participant::deliver, _1, boost::ref(msg))); + boost::bind(&chat_participant::deliver, + boost::placeholders::_1, boost::ref(msg))); } private: diff --git a/3rdparty/asio/src/examples/cpp03/chat/posix_chat_client.cpp b/3rdparty/asio/src/examples/cpp03/chat/posix_chat_client.cpp index 91428825aad..16f312de63e 100644 --- a/3rdparty/asio/src/examples/cpp03/chat/posix_chat_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/chat/posix_chat_client.cpp @@ -2,7 +2,7 @@ // posix_chat_client.cpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #include <cstring> #include <iostream> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" #include "chat_message.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/echo/.gitignore b/3rdparty/asio/src/examples/cpp03/echo/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/echo/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp b/3rdparty/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp index c26136e89b5..a0b2eabd173 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp @@ -2,7 +2,7 @@ // async_tcp_echo_server.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <cstdlib> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" using asio::ip::tcp; diff --git a/3rdparty/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp b/3rdparty/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp index 851c46b0803..a9e21d72e4b 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp @@ -2,7 +2,7 @@ // async_udp_echo_server.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <cstdlib> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" using asio::ip::udp; diff --git a/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp b/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp index 224b9dbb1b2..1d39b4ed2e4 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp @@ -2,7 +2,7 @@ // blocking_tcp_echo_client.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp b/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp index 163dc2a392c..7828e7bd7d8 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp @@ -2,7 +2,7 @@ // blocking_tcp_echo_server.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <cstdlib> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/smart_ptr.hpp> #include "asio.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp b/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp index ee90081b7ea..ab69f4c9968 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp @@ -2,7 +2,7 @@ // blocking_udp_echo_client.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp b/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp index 3cc364c20b5..42498a15e9a 100644 --- a/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp @@ -2,7 +2,7 @@ // blocking_udp_echo_server.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/fork/.gitignore b/3rdparty/asio/src/examples/cpp03/fork/.gitignore deleted file mode 100644 index 6b565fe313a..00000000000 --- a/3rdparty/asio/src/examples/cpp03/fork/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds -daemon -process_per_connection diff --git a/3rdparty/asio/src/examples/cpp03/fork/daemon.cpp b/3rdparty/asio/src/examples/cpp03/fork/daemon.cpp index 06eef3d6b49..ae00d3d6aff 100644 --- a/3rdparty/asio/src/examples/cpp03/fork/daemon.cpp +++ b/3rdparty/asio/src/examples/cpp03/fork/daemon.cpp @@ -2,7 +2,7 @@ // daemon.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #include <asio/ip/udp.hpp> #include <asio/signal_set.hpp> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <ctime> #include <iostream> #include <syslog.h> @@ -34,12 +34,13 @@ private: { socket_.async_receive_from( asio::buffer(recv_buffer_), remote_endpoint_, - boost::bind(&udp_daytime_server::handle_receive, this, _1)); + boost::bind(&udp_daytime_server::handle_receive, + this, boost::placeholders::_1)); } void handle_receive(const asio::error_code& ec) { - if (!ec || ec == asio::error::message_size) + if (!ec) { using namespace std; // For time_t, time and ctime; time_t now = time(0); diff --git a/3rdparty/asio/src/examples/cpp03/fork/process_per_connection.cpp b/3rdparty/asio/src/examples/cpp03/fork/process_per_connection.cpp index 483147e9552..9a54baedac4 100644 --- a/3rdparty/asio/src/examples/cpp03/fork/process_per_connection.cpp +++ b/3rdparty/asio/src/examples/cpp03/fork/process_per_connection.cpp @@ -2,7 +2,7 @@ // process_per_connection.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -13,7 +13,7 @@ #include <asio/signal_set.hpp> #include <asio/write.hpp> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <cstdlib> #include <iostream> #include <sys/types.h> @@ -58,7 +58,7 @@ private: void start_accept() { acceptor_.async_accept(socket_, - boost::bind(&server::handle_accept, this, _1)); + boost::bind(&server::handle_accept, this, boost::placeholders::_1)); } void handle_accept(const asio::error_code& ec) @@ -108,7 +108,8 @@ private: void start_read() { socket_.async_read_some(asio::buffer(data_), - boost::bind(&server::handle_read, this, _1, _2)); + boost::bind(&server::handle_read, this, + boost::placeholders::_1, boost::placeholders::_2)); } void handle_read(const asio::error_code& ec, std::size_t length) @@ -120,7 +121,7 @@ private: void start_write(std::size_t length) { asio::async_write(socket_, asio::buffer(data_, length), - boost::bind(&server::handle_write, this, _1)); + boost::bind(&server::handle_write, this, boost::placeholders::_1)); } void handle_write(const asio::error_code& ec) diff --git a/3rdparty/asio/src/examples/cpp03/http/client/.gitignore b/3rdparty/asio/src/examples/cpp03/http/client/.gitignore deleted file mode 100644 index e80f510d76c..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/client/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/http/client/async_client.cpp b/3rdparty/asio/src/examples/cpp03/http/client/async_client.cpp index 83dcc36d53a..210715bbd98 100644 --- a/3rdparty/asio/src/examples/cpp03/http/client/async_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/client/async_client.cpp @@ -2,7 +2,7 @@ // async_client.cpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -13,7 +13,7 @@ #include <ostream> #include <string> #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> using asio::ip::tcp; diff --git a/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp b/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp index a11b5c7c76a..fde984a6f4f 100644 --- a/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp @@ -2,7 +2,7 @@ // sync_client.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_1K.html b/3rdparty/asio/src/examples/cpp03/http/doc_root/data_1K.html deleted file mode 100644 index 1372c4dd177..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_1K.html +++ /dev/null @@ -1,28 +0,0 @@ -<!-- -Copyright (c) 2003-2016 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) ---> - -<html> -<body> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the<br/> -</body> -</html> - -<!-- boostinspect:nounlinked --> diff --git a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_2K.html b/3rdparty/asio/src/examples/cpp03/http/doc_root/data_2K.html deleted file mode 100644 index 686ce52b0a0..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_2K.html +++ /dev/null @@ -1,49 +0,0 @@ -<!-- -Copyright (c) 2003-2016 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) ---> - -<html> -<body> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps ove<br/> -</body> -</html> - -<!-- boostinspect:nounlinked --> diff --git a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_4K.html b/3rdparty/asio/src/examples/cpp03/http/doc_root/data_4K.html deleted file mode 100644 index f5db0a2bc00..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_4K.html +++ /dev/null @@ -1,91 +0,0 @@ -<!-- -Copyright (c) 2003-2016 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) ---> - -<html> -<body> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox<br/> -</body> -</html> - -<!-- boostinspect:nounlinked --> diff --git a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_8K.html b/3rdparty/asio/src/examples/cpp03/http/doc_root/data_8K.html deleted file mode 100644 index 0d42f72886b..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/doc_root/data_8K.html +++ /dev/null @@ -1,175 +0,0 @@ -<!-- -Copyright (c) 2003-2016 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) ---> - -<html> -<body> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -The quick brown fox jumps over the lazy dog<br/> -.... -</body> -</html> - -<!-- boostinspect:nounlinked --> diff --git a/3rdparty/asio/src/examples/cpp03/http/server/.gitignore b/3rdparty/asio/src/examples/cpp03/http/server/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/server/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/http/server/connection.cpp b/3rdparty/asio/src/examples/cpp03/http/server/connection.cpp index acbf637b453..f9bcad8671e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/connection.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/connection.cpp @@ -2,7 +2,7 @@ // connection.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include "connection.hpp" #include <vector> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "connection_manager.hpp" #include "request_handler.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/http/server/connection.hpp b/3rdparty/asio/src/examples/cpp03/http/server/connection.hpp index 6193b486443..2c842904471 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/connection.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/connection.hpp @@ -2,7 +2,7 @@ // connection.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.cpp b/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.cpp index 8fc9d8f285b..bfcac68a6a4 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.cpp @@ -2,7 +2,7 @@ // connection_manager.cpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include "connection_manager.hpp" #include <algorithm> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> namespace http { namespace server { @@ -30,7 +30,7 @@ void connection_manager::stop(connection_ptr c) void connection_manager::stop_all() { std::for_each(connections_.begin(), connections_.end(), - boost::bind(&connection::stop, _1)); + boost::bind(&connection::stop, boost::placeholders::_1)); connections_.clear(); } diff --git a/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.hpp b/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.hpp index e67653f6a26..723d26e770d 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/connection_manager.hpp @@ -2,7 +2,7 @@ // connection_manager.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/header.hpp b/3rdparty/asio/src/examples/cpp03/http/server/header.hpp index 22e3c4a7a10..bccbf977a9e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/header.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/header.hpp @@ -2,7 +2,7 @@ // header.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/main.cpp b/3rdparty/asio/src/examples/cpp03/http/server/main.cpp index 32d6f54dcb5..f66cb447a5e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/main.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/main.cpp @@ -2,7 +2,7 @@ // main.cpp // ~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <iostream> #include <string> #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "server.hpp" int main(int argc, char* argv[]) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/mime_types.cpp b/3rdparty/asio/src/examples/cpp03/http/server/mime_types.cpp index 80fdfe30e64..7542c690012 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/mime_types.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/mime_types.cpp @@ -2,7 +2,7 @@ // mime_types.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/mime_types.hpp b/3rdparty/asio/src/examples/cpp03/http/server/mime_types.hpp index 2fc0332791f..aef5676104e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/mime_types.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/mime_types.hpp @@ -2,7 +2,7 @@ // mime_types.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/reply.cpp b/3rdparty/asio/src/examples/cpp03/http/server/reply.cpp index f3730d3d94d..70219748a86 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/reply.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/reply.cpp @@ -2,7 +2,7 @@ // reply.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/reply.hpp b/3rdparty/asio/src/examples/cpp03/http/server/reply.hpp index 5189ac4363e..c8f3f11040d 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/reply.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/reply.hpp @@ -2,7 +2,7 @@ // reply.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/request.hpp b/3rdparty/asio/src/examples/cpp03/http/server/request.hpp index 129a3990b3d..8a6a2bdf824 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/request.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/request.hpp @@ -2,7 +2,7 @@ // request.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/request_handler.cpp b/3rdparty/asio/src/examples/cpp03/http/server/request_handler.cpp index 1201ef109d2..d86632a9a02 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/request_handler.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/request_handler.cpp @@ -2,7 +2,7 @@ // request_handler.cpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/request_handler.hpp b/3rdparty/asio/src/examples/cpp03/http/server/request_handler.hpp index 56a16dd395a..413a69f49a5 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/request_handler.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/request_handler.hpp @@ -2,7 +2,7 @@ // request_handler.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/request_parser.cpp b/3rdparty/asio/src/examples/cpp03/http/server/request_parser.cpp index 80644eea529..2f502d5e023 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/request_parser.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/request_parser.cpp @@ -2,7 +2,7 @@ // request_parser.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/request_parser.hpp b/3rdparty/asio/src/examples/cpp03/http/server/request_parser.hpp index d7da53cf030..0c7e0f74368 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/request_parser.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/request_parser.hpp @@ -2,7 +2,7 @@ // request_parser.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server/server.cpp b/3rdparty/asio/src/examples/cpp03/http/server/server.cpp index 89e19d08d42..2b7d11d3323 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/server.cpp @@ -2,14 +2,14 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include "server.hpp" -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <signal.h> namespace http { diff --git a/3rdparty/asio/src/examples/cpp03/http/server/server.hpp b/3rdparty/asio/src/examples/cpp03/http/server/server.hpp index 8b0b1a23296..d5d6ee4f343 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server/server.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server/server.hpp @@ -2,7 +2,7 @@ // server.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/.gitignore b/3rdparty/asio/src/examples/cpp03/http/server2/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/server2/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/connection.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/connection.cpp index 81f4a102217..08a99dbaf31 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/connection.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/connection.cpp @@ -2,7 +2,7 @@ // connection.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include "connection.hpp" #include <vector> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "request_handler.hpp" namespace http { diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/connection.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/connection.hpp index 9c624a8a172..3379fbb5649 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/connection.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/connection.hpp @@ -2,7 +2,7 @@ // connection.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/header.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/header.hpp index 0e44c551409..acba8ddf5ea 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/header.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/header.hpp @@ -2,7 +2,7 @@ // header.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.cpp index 049ac988615..9f0ec9f1984 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.cpp @@ -2,7 +2,7 @@ // io_context_pool.cpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include "server.hpp" #include <stdexcept> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> namespace http { @@ -28,7 +28,8 @@ io_context_pool::io_context_pool(std::size_t pool_size) { io_context_ptr io_context(new asio::io_context); io_contexts_.push_back(io_context); - work_.push_back(asio::make_work_guard(*io_context)); + work_.push_back(asio::require(io_context->get_executor(), + asio::execution::outstanding_work.tracked)); } } diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.hpp index 6a573c539f6..c08091dcefe 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.hpp @@ -2,7 +2,7 @@ // io_context_pool.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,6 +12,7 @@ #define HTTP_SERVER2_IO_SERVICE_POOL_HPP #include <asio.hpp> +#include <list> #include <vector> #include <boost/noncopyable.hpp> #include <boost/shared_ptr.hpp> @@ -38,14 +39,12 @@ public: private: typedef boost::shared_ptr<asio::io_context> io_context_ptr; - typedef asio::executor_work_guard< - asio::io_context::executor_type> io_context_work; /// The pool of io_contexts. std::vector<io_context_ptr> io_contexts_; - /// The work that keeps the io_contexts running. - std::vector<io_context_work> work_; + /// The work-tracking executors that keep the io_contexts running. + std::list<asio::any_io_executor> work_; /// The next io_context to use for a connection. std::size_t next_io_context_; diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/main.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/main.cpp index 2d224c5bac1..78cf0a72618 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/main.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/main.cpp @@ -2,7 +2,7 @@ // main.cpp // ~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <iostream> #include <string> #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/lexical_cast.hpp> #include "server.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.cpp index 640f3aedc44..67f23dc108b 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.cpp @@ -2,7 +2,7 @@ // mime_types.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.hpp index 57d1412b7b1..53c83470477 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/mime_types.hpp @@ -2,7 +2,7 @@ // mime_types.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/reply.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/reply.cpp index 958577b2ce4..c5eb79130de 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/reply.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/reply.cpp @@ -2,7 +2,7 @@ // reply.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/reply.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/reply.hpp index 17f11e7dde3..6a99edac7c0 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/reply.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/reply.hpp @@ -2,7 +2,7 @@ // reply.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/request.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/request.hpp index 39070ee2f84..4c54b2028dd 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/request.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/request.hpp @@ -2,7 +2,7 @@ // request.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.cpp index 9369c107166..42677d3defb 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.cpp @@ -2,7 +2,7 @@ // request_handler.cpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.hpp index 8d24686fa54..b4d8d1b5c73 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/request_handler.hpp @@ -2,7 +2,7 @@ // request_handler.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.cpp index ae80b20f784..5c10ec8580d 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.cpp @@ -2,7 +2,7 @@ // request_parser.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.hpp index 133a6492058..359adc6f0b0 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/request_parser.hpp @@ -2,7 +2,7 @@ // request_parser.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/server.cpp b/3rdparty/asio/src/examples/cpp03/http/server2/server.cpp index 75d3a48aa84..72ebcf9f352 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/server.cpp @@ -2,14 +2,14 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include "server.hpp" -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> namespace http { namespace server2 { @@ -33,7 +33,7 @@ server::server(const std::string& address, const std::string& port, signals_.async_wait(boost::bind(&server::handle_stop, this)); // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). - asio::ip::tcp::resolver resolver(acceptor_.get_executor().context()); + asio::ip::tcp::resolver resolver(acceptor_.get_executor()); asio::ip::tcp::endpoint endpoint = *resolver.resolve(address, port).begin(); acceptor_.open(endpoint.protocol()); diff --git a/3rdparty/asio/src/examples/cpp03/http/server2/server.hpp b/3rdparty/asio/src/examples/cpp03/http/server2/server.hpp index 6a742a8220a..9bcdbe093aa 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server2/server.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server2/server.hpp @@ -2,7 +2,7 @@ // server.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/.gitignore b/3rdparty/asio/src/examples/cpp03/http/server3/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/server3/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/connection.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/connection.cpp index 5db960a9109..f46b01bc373 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/connection.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/connection.cpp @@ -2,7 +2,7 @@ // connection.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include "connection.hpp" #include <vector> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "request_handler.hpp" namespace http { @@ -18,8 +18,8 @@ namespace server3 { connection::connection(asio::io_context& io_context, request_handler& handler) - : strand_(io_context), - socket_(io_context), + : strand_(asio::make_strand(io_context)), + socket_(strand_), request_handler_(handler) { } @@ -32,10 +32,9 @@ asio::ip::tcp::socket& connection::socket() void connection::start() { socket_.async_read_some(asio::buffer(buffer_), - asio::bind_executor(strand_, - boost::bind(&connection::handle_read, shared_from_this(), - asio::placeholders::error, - asio::placeholders::bytes_transferred))); + boost::bind(&connection::handle_read, shared_from_this(), + asio::placeholders::error, + asio::placeholders::bytes_transferred)); } void connection::handle_read(const asio::error_code& e, @@ -51,25 +50,22 @@ void connection::handle_read(const asio::error_code& e, { request_handler_.handle_request(request_, reply_); asio::async_write(socket_, reply_.to_buffers(), - asio::bind_executor(strand_, - boost::bind(&connection::handle_write, shared_from_this(), - asio::placeholders::error))); + boost::bind(&connection::handle_write, shared_from_this(), + asio::placeholders::error)); } else if (!result) { reply_ = reply::stock_reply(reply::bad_request); asio::async_write(socket_, reply_.to_buffers(), - asio::bind_executor(strand_, - boost::bind(&connection::handle_write, shared_from_this(), - asio::placeholders::error))); + boost::bind(&connection::handle_write, shared_from_this(), + asio::placeholders::error)); } else { socket_.async_read_some(asio::buffer(buffer_), - asio::bind_executor(strand_, - boost::bind(&connection::handle_read, shared_from_this(), - asio::placeholders::error, - asio::placeholders::bytes_transferred))); + boost::bind(&connection::handle_read, shared_from_this(), + asio::placeholders::error, + asio::placeholders::bytes_transferred)); } } diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/connection.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/connection.hpp index 2aac1a5c7ae..5fa129a6061 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/connection.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/connection.hpp @@ -2,7 +2,7 @@ // connection.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -49,7 +49,7 @@ private: void handle_write(const asio::error_code& e); /// Strand to ensure the connection's handlers are not called concurrently. - asio::io_context::strand strand_; + asio::strand<asio::io_context::executor_type> strand_; /// Socket for the connection. asio::ip::tcp::socket socket_; diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/header.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/header.hpp index 207c6290784..f709b1789e1 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/header.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/header.hpp @@ -2,7 +2,7 @@ // header.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/main.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/main.cpp index 367efad729f..2daf0ee9568 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/main.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/main.cpp @@ -2,7 +2,7 @@ // main.cpp // ~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <iostream> #include <string> #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/lexical_cast.hpp> #include "server.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.cpp index 0b0c66e3ce4..78850acafbf 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.cpp @@ -2,7 +2,7 @@ // mime_types.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.hpp index 502766aa5ab..a556356010f 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/mime_types.hpp @@ -2,7 +2,7 @@ // mime_types.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/reply.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/reply.cpp index 79790a1df77..fe304271d61 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/reply.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/reply.cpp @@ -2,7 +2,7 @@ // reply.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/reply.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/reply.hpp index 9b057ca351d..fe43fd8573e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/reply.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/reply.hpp @@ -2,7 +2,7 @@ // reply.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/request.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/request.hpp index a5b34e03f8a..40fd359c173 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/request.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/request.hpp @@ -2,7 +2,7 @@ // request.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.cpp index 9feb1cf1e3c..64efd8d02a5 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.cpp @@ -2,7 +2,7 @@ // request_handler.cpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.hpp index bb94cad0d1d..e9f16d2d492 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/request_handler.hpp @@ -2,7 +2,7 @@ // request_handler.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.cpp index 98f91286fe8..9cd46e4e5e2 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.cpp @@ -2,7 +2,7 @@ // request_parser.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.hpp index b680eee037b..ff6576ef57e 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/request_parser.hpp @@ -2,7 +2,7 @@ // request_parser.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/server.cpp b/3rdparty/asio/src/examples/cpp03/http/server3/server.cpp index 2a78bc9719e..469afe217da 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/server.cpp @@ -2,14 +2,14 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include "server.hpp" -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <vector> diff --git a/3rdparty/asio/src/examples/cpp03/http/server3/server.hpp b/3rdparty/asio/src/examples/cpp03/http/server3/server.hpp index c58c2433f65..59d20306db6 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server3/server.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server3/server.hpp @@ -2,7 +2,7 @@ // server.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/.gitignore b/3rdparty/asio/src/examples/cpp03/http/server4/.gitignore deleted file mode 100644 index 0882fa6ced3..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/server4/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.cpp index a4ac912b155..310a518fefa 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.cpp @@ -2,7 +2,7 @@ // file_handler.cpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.hpp index 22055dbcb1b..3d898cce149 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/file_handler.hpp @@ -2,7 +2,7 @@ // file_handler.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/header.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/header.hpp index 9c9b89cca06..ee5d8bf727d 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/header.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/header.hpp @@ -2,7 +2,7 @@ // header.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/main.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/main.cpp index 0ebe535ad17..58e1ae8f0af 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/main.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/main.cpp @@ -2,7 +2,7 @@ // main.cpp // ~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <iostream> #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <signal.h> #include "server.hpp" #include "file_handler.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.cpp index 903dffca59e..c6f421c76c3 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.cpp @@ -2,7 +2,7 @@ // mime_types.cpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.hpp index f702c6f859b..699b7bf0051 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/mime_types.hpp @@ -2,7 +2,7 @@ // mime_types.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/reply.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/reply.cpp index f508a46765f..e9c1eb68e97 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/reply.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/reply.cpp @@ -2,7 +2,7 @@ // reply.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/reply.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/reply.hpp index 02743a549be..5aaefae7e2a 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/reply.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/reply.hpp @@ -2,7 +2,7 @@ // reply.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/request.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/request.hpp index 43947d7f09e..c3642652bcc 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/request.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/request.hpp @@ -2,7 +2,7 @@ // request.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.cpp index 0ec31ad3939..30dad0327fe 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.cpp @@ -2,7 +2,7 @@ // request_parser.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.hpp index a61356e36a6..57c435251c8 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/request_parser.hpp @@ -2,7 +2,7 @@ // request_parser.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/server.cpp b/3rdparty/asio/src/examples/cpp03/http/server4/server.cpp index 04d81a984b6..c8abd2bddf5 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -45,7 +45,7 @@ void server::operator()(asio::error_code ec, std::size_t length) do { // Create a new socket for the next incoming connection. - socket_.reset(new tcp::socket(acceptor_->get_executor().context())); + socket_.reset(new tcp::socket(acceptor_->get_executor())); // Accept a new connection. The "yield" pseudo-keyword saves the current // line number and exits the coroutine's "reenter" block. We use the diff --git a/3rdparty/asio/src/examples/cpp03/http/server4/server.hpp b/3rdparty/asio/src/examples/cpp03/http/server4/server.hpp index 580ece5e097..e45cc7a3ca5 100644 --- a/3rdparty/asio/src/examples/cpp03/http/server4/server.hpp +++ b/3rdparty/asio/src/examples/cpp03/http/server4/server.hpp @@ -2,7 +2,7 @@ // server.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/icmp/.gitignore b/3rdparty/asio/src/examples/cpp03/icmp/.gitignore deleted file mode 100644 index 62ea912e2e4..00000000000 --- a/3rdparty/asio/src/examples/cpp03/icmp/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -ping -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/icmp/icmp_header.hpp b/3rdparty/asio/src/examples/cpp03/icmp/icmp_header.hpp index 3b7b4bf5032..4f591341264 100644 --- a/3rdparty/asio/src/examples/cpp03/icmp/icmp_header.hpp +++ b/3rdparty/asio/src/examples/cpp03/icmp/icmp_header.hpp @@ -2,7 +2,7 @@ // icmp_header.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/icmp/ipv4_header.hpp b/3rdparty/asio/src/examples/cpp03/icmp/ipv4_header.hpp index 6785fd74d6c..e9102af81a4 100644 --- a/3rdparty/asio/src/examples/cpp03/icmp/ipv4_header.hpp +++ b/3rdparty/asio/src/examples/cpp03/icmp/ipv4_header.hpp @@ -2,7 +2,7 @@ // ipv4_header.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/icmp/ping.cpp b/3rdparty/asio/src/examples/cpp03/icmp/ping.cpp index 3a1d278415d..7830560e4ca 100644 --- a/3rdparty/asio/src/examples/cpp03/icmp/ping.cpp +++ b/3rdparty/asio/src/examples/cpp03/icmp/ping.cpp @@ -2,14 +2,14 @@ // ping.cpp // ~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <istream> #include <iostream> #include <ostream> @@ -18,8 +18,8 @@ #include "ipv4_header.hpp" using asio::ip::icmp; -using asio::deadline_timer; -namespace posix_time = boost::posix_time; +using asio::steady_timer; +namespace chrono = asio::chrono; class pinger { @@ -53,12 +53,12 @@ private: os << echo_request << body; // Send the request. - time_sent_ = posix_time::microsec_clock::universal_time(); + time_sent_ = steady_timer::clock_type::now(); socket_.send_to(request_buffer.data(), destination_); // Wait up to five seconds for a reply. num_replies_ = 0; - timer_.expires_at(time_sent_ + posix_time::seconds(5)); + timer_.expires_at(time_sent_ + chrono::seconds(5)); timer_.async_wait(boost::bind(&pinger::handle_timeout, this)); } @@ -68,7 +68,7 @@ private: std::cout << "Request timed out" << std::endl; // Requests must be sent no less than one second apart. - timer_.expires_at(time_sent_ + posix_time::seconds(1)); + timer_.expires_at(time_sent_ + chrono::seconds(1)); timer_.async_wait(boost::bind(&pinger::start_send, this)); } @@ -79,7 +79,7 @@ private: // Wait for a reply. We prepare the buffer to receive up to 64KB. socket_.async_receive(reply_buffer_.prepare(65536), - boost::bind(&pinger::handle_receive, this, _2)); + boost::bind(&pinger::handle_receive, this, boost::placeholders::_2)); } void handle_receive(std::size_t length) @@ -106,12 +106,14 @@ private: timer_.cancel(); // Print out some information about the reply packet. - posix_time::ptime now = posix_time::microsec_clock::universal_time(); + chrono::steady_clock::time_point now = chrono::steady_clock::now(); + chrono::steady_clock::duration elapsed = now - time_sent_; std::cout << length - ipv4_hdr.header_length() << " bytes from " << ipv4_hdr.source_address() << ": icmp_seq=" << icmp_hdr.sequence_number() << ", ttl=" << ipv4_hdr.time_to_live() - << ", time=" << (now - time_sent_).total_milliseconds() << " ms" + << ", time=" + << chrono::duration_cast<chrono::milliseconds>(elapsed).count() << std::endl; } @@ -130,9 +132,9 @@ private: icmp::resolver resolver_; icmp::endpoint destination_; icmp::socket socket_; - deadline_timer timer_; + steady_timer timer_; unsigned short sequence_number_; - posix_time::ptime time_sent_; + chrono::steady_clock::time_point time_sent_; asio::streambuf reply_buffer_; std::size_t num_replies_; }; diff --git a/3rdparty/asio/src/examples/cpp03/invocation/.gitignore b/3rdparty/asio/src/examples/cpp03/invocation/.gitignore deleted file mode 100644 index e5876b7811a..00000000000 --- a/3rdparty/asio/src/examples/cpp03/invocation/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -prioritised_handlers -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp b/3rdparty/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp index 73897946966..602d7b6f010 100644 --- a/3rdparty/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +++ b/3rdparty/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp @@ -2,7 +2,7 @@ // prioritised_handlers.cpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -15,7 +15,7 @@ using asio::ip::tcp; -class handler_priority_queue +class handler_priority_queue : public asio::execution_context { public: void add(int priority, boost::function<void()> function) @@ -33,43 +33,60 @@ public: } } - // A generic wrapper class for handlers to allow the invocation to be hooked. - template <typename Handler> - class wrapped_handler + class executor { public: - wrapped_handler(handler_priority_queue& q, int p, Handler h) - : queue_(q), priority_(p), handler_(h) + executor(handler_priority_queue& q, int p) + : context_(q), priority_(p) + { + } + + handler_priority_queue& context() const { + return context_; } - void operator()() + template <typename Function, typename Allocator> + void dispatch(const Function& f, const Allocator&) const { - handler_(); + context_.add(priority_, f); } - template <typename Arg1> - void operator()(Arg1 arg1) + template <typename Function, typename Allocator> + void post(const Function& f, const Allocator&) const { - handler_(arg1); + context_.add(priority_, f); } - template <typename Arg1, typename Arg2> - void operator()(Arg1 arg1, Arg2 arg2) + template <typename Function, typename Allocator> + void defer(const Function& f, const Allocator&) const + { + context_.add(priority_, f); + } + + void on_work_started() const {} + void on_work_finished() const {} + + bool operator==(const executor& other) const { - handler_(arg1, arg2); + return &context_ == &other.context_ && priority_ == other.priority_; } - //private: - handler_priority_queue& queue_; + bool operator!=(const executor& other) const + { + return !operator==(other); + } + + private: + handler_priority_queue& context_; int priority_; - Handler handler_; }; template <typename Handler> - wrapped_handler<Handler> wrap(int priority, Handler handler) + asio::executor_binder<Handler, executor> + wrap(int priority, Handler handler) { - return wrapped_handler<Handler>(*this, priority, handler); + return asio::bind_executor(executor(*this, priority), handler); } private: @@ -100,14 +117,6 @@ private: std::priority_queue<queued_handler> handlers_; }; -// Custom invocation hook for wrapped handlers. -template <typename Function, typename Handler> -void asio_handler_invoke(Function f, - handler_priority_queue::wrapped_handler<Handler>* h) -{ - h->queue_.add(h->priority_, f); -} - //---------------------------------------------------------------------- void high_priority_handler(const asio::error_code& /*ec*/) @@ -144,8 +153,8 @@ int main() client_socket.connect(acceptor.local_endpoint()); // Set a deadline timer to expire immediately. - asio::deadline_timer timer(io_context); - timer.expires_at(boost::posix_time::neg_infin); + asio::steady_timer timer(io_context); + timer.expires_at(asio::steady_timer::time_point::min()); timer.async_wait(pri_queue.wrap(42, middle_priority_handler)); while (io_context.run_one()) diff --git a/3rdparty/asio/src/examples/cpp03/iostreams/.gitignore b/3rdparty/asio/src/examples/cpp03/iostreams/.gitignore deleted file mode 100644 index bc2b4f8f7fe..00000000000 --- a/3rdparty/asio/src/examples/cpp03/iostreams/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_client -*_server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/iostreams/daytime_client.cpp b/3rdparty/asio/src/examples/cpp03/iostreams/daytime_client.cpp index 4d0f68ca989..9ea5a592e52 100644 --- a/3rdparty/asio/src/examples/cpp03/iostreams/daytime_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/iostreams/daytime_client.cpp @@ -2,7 +2,7 @@ // daytime_client.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/iostreams/daytime_server.cpp b/3rdparty/asio/src/examples/cpp03/iostreams/daytime_server.cpp index ed3f94b0505..ff3009c30c9 100644 --- a/3rdparty/asio/src/examples/cpp03/iostreams/daytime_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/iostreams/daytime_server.cpp @@ -2,7 +2,7 @@ // daytime_server.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/iostreams/http_client.cpp b/3rdparty/asio/src/examples/cpp03/iostreams/http_client.cpp index 247df0f37e4..52ed241cb9f 100644 --- a/3rdparty/asio/src/examples/cpp03/iostreams/http_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/iostreams/http_client.cpp @@ -2,7 +2,7 @@ // http_client.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -33,7 +33,7 @@ int main(int argc, char* argv[]) // The entire sequence of I/O operations must complete within 60 seconds. // If an expiry occurs, the socket is automatically closed and the stream // becomes bad. - s.expires_after(boost::posix_time::seconds(60)); + s.expires_after(asio::chrono::seconds(60)); // Establish a connection to the server. s.connect(argv[1], "http"); diff --git a/3rdparty/asio/src/examples/cpp03/local/.gitignore b/3rdparty/asio/src/examples/cpp03/local/.gitignore deleted file mode 100644 index 688277b48d0..00000000000 --- a/3rdparty/asio/src/examples/cpp03/local/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -connect_pair -stream_server -stream_client -iostream_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/local/connect_pair.cpp b/3rdparty/asio/src/examples/cpp03/local/connect_pair.cpp index 92e0ae866d5..a6cd4dd757e 100644 --- a/3rdparty/asio/src/examples/cpp03/local/connect_pair.cpp +++ b/3rdparty/asio/src/examples/cpp03/local/connect_pair.cpp @@ -2,7 +2,7 @@ // connect_pair.cpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -13,7 +13,7 @@ #include <cctype> #include <asio.hpp> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #if defined(ASIO_HAS_LOCAL_SOCKETS) diff --git a/3rdparty/asio/src/examples/cpp03/local/iostream_client.cpp b/3rdparty/asio/src/examples/cpp03/local/iostream_client.cpp index d28d29e88c1..8c6274a70ad 100644 --- a/3rdparty/asio/src/examples/cpp03/local/iostream_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/local/iostream_client.cpp @@ -2,7 +2,7 @@ // stream_client.cpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/local/stream_client.cpp b/3rdparty/asio/src/examples/cpp03/local/stream_client.cpp index 6374f8fb534..b5ef9e67940 100644 --- a/3rdparty/asio/src/examples/cpp03/local/stream_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/local/stream_client.cpp @@ -2,7 +2,7 @@ // stream_client.cpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/local/stream_server.cpp b/3rdparty/asio/src/examples/cpp03/local/stream_server.cpp index 0bfe2788cae..de255ef1d55 100644 --- a/3rdparty/asio/src/examples/cpp03/local/stream_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/local/stream_server.cpp @@ -2,7 +2,7 @@ // stream_server.cpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <cstdio> #include <iostream> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/enable_shared_from_this.hpp> #include <boost/shared_ptr.hpp> #include "asio.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/multicast/.gitignore b/3rdparty/asio/src/examples/cpp03/multicast/.gitignore deleted file mode 100644 index 0c30ebdd7df..00000000000 --- a/3rdparty/asio/src/examples/cpp03/multicast/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -receiver -sender -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/multicast/receiver.cpp b/3rdparty/asio/src/examples/cpp03/multicast/receiver.cpp index 5937050b0a8..42ca661cea3 100644 --- a/3rdparty/asio/src/examples/cpp03/multicast/receiver.cpp +++ b/3rdparty/asio/src/examples/cpp03/multicast/receiver.cpp @@ -2,7 +2,7 @@ // receiver.cpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <iostream> #include <string> #include "asio.hpp" -#include "boost/bind.hpp" +#include "boost/bind/bind.hpp" const short multicast_port = 30001; diff --git a/3rdparty/asio/src/examples/cpp03/multicast/sender.cpp b/3rdparty/asio/src/examples/cpp03/multicast/sender.cpp index 995f05aa48e..a20470c96b6 100644 --- a/3rdparty/asio/src/examples/cpp03/multicast/sender.cpp +++ b/3rdparty/asio/src/examples/cpp03/multicast/sender.cpp @@ -2,7 +2,7 @@ // sender.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,8 +12,7 @@ #include <sstream> #include <string> #include "asio.hpp" -#include "boost/bind.hpp" -#include "boost/date_time/posix_time/posix_time_types.hpp" +#include "boost/bind/bind.hpp" const short multicast_port = 30001; const int max_message_count = 10; @@ -42,7 +41,7 @@ public: { if (!error && message_count_ < max_message_count) { - timer_.expires_from_now(boost::posix_time::seconds(1)); + timer_.expires_after(asio::chrono::seconds(1)); timer_.async_wait( boost::bind(&sender::handle_timeout, this, asio::placeholders::error)); @@ -67,7 +66,7 @@ public: private: asio::ip::udp::endpoint endpoint_; asio::ip::udp::socket socket_; - asio::deadline_timer timer_; + asio::steady_timer timer_; int message_count_; std::string message_; }; diff --git a/3rdparty/asio/src/examples/cpp03/nonblocking/.gitignore b/3rdparty/asio/src/examples/cpp03/nonblocking/.gitignore deleted file mode 100644 index 760e0dcebb4..00000000000 --- a/3rdparty/asio/src/examples/cpp03/nonblocking/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -third_party_lib -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp b/3rdparty/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp index 8ec06f6034d..bc3d02f02f6 100644 --- a/3rdparty/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +++ b/3rdparty/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp @@ -2,7 +2,7 @@ // third_party_lib.cpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <asio.hpp> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include <iostream> @@ -83,9 +83,9 @@ class connection public: typedef boost::shared_ptr<connection> pointer; - static pointer create(asio::io_context& io_context) + static pointer create(const asio::any_io_executor& ex) { - return pointer(new connection(io_context)); + return pointer(new connection(ex)); } tcp::socket& socket() @@ -102,8 +102,8 @@ public: } private: - connection(asio::io_context& io_context) - : socket_(io_context), + connection(const asio::any_io_executor& ex) + : socket_(ex), session_impl_(socket_), read_in_progress_(false), write_in_progress_(false) @@ -193,7 +193,7 @@ private: void start_accept() { connection::pointer new_connection = - connection::create(acceptor_.get_executor().context()); + connection::create(acceptor_.get_executor()); acceptor_.async_accept(new_connection->socket(), boost::bind(&server::handle_accept, this, new_connection, diff --git a/3rdparty/asio/src/examples/cpp03/porthopper/.gitignore b/3rdparty/asio/src/examples/cpp03/porthopper/.gitignore deleted file mode 100644 index 692ea7e7e65..00000000000 --- a/3rdparty/asio/src/examples/cpp03/porthopper/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -client -server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/porthopper/client.cpp b/3rdparty/asio/src/examples/cpp03/porthopper/client.cpp index 15d8e4803c1..19b2fbfe499 100644 --- a/3rdparty/asio/src/examples/cpp03/porthopper/client.cpp +++ b/3rdparty/asio/src/examples/cpp03/porthopper/client.cpp @@ -2,7 +2,7 @@ // client.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/porthopper/protocol.hpp b/3rdparty/asio/src/examples/cpp03/porthopper/protocol.hpp index c79bc6b49f4..d9dcb2e13eb 100644 --- a/3rdparty/asio/src/examples/cpp03/porthopper/protocol.hpp +++ b/3rdparty/asio/src/examples/cpp03/porthopper/protocol.hpp @@ -2,7 +2,7 @@ // protocol.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/porthopper/server.cpp b/3rdparty/asio/src/examples/cpp03/porthopper/server.cpp index b98a7d4b24d..3b8f3b000cf 100644 --- a/3rdparty/asio/src/examples/cpp03/porthopper/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/porthopper/server.cpp @@ -2,14 +2,14 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <cmath> #include <cstdlib> @@ -22,7 +22,7 @@ using asio::ip::tcp; using asio::ip::udp; typedef boost::shared_ptr<tcp::socket> tcp_socket_ptr; -typedef boost::shared_ptr<asio::deadline_timer> timer_ptr; +typedef boost::shared_ptr<asio::steady_timer> timer_ptr; typedef boost::shared_ptr<control_request> control_request_ptr; class server @@ -36,14 +36,13 @@ public: next_frame_number_(1) { // Start waiting for a new control connection. - tcp_socket_ptr new_socket( - new tcp::socket(acceptor_.get_executor().context())); + tcp_socket_ptr new_socket(new tcp::socket(acceptor_.get_executor())); acceptor_.async_accept(*new_socket, boost::bind(&server::handle_accept, this, asio::placeholders::error, new_socket)); // Start the timer used to generate outgoing frames. - timer_.expires_from_now(boost::posix_time::milliseconds(100)); + timer_.expires_after(asio::chrono::milliseconds(100)); timer_.async_wait(boost::bind(&server::handle_timer, this)); } @@ -60,8 +59,7 @@ public: } // Start waiting for a new control connection. - tcp_socket_ptr new_socket( - new tcp::socket(acceptor_.get_executor().context())); + tcp_socket_ptr new_socket(new tcp::socket(acceptor_.get_executor())); acceptor_.async_accept(*new_socket, boost::bind(&server::handle_accept, this, asio::placeholders::error, new_socket)); @@ -75,8 +73,8 @@ public: { // Delay handling of the control request to simulate network latency. timer_ptr delay_timer( - new asio::deadline_timer(acceptor_.get_executor().context())); - delay_timer->expires_from_now(boost::posix_time::seconds(2)); + new asio::steady_timer(acceptor_.get_executor())); + delay_timer->expires_after(asio::chrono::seconds(2)); delay_timer->async_wait( boost::bind(&server::handle_control_request_timer, this, socket, request, delay_timer)); @@ -142,7 +140,7 @@ public: } // Wait for next timeout. - timer_.expires_from_now(boost::posix_time::milliseconds(100)); + timer_.expires_after(asio::chrono::milliseconds(100)); timer_.async_wait(boost::bind(&server::handle_timer, this)); } @@ -151,7 +149,7 @@ private: tcp::acceptor acceptor_; // The timer used for generating data. - asio::deadline_timer timer_; + asio::steady_timer timer_; // The socket used to send data to subscribers. udp::socket udp_socket_; diff --git a/3rdparty/asio/src/examples/cpp03/serialization/.gitignore b/3rdparty/asio/src/examples/cpp03/serialization/.gitignore deleted file mode 100644 index 692ea7e7e65..00000000000 --- a/3rdparty/asio/src/examples/cpp03/serialization/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -client -server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/serialization/client.cpp b/3rdparty/asio/src/examples/cpp03/serialization/client.cpp index 8b83de284f4..802bc755b40 100644 --- a/3rdparty/asio/src/examples/cpp03/serialization/client.cpp +++ b/3rdparty/asio/src/examples/cpp03/serialization/client.cpp @@ -2,14 +2,14 @@ // client.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <iostream> #include <vector> #include "connection.hpp" // Must come before boost/serialization headers. @@ -25,7 +25,7 @@ public: /// Constructor starts the asynchronous connect operation. client(asio::io_context& io_context, const std::string& host, const std::string& service) - : connection_(io_context) + : connection_(io_context.get_executor()) { // Resolve the host name into an IP address. asio::ip::tcp::resolver resolver(io_context); diff --git a/3rdparty/asio/src/examples/cpp03/serialization/connection.hpp b/3rdparty/asio/src/examples/cpp03/serialization/connection.hpp index a1fa2a19e8e..ac45287025b 100644 --- a/3rdparty/asio/src/examples/cpp03/serialization/connection.hpp +++ b/3rdparty/asio/src/examples/cpp03/serialization/connection.hpp @@ -2,7 +2,7 @@ // connection.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -14,7 +14,7 @@ #include <asio.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/tuple/tuple.hpp> #include <iomanip> @@ -35,8 +35,8 @@ class connection { public: /// Constructor. - connection(asio::io_context& io_context) - : socket_(io_context) + connection(const asio::executor& ex) + : socket_(ex) { } @@ -65,7 +65,7 @@ public: { // Something went wrong, inform the caller. asio::error_code error(asio::error::invalid_argument); - socket_.get_io_context().post(boost::bind(handler, error)); + asio::post(socket_.get_executor(), boost::bind(handler, error)); return; } outbound_header_ = header_stream.str(); diff --git a/3rdparty/asio/src/examples/cpp03/serialization/server.cpp b/3rdparty/asio/src/examples/cpp03/serialization/server.cpp index b81b1a424da..7818cfed6aa 100644 --- a/3rdparty/asio/src/examples/cpp03/serialization/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/serialization/server.cpp @@ -2,14 +2,14 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/lexical_cast.hpp> #include <iostream> #include <vector> @@ -55,7 +55,7 @@ public: stocks_.push_back(s); // Start an accept operation for a new connection. - connection_ptr new_conn(new connection(acceptor_.get_io_context())); + connection_ptr new_conn(new connection(acceptor_.get_executor())); acceptor_.async_accept(new_conn->socket(), boost::bind(&server::handle_accept, this, asio::placeholders::error, new_conn)); @@ -75,7 +75,7 @@ public: } // Start an accept operation for a new connection. - connection_ptr new_conn(new connection(acceptor_.get_io_context())); + connection_ptr new_conn(new connection(acceptor_.get_executor())); acceptor_.async_accept(new_conn->socket(), boost::bind(&server::handle_accept, this, asio::placeholders::error, new_conn)); diff --git a/3rdparty/asio/src/examples/cpp03/serialization/stock.hpp b/3rdparty/asio/src/examples/cpp03/serialization/stock.hpp index 1acbca5a7a6..02cadcac7a3 100644 --- a/3rdparty/asio/src/examples/cpp03/serialization/stock.hpp +++ b/3rdparty/asio/src/examples/cpp03/serialization/stock.hpp @@ -2,7 +2,7 @@ // stock.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/services/.gitignore b/3rdparty/asio/src/examples/cpp03/services/.gitignore deleted file mode 100644 index 701b1b85834..00000000000 --- a/3rdparty/asio/src/examples/cpp03/services/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_client -*.ilk -*.manifest -*.pdb -*.tds -log.txt diff --git a/3rdparty/asio/src/examples/cpp03/services/basic_logger.hpp b/3rdparty/asio/src/examples/cpp03/services/basic_logger.hpp index 876086a2ecf..b9114d0e6d7 100644 --- a/3rdparty/asio/src/examples/cpp03/services/basic_logger.hpp +++ b/3rdparty/asio/src/examples/cpp03/services/basic_logger.hpp @@ -2,7 +2,7 @@ // basic_logger.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -34,13 +34,13 @@ public: /** * This constructor creates a logger. * - * @param io_context The io_context object used to locate the logger service. + * @param context The execution context used to locate the logger service. * * @param identifier An identifier for this logger. */ - explicit basic_logger(asio::io_context& io_context, + explicit basic_logger(asio::execution_context& context, const std::string& identifier) - : service_(asio::use_service<Service>(io_context)), + : service_(asio::use_service<Service>(context)), impl_(service_.null()) { service_.create(impl_, identifier); @@ -52,12 +52,6 @@ public: service_.destroy(impl_); } - /// Get the io_context associated with the object. - asio::io_context& get_io_context() - { - return service_.get_io_context(); - } - /// Set the output file for all logger instances. void use_file(const std::string& file) { diff --git a/3rdparty/asio/src/examples/cpp03/services/daytime_client.cpp b/3rdparty/asio/src/examples/cpp03/services/daytime_client.cpp index e0a6af9df6f..b4e7ea602d7 100644 --- a/3rdparty/asio/src/examples/cpp03/services/daytime_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/services/daytime_client.cpp @@ -2,14 +2,14 @@ // daytime_client.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <iostream> #include "logger.hpp" @@ -30,7 +30,9 @@ void read_handler(const asio::error_code& e, } else { - services::logger logger(s->get_executor().context(), "read_handler"); + asio::execution_context& context = asio::query( + s->get_executor(), asio::execution::context); + services::logger logger(context, "read_handler"); std::string msg = "Read error: "; msg += e.message(); @@ -40,7 +42,9 @@ void read_handler(const asio::error_code& e, void connect_handler(const asio::error_code& e, tcp::socket* s) { - services::logger logger(s->get_executor().context(), "connect_handler"); + asio::execution_context& context = asio::query( + s->get_executor(), asio::execution::context); + services::logger logger(context, "connect_handler"); if (!e) { diff --git a/3rdparty/asio/src/examples/cpp03/services/logger.hpp b/3rdparty/asio/src/examples/cpp03/services/logger.hpp index 41d17e6de10..9ebbbd6992a 100644 --- a/3rdparty/asio/src/examples/cpp03/services/logger.hpp +++ b/3rdparty/asio/src/examples/cpp03/services/logger.hpp @@ -2,7 +2,7 @@ // logger.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/services/logger_service.cpp b/3rdparty/asio/src/examples/cpp03/services/logger_service.cpp index c3543e47f5a..4123d7bb92e 100644 --- a/3rdparty/asio/src/examples/cpp03/services/logger_service.cpp +++ b/3rdparty/asio/src/examples/cpp03/services/logger_service.cpp @@ -2,16 +2,10 @@ // logger_service.cpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // #include "logger_service.hpp" - -namespace services { - -asio::io_context::id logger_service::id; - -} // namespace services diff --git a/3rdparty/asio/src/examples/cpp03/services/logger_service.hpp b/3rdparty/asio/src/examples/cpp03/services/logger_service.hpp index 9f175dffba3..9ec99d93419 100644 --- a/3rdparty/asio/src/examples/cpp03/services/logger_service.hpp +++ b/3rdparty/asio/src/examples/cpp03/services/logger_service.hpp @@ -2,7 +2,7 @@ // logger_service.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #define SERVICES_LOGGER_SERVICE_HPP #include <asio.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/date_time/posix_time/posix_time.hpp> #include <boost/noncopyable.hpp> #include <boost/scoped_ptr.hpp> @@ -24,11 +24,11 @@ namespace services { /// Service implementation for the logger. class logger_service - : public asio::io_context::service + : public asio::execution_context::service { public: - /// The unique service identifier. - static asio::io_context::id id; + /// The type used to identify this service in the execution context. + typedef logger_service key_type; /// The backend implementation of a logger. struct logger_impl @@ -41,10 +41,11 @@ public: typedef logger_impl* impl_type; /// Constructor creates a thread to run a private io_context. - logger_service(asio::io_context& io_context) - : asio::io_context::service(io_context), + logger_service(asio::execution_context& context) + : asio::execution_context::service(context), work_io_context_(), - work_(asio::make_work_guard(work_io_context_)), + work_(asio::require(work_io_context_.get_executor(), + asio::execution::outstanding_work.tracked)), work_thread_(new asio::thread( boost::bind(&asio::io_context::run, &work_io_context_))) { @@ -55,13 +56,13 @@ public: { /// Indicate that we have finished with the private io_context. Its /// io_context::run() function will exit once all other work has completed. - work_.reset(); + work_ = asio::any_io_executor(); if (work_thread_) work_thread_->join(); } /// Destroy all user-defined handler objects owned by the service. - void shutdown_service() + void shutdown() { } @@ -102,7 +103,7 @@ public: std::ostringstream os; os << impl->identifier << ": " << message; - // Pass the work of opening the file to the background thread. + // Pass the work of writing to the file to the background thread. asio::post(work_io_context_, boost::bind( &logger_service::log_impl, this, os.str())); } @@ -127,11 +128,10 @@ private: /// Private io_context used for performing logging operations. asio::io_context work_io_context_; - /// Work for the private io_context to perform. If we do not give the - /// io_context some work to do then the io_context::run() function will exit - /// immediately. - asio::executor_work_guard< - asio::io_context::executor_type> work_; + /// A work-tracking executor giving work for the private io_context to + /// perform. If we do not give the io_context some work to do then the + /// io_context::run() function will exit immediately. + asio::any_io_executor work_; /// Thread used for running the work io_context's run loop. boost::scoped_ptr<asio::thread> work_thread_; diff --git a/3rdparty/asio/src/examples/cpp03/socks4/.gitignore b/3rdparty/asio/src/examples/cpp03/socks4/.gitignore deleted file mode 100644 index e11e0de344e..00000000000 --- a/3rdparty/asio/src/examples/cpp03/socks4/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -sync_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/socks4/socks4.hpp b/3rdparty/asio/src/examples/cpp03/socks4/socks4.hpp index c5558756558..c211b32827f 100644 --- a/3rdparty/asio/src/examples/cpp03/socks4/socks4.hpp +++ b/3rdparty/asio/src/examples/cpp03/socks4/socks4.hpp @@ -2,7 +2,7 @@ // socks4.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/socks4/sync_client.cpp b/3rdparty/asio/src/examples/cpp03/socks4/sync_client.cpp index 7b82564ab53..6a52c5edf64 100644 --- a/3rdparty/asio/src/examples/cpp03/socks4/sync_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/socks4/sync_client.cpp @@ -2,7 +2,7 @@ // sync_client.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/spawn/.gitignore b/3rdparty/asio/src/examples/cpp03/spawn/.gitignore deleted file mode 100644 index 6b8a121e099..00000000000 --- a/3rdparty/asio/src/examples/cpp03/spawn/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -.deps -.dirstamp -parallel_grep -*.o -*.obj -*.exe -*_server -*_client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/spawn/echo_server.cpp b/3rdparty/asio/src/examples/cpp03/spawn/echo_server.cpp index 415f6da8f33..4549b446245 100644 --- a/3rdparty/asio/src/examples/cpp03/spawn/echo_server.cpp +++ b/3rdparty/asio/src/examples/cpp03/spawn/echo_server.cpp @@ -2,18 +2,18 @@ // echo_server.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // -#include <asio/deadline_timer.hpp> #include <asio/io_context.hpp> #include <asio/ip/tcp.hpp> #include <asio/spawn.hpp> +#include <asio/steady_timer.hpp> #include <asio/write.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include <iostream> @@ -24,7 +24,7 @@ class session : public boost::enable_shared_from_this<session> { public: explicit session(asio::io_context& io_context) - : strand_(io_context), + : strand_(asio::make_strand(io_context)), socket_(io_context), timer_(io_context) { @@ -39,10 +39,10 @@ public: { asio::spawn(strand_, boost::bind(&session::echo, - shared_from_this(), _1)); + shared_from_this(), boost::placeholders::_1)); asio::spawn(strand_, boost::bind(&session::timeout, - shared_from_this(), _1)); + shared_from_this(), boost::placeholders::_1)); } private: @@ -53,7 +53,7 @@ private: char data[128]; for (;;) { - timer_.expires_from_now(boost::posix_time::seconds(10)); + timer_.expires_after(asio::chrono::seconds(10)); std::size_t n = socket_.async_read_some(asio::buffer(data), yield); asio::async_write(socket_, asio::buffer(data, n), yield); } @@ -71,14 +71,14 @@ private: { asio::error_code ignored_ec; timer_.async_wait(yield[ignored_ec]); - if (timer_.expires_from_now() <= boost::posix_time::seconds(0)) + if (timer_.expiry() <= asio::steady_timer::clock_type::now()) socket_.close(); } } - asio::io_context::strand strand_; + asio::strand<asio::io_context::executor_type> strand_; tcp::socket socket_; - asio::deadline_timer timer_; + asio::steady_timer timer_; }; void do_accept(asio::io_context& io_context, @@ -109,7 +109,7 @@ int main(int argc, char* argv[]) asio::spawn(io_context, boost::bind(do_accept, - boost::ref(io_context), atoi(argv[1]), _1)); + boost::ref(io_context), atoi(argv[1]), boost::placeholders::_1)); io_context.run(); } diff --git a/3rdparty/asio/src/examples/cpp03/spawn/parallel_grep.cpp b/3rdparty/asio/src/examples/cpp03/spawn/parallel_grep.cpp index d742f196d78..7fe1817a25e 100644 --- a/3rdparty/asio/src/examples/cpp03/spawn/parallel_grep.cpp +++ b/3rdparty/asio/src/examples/cpp03/spawn/parallel_grep.cpp @@ -2,7 +2,7 @@ // parallel_grep.cpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -13,7 +13,7 @@ #include <asio/spawn.hpp> #include <asio/strand.hpp> #include <asio/thread_pool.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <fstream> #include <iostream> #include <string> @@ -73,8 +73,8 @@ int main(int argc, char* argv[]) for (int argn = 2; argn < argc; ++argn) { std::string input_file = argv[argn]; - spawn(pool, boost::bind(&search_file, - search_string, input_file, output_strand, _1)); + spawn(pool, boost::bind(&search_file, search_string, + input_file, output_strand, boost::placeholders::_1)); } // Join the thread pool to wait for all the spawned tasks to complete. diff --git a/3rdparty/asio/src/examples/cpp03/ssl/.gitignore b/3rdparty/asio/src/examples/cpp03/ssl/.gitignore deleted file mode 100644 index a67811253d9..00000000000 --- a/3rdparty/asio/src/examples/cpp03/ssl/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -server -client -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/ssl/README b/3rdparty/asio/src/examples/cpp03/ssl/README index 8d94105be5b..b04fc30c559 100644 --- a/3rdparty/asio/src/examples/cpp03/ssl/README +++ b/3rdparty/asio/src/examples/cpp03/ssl/README @@ -2,7 +2,7 @@ The passphrase for both the CA and server private keys is "test". ------------------------------------------------------------------------------- -Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/ssl/client.cpp b/3rdparty/asio/src/examples/cpp03/ssl/client.cpp index 02a3ce8b3ca..3b0e9fd5c7a 100644 --- a/3rdparty/asio/src/examples/cpp03/ssl/client.cpp +++ b/3rdparty/asio/src/examples/cpp03/ssl/client.cpp @@ -2,7 +2,7 @@ // client.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <cstdlib> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" #include "asio/ssl.hpp" @@ -26,7 +26,8 @@ public: { socket_.set_verify_mode(asio::ssl::verify_peer); socket_.set_verify_callback( - boost::bind(&client::verify_certificate, this, _1, _2)); + boost::bind(&client::verify_certificate, this, + boost::placeholders::_1, boost::placeholders::_2)); asio::async_connect(socket_.lowest_layer(), endpoints, boost::bind(&client::handle_connect, this, diff --git a/3rdparty/asio/src/examples/cpp03/ssl/server.cpp b/3rdparty/asio/src/examples/cpp03/ssl/server.cpp index ad3d73a2c44..196824e5fd3 100644 --- a/3rdparty/asio/src/examples/cpp03/ssl/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/ssl/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,7 @@ #include <cstdlib> #include <iostream> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include "asio.hpp" #include "asio/ssl.hpp" diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/.gitignore b/3rdparty/asio/src/examples/cpp03/timeouts/.gitignore deleted file mode 100644 index dda7f39c3c2..00000000000 --- a/3rdparty/asio/src/examples/cpp03/timeouts/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*_client -server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp b/3rdparty/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp index 98b90e9a1b3..fe2d27fac9e 100644 --- a/3rdparty/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp @@ -2,22 +2,23 @@ // async_tcp_client.cpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // -#include "asio/deadline_timer.hpp" +#include "asio/buffer.hpp" #include "asio/io_context.hpp" #include "asio/ip/tcp.hpp" #include "asio/read_until.hpp" -#include "asio/streambuf.hpp" +#include "asio/steady_timer.hpp" #include "asio/write.hpp" -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <iostream> +#include <string> -using asio::deadline_timer; +using asio::steady_timer; using asio::ip::tcp; // @@ -78,7 +79,7 @@ using asio::ip::tcp; // // The heartbeat actor sends a heartbeat (a message that consists of a single // newline character) every 10 seconds. In this example, no deadline is applied -// message sending. +// to message sending. // class client { @@ -125,12 +126,12 @@ private: std::cout << "Trying " << endpoint_iter->endpoint() << "...\n"; // Set a deadline for the connect operation. - deadline_.expires_from_now(boost::posix_time::seconds(60)); + deadline_.expires_after(asio::chrono::seconds(60)); // Start the asynchronous connect operation. socket_.async_connect(endpoint_iter->endpoint(), - boost::bind(&client::handle_connect, - this, _1, endpoint_iter)); + boost::bind(&client::handle_connect, this, + boost::placeholders::_1, endpoint_iter)); } else { @@ -185,14 +186,16 @@ private: void start_read() { // Set a deadline for the read operation. - deadline_.expires_from_now(boost::posix_time::seconds(30)); + deadline_.expires_after(asio::chrono::seconds(30)); // Start an asynchronous operation to read a newline-delimited message. - asio::async_read_until(socket_, input_buffer_, '\n', - boost::bind(&client::handle_read, this, _1)); + asio::async_read_until(socket_, + asio::dynamic_buffer(input_buffer_), '\n', + boost::bind(&client::handle_read, this, + boost::placeholders::_1, boost::placeholders::_2)); } - void handle_read(const asio::error_code& ec) + void handle_read(const asio::error_code& ec, std::size_t n) { if (stopped_) return; @@ -200,9 +203,8 @@ private: if (!ec) { // Extract the newline-delimited message from the buffer. - std::string line; - std::istream is(&input_buffer_); - std::getline(is, line); + std::string line(input_buffer_.substr(0, n - 1)); + input_buffer_.erase(0, n); // Empty messages are heartbeats and so ignored. if (!line.empty()) @@ -227,7 +229,7 @@ private: // Start an asynchronous operation to send a heartbeat message. asio::async_write(socket_, asio::buffer("\n", 1), - boost::bind(&client::handle_write, this, _1)); + boost::bind(&client::handle_write, this, boost::placeholders::_1)); } void handle_write(const asio::error_code& ec) @@ -238,7 +240,7 @@ private: if (!ec) { // Wait 10 seconds before sending the next heartbeat. - heartbeat_timer_.expires_from_now(boost::posix_time::seconds(10)); + heartbeat_timer_.expires_after(asio::chrono::seconds(10)); heartbeat_timer_.async_wait(boost::bind(&client::start_write, this)); } else @@ -257,15 +259,16 @@ private: // Check whether the deadline has passed. We compare the deadline against // the current time since a new asynchronous operation may have moved the // deadline before this actor had a chance to run. - if (deadline_.expires_at() <= deadline_timer::traits_type::now()) + if (deadline_.expiry() <= steady_timer::clock_type::now()) { // The deadline has passed. The socket is closed so that any outstanding // asynchronous operations are cancelled. socket_.close(); - // There is no longer an active deadline. The expiry is set to positive - // infinity so that the actor takes no action until a new deadline is set. - deadline_.expires_at(boost::posix_time::pos_infin); + // There is no longer an active deadline. The expiry is set to the + // maximum time point so that the actor takes no action until a new + // deadline is set. + deadline_.expires_at(steady_timer::time_point::max()); } // Put the actor back to sleep. @@ -276,9 +279,9 @@ private: bool stopped_; tcp::resolver::results_type endpoints_; tcp::socket socket_; - asio::streambuf input_buffer_; - deadline_timer deadline_; - deadline_timer heartbeat_timer_; + std::string input_buffer_; + steady_timer deadline_; + steady_timer heartbeat_timer_; }; int main(int argc, char* argv[]) diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp index 69d467af1bb..67d0bcc7604 100644 --- a/3rdparty/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp @@ -2,199 +2,146 @@ // blocking_tcp_client.cpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // +#include "asio/buffer.hpp" #include "asio/connect.hpp" -#include "asio/deadline_timer.hpp" #include "asio/io_context.hpp" #include "asio/ip/tcp.hpp" #include "asio/read_until.hpp" -#include "asio/streambuf.hpp" #include "asio/system_error.hpp" #include "asio/write.hpp" -#include "asio/thread.hpp" #include <cstdlib> #include <iostream> #include <string> #include <boost/lambda/bind.hpp> #include <boost/lambda/lambda.hpp> -using asio::deadline_timer; using asio::ip::tcp; using boost::lambda::bind; using boost::lambda::var; using boost::lambda::_1; +using boost::lambda::_2; //---------------------------------------------------------------------- // -// This class manages socket timeouts by applying the concept of a deadline. -// Each asynchronous operation is given a deadline by which it must complete. -// Deadlines are enforced by an "actor" that persists for the lifetime of the -// client object: -// -// +----------------+ -// | | -// | check_deadline |<---+ -// | | | -// +----------------+ | async_wait() -// | | -// +---------+ -// -// If the actor determines that the deadline has expired, the socket is closed -// and any outstanding operations are consequently cancelled. The socket -// operations themselves use boost::lambda function objects as completion -// handlers. For a given socket operation, the client object runs the -// io_context to block thread execution until the actor completes. +// This class manages socket timeouts by running the io_context using the timed +// io_context::run_for() member function. Each asynchronous operation is given +// a timeout within which it must complete. The socket operations themselves +// use boost::lambda function objects as completion handlers. For a given +// socket operation, the client object runs the io_context to block thread +// execution until the operation completes or the timeout is reached. If the +// io_context::run_for() function times out, the socket is closed and the +// outstanding asynchronous operation is cancelled. // class client { public: client() - : socket_(io_context_), - deadline_(io_context_) + : socket_(io_context_) { - // No deadline is required until the first socket operation is started. We - // set the deadline to positive infinity so that the actor takes no action - // until a specific deadline is set. - deadline_.expires_at(boost::posix_time::pos_infin); - - // Start the persistent actor that checks for deadline expiry. - check_deadline(); } void connect(const std::string& host, const std::string& service, - boost::posix_time::time_duration timeout) + asio::chrono::steady_clock::duration timeout) { // Resolve the host name and service to a list of endpoints. tcp::resolver::results_type endpoints = tcp::resolver(io_context_).resolve(host, service); - // Set a deadline for the asynchronous operation. As a host name may - // resolve to multiple endpoints, this function uses the composed operation - // async_connect. The deadline applies to the entire operation, rather than - // individual connection attempts. - deadline_.expires_from_now(timeout); - - // Set up the variable that receives the result of the asynchronous - // operation. The error code is set to would_block to signal that the - // operation is incomplete. Asio guarantees that its asynchronous - // operations will never fail with would_block, so any other value in - // ec indicates completion. - asio::error_code ec = asio::error::would_block; - // Start the asynchronous operation itself. The boost::lambda function // object is used as a callback and will update the ec variable when the // operation completes. The blocking_udp_client.cpp example shows how you // can use boost::bind rather than boost::lambda. + asio::error_code ec; asio::async_connect(socket_, endpoints, var(ec) = _1); - // Block until the asynchronous operation has completed. - do io_context_.run_one(); while (ec == asio::error::would_block); - - // Determine whether a connection was successfully established. The - // deadline actor may have had a chance to run and close our socket, even - // though the connect operation notionally succeeded. Therefore we must - // check whether the socket is still open before deciding if we succeeded - // or failed. - if (ec || !socket_.is_open()) - throw asio::system_error( - ec ? ec : asio::error::operation_aborted); + // Run the operation until it completes, or until the timeout. + run(timeout); + + // Determine whether a connection was successfully established. + if (ec) + throw asio::system_error(ec); } - std::string read_line(boost::posix_time::time_duration timeout) + std::string read_line(asio::chrono::steady_clock::duration timeout) { - // Set a deadline for the asynchronous operation. Since this function uses - // a composed operation (async_read_until), the deadline applies to the - // entire operation, rather than individual reads from the socket. - deadline_.expires_from_now(timeout); - - // Set up the variable that receives the result of the asynchronous - // operation. The error code is set to would_block to signal that the - // operation is incomplete. Asio guarantees that its asynchronous - // operations will never fail with would_block, so any other value in - // ec indicates completion. - asio::error_code ec = asio::error::would_block; - - // Start the asynchronous operation itself. The boost::lambda function - // object is used as a callback and will update the ec variable when the - // operation completes. The blocking_udp_client.cpp example shows how you - // can use boost::bind rather than boost::lambda. - asio::async_read_until(socket_, input_buffer_, '\n', var(ec) = _1); - - // Block until the asynchronous operation has completed. - do io_context_.run_one(); while (ec == asio::error::would_block); - + // Start the asynchronous operation. The boost::lambda function object is + // used as a callback and will update the ec variable when the operation + // completes. The blocking_udp_client.cpp example shows how you can use + // boost::bind rather than boost::lambda. + asio::error_code ec; + std::size_t n = 0; + asio::async_read_until(socket_, + asio::dynamic_buffer(input_buffer_), + '\n', (var(ec) = _1, var(n) = _2)); + + // Run the operation until it completes, or until the timeout. + run(timeout); + + // Determine whether the read completed successfully. if (ec) throw asio::system_error(ec); - std::string line; - std::istream is(&input_buffer_); - std::getline(is, line); + std::string line(input_buffer_.substr(0, n - 1)); + input_buffer_.erase(0, n); return line; } void write_line(const std::string& line, - boost::posix_time::time_duration timeout) + asio::chrono::steady_clock::duration timeout) { std::string data = line + "\n"; - // Set a deadline for the asynchronous operation. Since this function uses - // a composed operation (async_write), the deadline applies to the entire - // operation, rather than individual writes to the socket. - deadline_.expires_from_now(timeout); - - // Set up the variable that receives the result of the asynchronous - // operation. The error code is set to would_block to signal that the - // operation is incomplete. Asio guarantees that its asynchronous - // operations will never fail with would_block, so any other value in - // ec indicates completion. - asio::error_code ec = asio::error::would_block; - - // Start the asynchronous operation itself. The boost::lambda function - // object is used as a callback and will update the ec variable when the - // operation completes. The blocking_udp_client.cpp example shows how you - // can use boost::bind rather than boost::lambda. + // Start the asynchronous operation. The boost::lambda function object is + // used as a callback and will update the ec variable when the operation + // completes. The blocking_udp_client.cpp example shows how you can use + // boost::bind rather than boost::lambda. + asio::error_code ec; asio::async_write(socket_, asio::buffer(data), var(ec) = _1); - // Block until the asynchronous operation has completed. - do io_context_.run_one(); while (ec == asio::error::would_block); + // Run the operation until it completes, or until the timeout. + run(timeout); + // Determine whether the read completed successfully. if (ec) throw asio::system_error(ec); } private: - void check_deadline() + void run(asio::chrono::steady_clock::duration timeout) { - // Check whether the deadline has passed. We compare the deadline against - // the current time since a new asynchronous operation may have moved the - // deadline before this actor had a chance to run. - if (deadline_.expires_at() <= deadline_timer::traits_type::now()) + // Restart the io_context, as it may have been left in the "stopped" state + // by a previous operation. + io_context_.restart(); + + // Block until the asynchronous operation has completed, or timed out. If + // the pending asynchronous operation is a composed operation, the deadline + // applies to the entire operation, rather than individual operations on + // the socket. + io_context_.run_for(timeout); + + // If the asynchronous operation completed successfully then the io_context + // would have been stopped due to running out of work. If it was not + // stopped, then the io_context::run_for call must have timed out. + if (!io_context_.stopped()) { - // The deadline has passed. The socket is closed so that any outstanding - // asynchronous operations are cancelled. This allows the blocked - // connect(), read_line() or write_line() functions to return. - asio::error_code ignored_ec; - socket_.close(ignored_ec); - - // There is no longer an active deadline. The expiry is set to positive - // infinity so that the actor takes no action until a new deadline is set. - deadline_.expires_at(boost::posix_time::pos_infin); - } + // Close the socket to cancel the outstanding asynchronous operation. + socket_.close(); - // Put the actor back to sleep. - deadline_.async_wait(bind(&client::check_deadline, this)); + // Run the io_context again until the operation completes. + io_context_.run(); + } } asio::io_context io_context_; tcp::socket socket_; - deadline_timer deadline_; - asio::streambuf input_buffer_; + std::string input_buffer_; }; //---------------------------------------------------------------------- @@ -205,32 +152,34 @@ int main(int argc, char* argv[]) { if (argc != 4) { - std::cerr << "Usage: blocking_tcp <host> <port> <message>\n"; + std::cerr << "Usage: blocking_tcp_client <host> <port> <message>\n"; return 1; } client c; - c.connect(argv[1], argv[2], boost::posix_time::seconds(10)); + c.connect(argv[1], argv[2], asio::chrono::seconds(10)); - boost::posix_time::ptime time_sent = - boost::posix_time::microsec_clock::universal_time(); + asio::chrono::steady_clock::time_point time_sent = + asio::chrono::steady_clock::now(); - c.write_line(argv[3], boost::posix_time::seconds(10)); + c.write_line(argv[3], asio::chrono::seconds(10)); for (;;) { - std::string line = c.read_line(boost::posix_time::seconds(10)); + std::string line = c.read_line(asio::chrono::seconds(10)); // Keep going until we get back the line that was sent. if (line == argv[3]) break; } - boost::posix_time::ptime time_received = - boost::posix_time::microsec_clock::universal_time(); + asio::chrono::steady_clock::time_point time_received = + asio::chrono::steady_clock::now(); std::cout << "Round trip time: "; - std::cout << (time_received - time_sent).total_microseconds(); + std::cout << asio::chrono::duration_cast< + asio::chrono::microseconds>( + time_received - time_sent).count(); std::cout << " microseconds\n"; } catch (std::exception& e) diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp new file mode 100644 index 00000000000..45b56cb0263 --- /dev/null +++ b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp @@ -0,0 +1,201 @@ +// +// blocking_token_tcp_client.cpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2021 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) +// + +#include "asio/connect.hpp" +#include "asio/io_context.hpp" +#include "asio/ip/tcp.hpp" +#include "asio/read_until.hpp" +#include "asio/streambuf.hpp" +#include "asio/system_error.hpp" +#include "asio/write.hpp" +#include <cstdlib> +#include <iostream> +#include <memory> +#include <string> + +using asio::ip::tcp; + +// We will use our sockets only with an io_context. +typedef asio::basic_stream_socket<tcp, + asio::io_context::executor_type> tcp_socket; + +//---------------------------------------------------------------------- + +// A custom completion token that makes asynchronous operations behave as +// though they are blocking calls with a timeout. +struct close_after +{ + close_after(asio::chrono::steady_clock::duration t, tcp_socket& s) + : timeout_(t), socket_(s) + { + } + + // The maximum time to wait for an asynchronous operation to complete. + asio::chrono::steady_clock::duration timeout_; + + // The socket to be closed if the operation does not complete in time. + tcp_socket& socket_; +}; + +namespace asio { + +// The async_result template is specialised to allow the close_after token to +// be used with asynchronous operations that have a completion signature of +// void(error_code, T). Generalising this for all completion signature forms is +// left as an exercise for the reader. +template <typename T> +class async_result<close_after, void(asio::error_code, T)> +{ +public: + // An asynchronous operation's initiating function automatically creates an + // completion_handler_type object from the token. This function object is + // then called on completion of the asynchronous operation. + class completion_handler_type + { + public: + completion_handler_type(const close_after& token) + : token_(token) + { + } + + void operator()(asio::error_code ec, T t) + { + *ec_ = ec; + *t_ = t; + } + + private: + friend class async_result; + close_after token_; + asio::error_code* ec_; + T* t_; + }; + + // The async_result constructor associates the completion handler object with + // the result of the initiating function. + explicit async_result(completion_handler_type& h) + : timeout_(h.token_.timeout_), + socket_(h.token_.socket_) + { + h.ec_ = &ec_; + h.t_ = &t_; + } + + // The return_type typedef determines the result type of the asynchronous + // operation's initiating function. + typedef T return_type; + + // The get() function is used to obtain the result of the asynchronous + // operation's initiating function. For the close_after completion token, we + // use this function to run the io_context until the operation is complete. + return_type get() + { + asio::io_context& io_context = asio::query( + socket_.get_executor(), asio::execution::context); + + // Restart the io_context, as it may have been left in the "stopped" state + // by a previous operation. + io_context.restart(); + + // Block until the asynchronous operation has completed, or timed out. If + // the pending asynchronous operation is a composed operation, the deadline + // applies to the entire operation, rather than individual operations on + // the socket. + io_context.run_for(timeout_); + + // If the asynchronous operation completed successfully then the io_context + // would have been stopped due to running out of work. If it was not + // stopped, then the io_context::run_for call must have timed out and the + // operation is still incomplete. + if (!io_context.stopped()) + { + // Close the socket to cancel the outstanding asynchronous operation. + socket_.close(); + + // Run the io_context again until the operation completes. + io_context.run(); + } + + // If the operation failed, throw an exception. Otherwise return the result. + return ec_ ? throw asio::system_error(ec_) : t_; + } + +private: + asio::chrono::steady_clock::duration timeout_; + tcp_socket& socket_; + asio::error_code ec_; + T t_; +}; + +} // namespace asio + +//---------------------------------------------------------------------- + +int main(int argc, char* argv[]) +{ + try + { + if (argc != 4) + { + std::cerr << "Usage: blocking_tcp_client <host> <port> <message>\n"; + return 1; + } + + asio::io_context io_context; + + // Resolve the host name and service to a list of endpoints. + tcp::resolver::results_type endpoints = + tcp::resolver(io_context).resolve(argv[1], argv[2]); + + tcp_socket socket(io_context); + + // Run an asynchronous connect operation with a timeout. + asio::async_connect(socket, endpoints, + close_after(asio::chrono::seconds(10), socket)); + + asio::chrono::steady_clock::time_point time_sent = + asio::chrono::steady_clock::now(); + + // Run an asynchronous write operation with a timeout. + std::string msg = argv[3] + std::string("\n"); + asio::async_write(socket, asio::buffer(msg), + close_after(asio::chrono::seconds(10), socket)); + + for (std::string input_buffer;;) + { + // Run an asynchronous read operation with a timeout. + std::size_t n = asio::async_read_until(socket, + asio::dynamic_buffer(input_buffer), '\n', + close_after(asio::chrono::seconds(10), socket)); + + std::string line(input_buffer.substr(0, n - 1)); + input_buffer.erase(0, n); + + // Keep going until we get back the line that was sent. + if (line == argv[3]) + break; + } + + asio::chrono::steady_clock::time_point time_received = + asio::chrono::steady_clock::now(); + + std::cout << "Round trip time: "; + std::cout << asio::chrono::duration_cast< + asio::chrono::microseconds>( + time_received - time_sent).count(); + std::cout << " microseconds\n"; + } + catch (std::exception& e) + { + std::cerr << "Exception: " << e.what() << "\n"; + } + + return 0; +} diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp index fd2da7640b8..43b55ef43ff 100644 --- a/3rdparty/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +++ b/3rdparty/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp @@ -2,42 +2,28 @@ // blocking_udp_client.cpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) // -#include "asio/deadline_timer.hpp" +#include "asio/buffer.hpp" #include "asio/io_context.hpp" #include "asio/ip/udp.hpp" #include <cstdlib> -#include <boost/bind.hpp> -#include <boost/date_time/posix_time/posix_time_types.hpp> +#include <boost/bind/bind.hpp> #include <iostream> -using asio::deadline_timer; using asio::ip::udp; //---------------------------------------------------------------------- // -// This class manages socket timeouts by applying the concept of a deadline. -// Each asynchronous operation is given a deadline by which it must complete. -// Deadlines are enforced by an "actor" that persists for the lifetime of the -// client object: -// -// +----------------+ -// | | -// | check_deadline |<---+ -// | | | -// +----------------+ | async_wait() -// | | -// +---------+ -// -// If the actor determines that the deadline has expired, any outstanding -// socket operations are cancelled. The socket operations themselves are -// implemented as transient actors: +// This class manages socket timeouts by running the io_context using the timed +// io_context::run_for() member function. Each asynchronous operation is given +// a timeout within which it must complete. The socket operations themselves +// use boost::bind to specify the completion handler: // // +---------------+ // | | @@ -51,73 +37,60 @@ using asio::ip::udp; // | | // +----------------+ // -// The client object runs the io_context to block thread execution until the -// actor completes. +// For a given socket operation, the client object runs the io_context to block +// thread execution until the operation completes or the timeout is reached. If +// the io_context::run_for() function times out, the socket is closed and the +// outstanding asynchronous operation is cancelled. // class client { public: client(const udp::endpoint& listen_endpoint) - : socket_(io_context_, listen_endpoint), - deadline_(io_context_) + : socket_(io_context_, listen_endpoint) { - // No deadline is required until the first socket operation is started. We - // set the deadline to positive infinity so that the actor takes no action - // until a specific deadline is set. - deadline_.expires_at(boost::posix_time::pos_infin); - - // Start the persistent actor that checks for deadline expiry. - check_deadline(); } std::size_t receive(const asio::mutable_buffer& buffer, - boost::posix_time::time_duration timeout, asio::error_code& ec) + asio::chrono::steady_clock::duration timeout, + asio::error_code& ec) { - // Set a deadline for the asynchronous operation. - deadline_.expires_from_now(timeout); - - // Set up the variables that receive the result of the asynchronous - // operation. The error code is set to would_block to signal that the - // operation is incomplete. Asio guarantees that its asynchronous - // operations will never fail with would_block, so any other value in - // ec indicates completion. - ec = asio::error::would_block; + // Start the asynchronous operation. The handle_receive function used as a + // callback will update the ec and length variables. std::size_t length = 0; - - // Start the asynchronous operation itself. The handle_receive function - // used as a callback will update the ec and length variables. socket_.async_receive(asio::buffer(buffer), - boost::bind(&client::handle_receive, _1, _2, &ec, &length)); + boost::bind(&client::handle_receive, + boost::placeholders::_1, boost::placeholders::_2, &ec, &length)); - // Block until the asynchronous operation has completed. - do io_context_.run_one(); while (ec == asio::error::would_block); + // Run the operation until it completes, or until the timeout. + run(timeout); return length; } private: - void check_deadline() + void run(asio::chrono::steady_clock::duration timeout) { - // Check whether the deadline has passed. We compare the deadline against - // the current time since a new asynchronous operation may have moved the - // deadline before this actor had a chance to run. - if (deadline_.expires_at() <= deadline_timer::traits_type::now()) + // Restart the io_context, as it may have been left in the "stopped" state + // by a previous operation. + io_context_.restart(); + + // Block until the asynchronous operation has completed, or timed out. If + // the pending asynchronous operation is a composed operation, the deadline + // applies to the entire operation, rather than individual operations on + // the socket. + io_context_.run_for(timeout); + + // If the asynchronous operation completed successfully then the io_context + // would have been stopped due to running out of work. If it was not + // stopped, then the io_context::run_for call must have timed out. + if (!io_context_.stopped()) { - // The deadline has passed. The outstanding asynchronous operation needs - // to be cancelled so that the blocked receive() function will return. - // - // Please note that cancel() has portability issues on some versions of - // Microsoft Windows, and it may be necessary to use close() instead. - // Consult the documentation for cancel() for further information. + // Cancel the outstanding asynchronous operation. socket_.cancel(); - // There is no longer an active deadline. The expiry is set to positive - // infinity so that the actor takes no action until a new deadline is set. - deadline_.expires_at(boost::posix_time::pos_infin); + // Run the io_context again until the operation completes. + io_context_.run(); } - - // Put the actor back to sleep. - deadline_.async_wait(boost::bind(&client::check_deadline, this)); } static void handle_receive( @@ -131,7 +104,6 @@ private: private: asio::io_context io_context_; udp::socket socket_; - deadline_timer deadline_; }; //---------------------------------------------------------------------- @@ -144,7 +116,7 @@ int main(int argc, char* argv[]) if (argc != 3) { - std::cerr << "Usage: blocking_udp_timeout <listen_addr> <listen_port>\n"; + std::cerr << "Usage: blocking_udp_client <listen_addr> <listen_port>\n"; return 1; } @@ -159,7 +131,7 @@ int main(int argc, char* argv[]) char data[1024]; asio::error_code ec; std::size_t n = c.receive(asio::buffer(data), - boost::posix_time::seconds(10), ec); + asio::chrono::seconds(10), ec); if (ec) { diff --git a/3rdparty/asio/src/examples/cpp03/timeouts/server.cpp b/3rdparty/asio/src/examples/cpp03/timeouts/server.cpp index 212cd90d820..bee77d414a2 100644 --- a/3rdparty/asio/src/examples/cpp03/timeouts/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/timeouts/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -13,18 +13,19 @@ #include <deque> #include <iostream> #include <set> -#include <boost/bind.hpp> +#include <string> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> -#include "asio/deadline_timer.hpp" +#include "asio/buffer.hpp" #include "asio/io_context.hpp" #include "asio/ip/tcp.hpp" #include "asio/ip/udp.hpp" #include "asio/read_until.hpp" -#include "asio/streambuf.hpp" +#include "asio/steady_timer.hpp" #include "asio/write.hpp" -using asio::deadline_timer; +using asio::steady_timer; using asio::ip::tcp; using asio::ip::udp; @@ -57,7 +58,8 @@ public: void deliver(const std::string& msg) { std::for_each(subscribers_.begin(), subscribers_.end(), - boost::bind(&subscriber::deliver, _1, boost::ref(msg))); + boost::bind(&subscriber::deliver, + boost::placeholders::_1, boost::ref(msg))); } private: @@ -121,8 +123,8 @@ private: // +-------------+ +--------------+ // // The output actor first waits for an output message to be enqueued. It does -// this by using a deadline_timer as an asynchronous condition variable. The -// deadline_timer will be signalled whenever the output queue is non-empty. +// this by using a steady_timer as an asynchronous condition variable. The +// steady_timer will be signalled whenever the output queue is non-empty. // // Once a message is available, it is sent to the client. The deadline for // sending a complete message is 30 seconds. After the message is successfully @@ -140,13 +142,13 @@ public: non_empty_output_queue_(io_context), output_deadline_(io_context) { - input_deadline_.expires_at(boost::posix_time::pos_infin); - output_deadline_.expires_at(boost::posix_time::pos_infin); + input_deadline_.expires_at(steady_timer::time_point::max()); + output_deadline_.expires_at(steady_timer::time_point::max()); - // The non_empty_output_queue_ deadline_timer is set to pos_infin whenever - // the output queue is empty. This ensures that the output actor stays - // asleep until a message is put into the queue. - non_empty_output_queue_.expires_at(boost::posix_time::pos_infin); + // The non_empty_output_queue_ steady_timer is set to the maximum time + // point whenever the output queue is empty. This ensures that the output + // actor stays asleep until a message is put into the queue. + non_empty_output_queue_.expires_at(steady_timer::time_point::max()); } tcp::socket& socket() @@ -195,20 +197,22 @@ private: // Signal that the output queue contains messages. Modifying the expiry // will wake the output actor, if it is waiting on the timer. - non_empty_output_queue_.expires_at(boost::posix_time::neg_infin); + non_empty_output_queue_.expires_at(steady_timer::time_point::min()); } void start_read() { // Set a deadline for the read operation. - input_deadline_.expires_from_now(boost::posix_time::seconds(30)); + input_deadline_.expires_after(asio::chrono::seconds(30)); // Start an asynchronous operation to read a newline-delimited message. - asio::async_read_until(socket_, input_buffer_, '\n', - boost::bind(&tcp_session::handle_read, shared_from_this(), _1)); + asio::async_read_until(socket_, + asio::dynamic_buffer(input_buffer_), '\n', + boost::bind(&tcp_session::handle_read, shared_from_this(), + boost::placeholders::_1, boost::placeholders::_2)); } - void handle_read(const asio::error_code& ec) + void handle_read(const asio::error_code& ec, std::size_t n) { if (stopped()) return; @@ -216,9 +220,8 @@ private: if (!ec) { // Extract the newline-delimited message from the buffer. - std::string msg; - std::istream is(&input_buffer_); - std::getline(is, msg); + std::string msg(input_buffer_.substr(0, n - 1)); + input_buffer_.erase(0, n); if (!msg.empty()) { @@ -234,7 +237,7 @@ private: // Signal that the output queue contains messages. Modifying the // expiry will wake the output actor, if it is waiting on the timer. - non_empty_output_queue_.expires_at(boost::posix_time::neg_infin); + non_empty_output_queue_.expires_at(steady_timer::time_point::min()); } } @@ -256,7 +259,7 @@ private: // There are no messages that are ready to be sent. The actor goes to // sleep by waiting on the non_empty_output_queue_ timer. When a new // message is added, the timer will be modified and the actor will wake. - non_empty_output_queue_.expires_at(boost::posix_time::pos_infin); + non_empty_output_queue_.expires_at(steady_timer::time_point::max()); non_empty_output_queue_.async_wait( boost::bind(&tcp_session::await_output, shared_from_this())); } @@ -269,12 +272,13 @@ private: void start_write() { // Set a deadline for the write operation. - output_deadline_.expires_from_now(boost::posix_time::seconds(30)); + output_deadline_.expires_after(asio::chrono::seconds(30)); // Start an asynchronous operation to send a message. asio::async_write(socket_, asio::buffer(output_queue_.front()), - boost::bind(&tcp_session::handle_write, shared_from_this(), _1)); + boost::bind(&tcp_session::handle_write, + shared_from_this(), boost::placeholders::_1)); } void handle_write(const asio::error_code& ec) @@ -294,7 +298,7 @@ private: } } - void check_deadline(deadline_timer* deadline) + void check_deadline(steady_timer* deadline) { if (stopped()) return; @@ -302,7 +306,7 @@ private: // Check whether the deadline has passed. We compare the deadline against // the current time since a new asynchronous operation may have moved the // deadline before this actor had a chance to run. - if (deadline->expires_at() <= deadline_timer::traits_type::now()) + if (deadline->expiry() <= steady_timer::clock_type::now()) { // The deadline has passed. Stop the session. The other actors will // terminate as soon as possible. @@ -319,11 +323,11 @@ private: channel& channel_; tcp::socket socket_; - asio::streambuf input_buffer_; - deadline_timer input_deadline_; + std::string input_buffer_; + steady_timer input_deadline_; std::deque<std::string> output_queue_; - deadline_timer non_empty_output_queue_; - deadline_timer output_deadline_; + steady_timer non_empty_output_queue_; + steady_timer output_deadline_; }; typedef boost::shared_ptr<tcp_session> tcp_session_ptr; @@ -339,6 +343,7 @@ public: : socket_(io_context) { socket_.connect(broadcast_endpoint); + socket_.set_option(udp::socket::broadcast(true)); } private: @@ -373,7 +378,8 @@ public: tcp_session_ptr new_session(new tcp_session(io_context_, channel_)); acceptor_.async_accept(new_session->socket(), - boost::bind(&server::handle_accept, this, new_session, _1)); + boost::bind(&server::handle_accept, + this, new_session, boost::placeholders::_1)); } void handle_accept(tcp_session_ptr session, diff --git a/3rdparty/asio/src/examples/cpp03/timers/.gitignore b/3rdparty/asio/src/examples/cpp03/timers/.gitignore deleted file mode 100644 index a3fe695226f..00000000000 --- a/3rdparty/asio/src/examples/cpp03/timers/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -*timer -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/timers/tick_count_timer.cpp b/3rdparty/asio/src/examples/cpp03/timers/tick_count_timer.cpp deleted file mode 100644 index 8b98cfd2a54..00000000000 --- a/3rdparty/asio/src/examples/cpp03/timers/tick_count_timer.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// -// tick_count_timer.cpp -// ~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2016 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) -// - -#include <asio.hpp> -#include <ctime> -#include <iostream> - -#if defined(WIN32) -# include <windows.h> -#else -# error This example is for Windows only! -#endif - -struct tick_count_traits -{ - // The time type. This type has no constructor that takes a DWORD to ensure - // that the timer can only be used with relative times. - class time_type - { - public: - time_type() : ticks_(0) {} - private: - friend struct tick_count_traits; - DWORD ticks_; - }; - - // The duration type. According to the TimeTraits requirements, the duration - // must be a signed type. This means we can't handle durations larger than - // 2^31. - class duration_type - { - public: - duration_type() : ticks_(0) {} - duration_type(LONG ticks) : ticks_(ticks) {} - private: - friend struct tick_count_traits; - LONG ticks_; - }; - - // Get the current time. - static time_type now() - { - time_type result; - result.ticks_ = ::GetTickCount(); - return result; - } - - // Add a duration to a time. - static time_type add(const time_type& t, const duration_type& d) - { - time_type result; - result.ticks_ = t.ticks_ + d.ticks_; - return result; - } - - // Subtract one time from another. - static duration_type subtract(const time_type& t1, const time_type& t2) - { - // DWORD tick count values can wrap (see less_than() below). We'll convert - // to a duration by taking the absolute difference and adding the sign - // based on which is the "lesser" absolute time. - return duration_type(less_than(t1, t2) - ? -static_cast<LONG>(t2.ticks_ - t1.ticks_) - : static_cast<LONG>(t1.ticks_ - t2.ticks_)); - } - - // Test whether one time is less than another. - static bool less_than(const time_type& t1, const time_type& t2) - { - // DWORD tick count values wrap periodically, so we'll use a heuristic that - // says that if subtracting t1 from t2 yields a value smaller than 2^31, - // then t1 is probably less than t2. This means that we can't handle - // durations larger than 2^31, which shouldn't be a problem in practice. - return (t2.ticks_ - t1.ticks_) < static_cast<DWORD>(1 << 31); - } - - // Convert to POSIX duration type. - static boost::posix_time::time_duration to_posix_duration( - const duration_type& d) - { - return boost::posix_time::milliseconds(d.ticks_); - } -}; - -typedef asio::basic_deadline_timer< - DWORD, tick_count_traits> tick_count_timer; - -void handle_timeout(const asio::error_code&) -{ - std::cout << "handle_timeout\n"; -} - -int main() -{ - try - { - asio::io_context io_context; - - tick_count_timer timer(io_context, 5000); - std::cout << "Starting synchronous wait\n"; - timer.wait(); - std::cout << "Finished synchronous wait\n"; - - timer.expires_from_now(5000); - std::cout << "Starting asynchronous wait\n"; - timer.async_wait(&handle_timeout); - io_context.run(); - std::cout << "Finished asynchronous wait\n"; - } - catch (std::exception& e) - { - std::cout << "Exception: " << e.what() << "\n"; - } - - return 0; -} diff --git a/3rdparty/asio/src/examples/cpp03/timers/time_t_timer.cpp b/3rdparty/asio/src/examples/cpp03/timers/time_t_timer.cpp index 8a434e9b20c..74426b3c71d 100644 --- a/3rdparty/asio/src/examples/cpp03/timers/time_t_timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/timers/time_t_timer.cpp @@ -2,7 +2,7 @@ // time_t_timer.cpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,53 +12,66 @@ #include <ctime> #include <iostream> -struct time_t_traits +// A custom implementation of the Clock concept from the standard C++ library. +struct time_t_clock { - // The time type. - typedef std::time_t time_type; - // The duration type. - struct duration_type - { - duration_type() : value(0) {} - duration_type(std::time_t v) : value(v) {} - std::time_t value; - }; + typedef asio::chrono::steady_clock::duration duration; - // Get the current time. - static time_type now() - { - return std::time(0); - } + // The duration's underlying arithmetic representation. + typedef duration::rep rep; - // Add a duration to a time. - static time_type add(const time_type& t, const duration_type& d) - { - return t + d.value; - } + // The ratio representing the duration's tick period. + typedef duration::period period; + + // An absolute time point represented using the clock. + typedef asio::chrono::time_point<time_t_clock> time_point; + + // The clock is not monotonically increasing. + static const bool is_steady = false; - // Subtract one time from another. - static duration_type subtract(const time_type& t1, const time_type& t2) + // Get the current time. + static time_point now() { - return duration_type(t1 - t2); + return time_point() + asio::chrono::seconds(std::time(0)); } +}; - // Test whether one time is less than another. - static bool less_than(const time_type& t1, const time_type& t2) +// The asio::basic_waitable_timer template accepts an optional WaitTraits +// template parameter. The underlying time_t clock has one-second granularity, +// so these traits may be customised to reduce the latency between the clock +// ticking over and a wait operation's completion. When the timeout is near +// (less than one second away) we poll the clock more frequently to detect the +// time change closer to when it occurs. The user can select the appropriate +// trade off between accuracy and the increased CPU cost of polling. In extreme +// cases, a zero duration may be returned to make the timers as accurate as +// possible, albeit with 100% CPU usage. +struct time_t_wait_traits +{ + // Determine how long until the clock should be next polled to determine + // whether the duration has elapsed. + static time_t_clock::duration to_wait_duration( + const time_t_clock::duration& d) { - return t1 < t2; + if (d > asio::chrono::seconds(1)) + return d - asio::chrono::seconds(1); + else if (d > asio::chrono::seconds(0)) + return asio::chrono::milliseconds(10); + else + return asio::chrono::seconds(0); } - // Convert to POSIX duration type. - static boost::posix_time::time_duration to_posix_duration( - const duration_type& d) + // Determine how long until the clock should be next polled to determine + // whether the absoluate time has been reached. + static time_t_clock::duration to_wait_duration( + const time_t_clock::time_point& t) { - return boost::posix_time::seconds(d.value); + return to_wait_duration(t - time_t_clock::now()); } }; -typedef asio::basic_deadline_timer< - std::time_t, time_t_traits> time_t_timer; +typedef asio::basic_waitable_timer< + time_t_clock, time_t_wait_traits> time_t_timer; void handle_timeout(const asio::error_code&) { @@ -73,12 +86,12 @@ int main() time_t_timer timer(io_context); - timer.expires_from_now(5); + timer.expires_after(asio::chrono::seconds(5)); std::cout << "Starting synchronous wait\n"; timer.wait(); std::cout << "Finished synchronous wait\n"; - timer.expires_from_now(5); + timer.expires_after(asio::chrono::seconds(5)); std::cout << "Starting asynchronous wait\n"; timer.async_wait(&handle_timeout); io_context.run(); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/.gitignore deleted file mode 100644 index 2926eaf9bf6..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -client -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/client.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/client.cpp index 9784d48a6fb..292a05ef039 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime1/client.cpp @@ -2,7 +2,7 @@ // client.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/.gitignore deleted file mode 100644 index 7f06efb3296..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -server -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/server.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/server.cpp index f662ed246c4..16dfa0101a0 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime2/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/.gitignore deleted file mode 100644 index 7f06efb3296..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -server -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/server.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/server.cpp index cb2c9480594..268401ffc6a 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime3/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <ctime> #include <iostream> #include <string> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include <asio.hpp> @@ -70,7 +70,8 @@ class tcp_server { public: tcp_server(asio::io_context& io_context) - : acceptor_(io_context, tcp::endpoint(tcp::v4(), 13)) + : io_context_(io_context), + acceptor_(io_context, tcp::endpoint(tcp::v4(), 13)) { start_accept(); } @@ -79,7 +80,7 @@ private: void start_accept() { tcp_connection::pointer new_connection = - tcp_connection::create(acceptor_.get_executor().context()); + tcp_connection::create(io_context_); acceptor_.async_accept(new_connection->socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, @@ -97,6 +98,7 @@ private: start_accept(); } + asio::io_context& io_context_; tcp::acceptor acceptor_; }; diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/.gitignore deleted file mode 100644 index 2926eaf9bf6..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -client -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/client.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/client.cpp index da3b651d56d..24a325e0e88 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime4/client.cpp @@ -2,7 +2,7 @@ // client.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/.gitignore deleted file mode 100644 index 7f06efb3296..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -server -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/server.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/server.cpp index fdf452562d2..0634b067ada 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime5/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -35,12 +35,7 @@ int main() { boost::array<char, 1> recv_buf; udp::endpoint remote_endpoint; - asio::error_code error; - socket.receive_from(asio::buffer(recv_buf), - remote_endpoint, 0, error); - - if (error && error != asio::error::message_size) - throw asio::system_error(error); + socket.receive_from(asio::buffer(recv_buf), remote_endpoint); std::string message = make_daytime_string(); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/.gitignore deleted file mode 100644 index 7f06efb3296..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -server -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/server.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/server.cpp index d67045ff990..ccf8b54e41c 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime6/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #include <iostream> #include <string> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <asio.hpp> @@ -47,7 +47,7 @@ private: void handle_receive(const asio::error_code& error, std::size_t /*bytes_transferred*/) { - if (!error || error == asio::error::message_size) + if (!error) { boost::shared_ptr<std::string> message( new std::string(make_daytime_string())); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/.gitignore deleted file mode 100644 index 7f06efb3296..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -server -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/server.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/server.cpp index b9dc60558c9..2fec1084dbf 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/daytime7/server.cpp @@ -2,7 +2,7 @@ // server.cpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -12,7 +12,7 @@ #include <iostream> #include <string> #include <boost/array.hpp> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include <asio.hpp> @@ -69,7 +69,8 @@ class tcp_server { public: tcp_server(asio::io_context& io_context) - : acceptor_(io_context, tcp::endpoint(tcp::v4(), 13)) + : io_context_(io_context), + acceptor_(io_context, tcp::endpoint(tcp::v4(), 13)) { start_accept(); } @@ -78,7 +79,7 @@ private: void start_accept() { tcp_connection::pointer new_connection = - tcp_connection::create(acceptor_.get_executor().context()); + tcp_connection::create(io_context_); acceptor_.async_accept(new_connection->socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, @@ -96,6 +97,7 @@ private: start_accept(); } + asio::io_context& io_context_; tcp::acceptor acceptor_; }; @@ -119,7 +121,7 @@ private: void handle_receive(const asio::error_code& error) { - if (!error || error == asio::error::message_size) + if (!error) { boost::shared_ptr<std::string> message( new std::string(make_daytime_string())); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/daytime_dox.txt b/3rdparty/asio/src/examples/cpp03/tutorial/daytime_dox.txt deleted file mode 100644 index 1bf591a43a8..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/daytime_dox.txt +++ /dev/null @@ -1,502 +0,0 @@ -// -// Copyright (c) 2003-2016 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) -// - -/** -\page tutdaytime1 Daytime.1 - A synchronous TCP daytime client - -This tutorial program shows how to use asio to implement a client application -with TCP. - -\dontinclude daytime1/client.cpp -\skip #include - -We start by including the necessary header files. - -\until asio.hpp - -The purpose of this application is to access a daytime service, -so we need the user to specify the server. - -\until } - -All programs that use asio need to have at least one asio::io_service -object. - -\until asio::io_service - -We need to turn the server name that was specified as a parameter to the -application, into a TCP endpoint. To do this we use an -asio::ip::tcp::resolver object. - -\until tcp::resolver - -A resolver takes a query object and turns it into a list of endpoints. We -construct a query using the name of the server, specified in <tt>argv[1]</tt>, -and the name of the service, in this case <tt>"daytime"</tt>. - -\until tcp::resolver::query - -The list of endpoints is returned using an iterator of type -asio::ip::tcp::resolver::iterator. (Note that a default constructed -asio::ip::tcp::resolver::iterator object can be used as an end iterator.) - -\until tcp::resolver::iterator - -Now we create and connect the socket. The list of endpoints obtained above may -contain both IPv4 and IPv6 endpoints, so we need to try each of them until we -find one that works. This keeps the client program independent of a specific IP -version. The asio::connect() function does this for us automatically. - -\until asio::connect - -The connection is open. All we need to do now is read the response from the -daytime service. - -We use a <tt>boost::array</tt> to hold the received data. The asio::buffer() -function automatically determines the size of the array to help prevent buffer -overruns. Instead of a <tt>boost::array</tt>, we could have used a <tt>char -[]</tt> or <tt>std::vector</tt>. - -\until read_some - -When the server closes the connection, the asio::ip::tcp::socket::read_some() -function will exit with the asio::error::eof error, which is how we know to -exit the loop. - -\until } - -Finally, handle any exceptions that may have been thrown. - -\until } -\until } - -See the \ref tutdaytime1src "full source listing" \n -Return to the \ref index "tutorial index" \n -Next: \ref tutdaytime2 - -*/ - -/** -\page tutdaytime1src Source listing for Daytime.1 -\include daytime1/client.cpp -Return to \ref tutdaytime1 -*/ - -/** -\page tutdaytime2 Daytime.2 - A synchronous TCP daytime server - -This tutorial program shows how to use asio to implement a server application -with TCP. - -\dontinclude daytime2/server.cpp -\skip #include - -\until using - -We define the function <tt>make_daytime_string()</tt> to create the string to -be sent back to the client. This function will be reused in all of our daytime -server applications. - -\until asio::io_service - -A asio::ip::tcp::acceptor object needs to be created to listen -for new connections. It is initialised to listen on TCP port 13, for IP version 4. - -\until tcp::acceptor - -This is an iterative server, which means that it will handle one -connection at a time. Create a socket that will represent the connection to the -client, and then wait for a connection. - -\until acceptor.accept - -A client is accessing our service. Determine the current time -and transfer this information to the client. - -\until } -\until } - -Finally, handle any exceptions. - -\until } -\until } - -See the \ref tutdaytime2src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime1 \n -Next: \ref tutdaytime3 - -*/ - -/** -\page tutdaytime2src Source listing for Daytime.2 -\include daytime2/server.cpp -Return to \ref tutdaytime2 -*/ - -/** -\page tutdaytime3 Daytime.3 - An asynchronous TCP daytime server - -\section tutdaytime3funcmain The main() function - -\dontinclude daytime3/server.cpp -\skip int main() -\until try -\until { - -We need to create a server object to accept incoming client connections. The -asio::io_service object provides I/O services, such as sockets, that the -server object will use. - -\until tcp_server - -Run the asio::io_service object so that it will perform asynchronous operations -on your behalf. - -\until return 0; -\until } - -\section tutdaytime3classtcp_server The tcp_server class - -\dontinclude daytime3/server.cpp -\skip class tcp_server -\until public: - -The constructor initialises an acceptor to listen on TCP port 13. - -\until private: - -The function <tt>start_accept()</tt> creates a socket and initiates an -asynchronous accept operation to wait for a new connection. - -\until } - -The function <tt>handle_accept()</tt> is called when the asynchronous accept -operation initiated by <tt>start_accept()</tt> finishes. It services the client -request, and then calls <tt>start_accept()</tt> to initiate the next accept -operation. - -\until } -\until } - -\section tutdaytime3classtcp_connection The tcp_connection class - -We will use <tt>shared_ptr</tt> and <tt>enable_shared_from_this</tt> because we -want to keep the <tt>tcp_connection</tt> object alive as long as there is an -operation that refers to it. - -\dontinclude daytime3/server.cpp -\skip class tcp_connection -\until shared_ptr -\until } -\until } - -In the function <tt>start()</tt>, we call asio::async_write() to serve the data -to the client. Note that we are using asio::async_write(), rather than -asio::ip::tcp::socket::async_write_some(), to ensure that the entire block of -data is sent. - -\until { - -The data to be sent is stored in the class member <tt>message_</tt> as we need -to keep the data valid until the asynchronous operation is complete. - -\until message_ - -When initiating the asynchronous operation, and if using \ref boost_bind, you -must specify only the arguments that match the handler's parameter list. In -this program, both of the argument placeholders (asio::placeholders::error and -asio::placeholders::bytes_transferred) could potentially have been removed, -since they are not being used in <tt>handle_write()</tt>. - -\until placeholders::bytes_transferred - -Any further actions for this client connection are now the responsibility of -<tt>handle_write()</tt>. - -\until }; - -\section tutdaytime3remunused Removing unused handler parameters - -You may have noticed that the <tt>error</tt>, and <tt>bytes_transferred</tt> -parameters are not used in the body of the <tt>handle_write()</tt> function. If -parameters are not needed, it is possible to remove them from the function so -that it looks like: - -\code - void handle_write() - { - } -\endcode - -The asio::async_write() call used to initiate the call can then be changed to -just: - -\code - asio::async_write(socket_, asio::buffer(message_), - boost::bind(&tcp_connection::handle_write, shared_from_this())); -\endcode - -See the \ref tutdaytime3src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime2 \n -Next: \ref tutdaytime4 - -*/ - -/** -\page tutdaytime3src Source listing for Daytime.3 -\include daytime3/server.cpp -Return to \ref tutdaytime3 -*/ - -/** -\page tutdaytime4 Daytime.4 - A synchronous UDP daytime client - -This tutorial program shows how to use asio to implement a client application -with UDP. - -\dontinclude daytime4/client.cpp -\skip #include -\until using asio::ip::udp; - -The start of the application is essentially the same as for the TCP daytime -client. - -\until asio::io_service - -We use an asio::ip::udp::resolver object to find the correct remote endpoint to -use based on the host and service names. The query is restricted to return only -IPv4 endpoints by the asio::ip::udp::v4() argument. - -\until udp::v4 - -The asio::ip::udp::resolver::resolve() function is guaranteed to return at -least one endpoint in the list if it does not fail. This means it is safe to -dereference the return value directly. - -\until udp::endpoint - -Since UDP is datagram-oriented, we will not be using a stream socket. Create an -asio::ip::udp::socket and initiate contact with the remote endpoint. - -\until receiver_endpoint - -Now we need to be ready to accept whatever the server sends back to us. The -endpoint on our side that receives the server's response will be initialised by -asio::ip::udp::socket::receive_from(). - -\until } - -Finally, handle any exceptions that may have been thrown. - -\until } -\until } -See the \ref tutdaytime4src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime3 \n -Next: \ref tutdaytime5 - -*/ - -/** -\page tutdaytime4src Source listing for Daytime.4 -\include daytime4/client.cpp -Return to \ref tutdaytime4 -*/ - -/** -\page tutdaytime5 Daytime.5 - A synchronous UDP daytime server - -This tutorial program shows how to use asio to implement a server application -with UDP. - -\dontinclude daytime5/server.cpp -\skip int main() -\until asio::io_service - -Create an asio::ip::udp::socket object to receive requests on UDP port 13. - -\until udp::socket - -Wait for a client to initiate contact with us. The remote_endpoint object will -be populated by asio::ip::udp::socket::receive_from(). - -\until throw - -Determine what we are going to send back to the client. - -\until std::string message - -Send the response to the remote_endpoint. - -\until } -\until } - -Finally, handle any exceptions. - -\until } -\until } - -See the \ref tutdaytime5src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime4 \n -Next: \ref tutdaytime6 - -*/ - -/** -\page tutdaytime5src Source listing for Daytime.5 -\include daytime5/server.cpp -Return to \ref tutdaytime5 -*/ - -/** -\page tutdaytime6 Daytime.6 - An asynchronous UDP daytime server - -\section tutdaytime6funcmain The main() function - -\dontinclude daytime6/server.cpp -\skip int main() -\until try -\until { - -Create a server object to accept incoming client requests, and run -the asio::io_service object. - -\until return 0; -\until } - -\section tutdaytime6classudp_server The udp_server class - -\dontinclude daytime6/server.cpp -\skip class udp_server -\until public: - -The constructor initialises a socket to listen on UDP port 13. - -\until private: -\until { - -The function asio::ip::udp::socket::async_receive_from() will cause the -application to listen in the background for a new request. When such a request -is received, the asio::io_service object will invoke the -<tt>handle_receive()</tt> function with two arguments: a value of type -asio::error_code indicating whether the operation succeeded or failed, and a -<tt>size_t</tt> value <tt>bytes_transferred</tt> specifying the number of bytes -received. - -\until } - -The function <tt>handle_receive()</tt> will service the client request. - -\until { - -The <tt>error</tt> parameter contains the result of the asynchronous operation. -Since we only provide the 1-byte <tt>recv_buffer_</tt> to contain the client's -request, the asio::io_service object would return an error if the client sent -anything larger. We can ignore such an error if it comes up. - -\until { - -Determine what we are going to send. - -\until make_daytime_string() - -We now call asio::ip::udp::socket::async_send_to() to serve the data to the -client. - -\until asio::placeholders::bytes_transferred - -When initiating the asynchronous operation, and if using \ref boost_bind, you -must specify only the arguments that match the handler's parameter list. In -this program, both of the argument placeholders (asio::placeholders::error and -asio::placeholders::bytes_transferred) could potentially have been removed. - -Start listening for the next client request. - -\until start_receive - -Any further actions for this client request are now the responsibility of -<tt>handle_send()</tt>. - -\until } -\until } - -The function <tt>handle_send()</tt> is invoked after the service request has -been completed. - -\until } -\until } - -See the \ref tutdaytime6src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime5 \n -Next: \ref tutdaytime7 - -*/ - -/** -\page tutdaytime6src Source listing for Daytime.6 -\include daytime6/server.cpp -Return to \ref tutdaytime6 -*/ - -/** -\page tutdaytime7 Daytime.7 - A combined TCP/UDP asynchronous server - -This tutorial program shows how to combine the two asynchronous servers that we -have just written, into a single server application. - -\section tutdaytime7funcmain The main() function - -\dontinclude daytime7/server.cpp -\skip int main() -\until asio::io_service - -We will begin by creating a server object to accept a TCP client connection. - -\until tcp_server - -We also need a server object to accept a UDP client request. - -\until udp_server - -We have created two lots of work for the asio::io_service object to do. - -\until return 0; -\until } - -\section tutdaytime7classtcp The tcp_connection and tcp_server classes - -The following two classes are taken from \ref tutdaytime3 "Daytime.3". - -\dontinclude daytime7/server.cpp -\skip class tcp_connection -\until }; -\until }; - -\section tutdaytime7classudp The udp_server class - -Similarly, this next class is taken from the -\ref tutdaytime6 "previous tutorial step". - -\dontinclude daytime7/server.cpp -\skip class udp_server -\until }; - -See the \ref tutdaytime7src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tutdaytime6 - -*/ - -/** -\page tutdaytime7src Source listing for Daytime.7 -\include daytime7/server.cpp -Return to \ref tutdaytime7 -*/ diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/index_dox.txt b/3rdparty/asio/src/examples/cpp03/tutorial/index_dox.txt deleted file mode 100644 index 7d3bd1a2912..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/index_dox.txt +++ /dev/null @@ -1,48 +0,0 @@ -// -// Copyright (c) 2003-2016 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) -// - -/** -\mainpage asio Tutorial - -\section tuttimer Basic Skills - -The tutorial programs in this first section introduce the fundamental concepts -required to use the asio toolkit. Before plunging into the complex world of -network programming, these tutorial programs illustrate the basic skills using -simple asynchronous timers. - -\li \ref tuttimer1 -\li \ref tuttimer2 -\li \ref tuttimer3 -\li \ref tuttimer4 -\li \ref tuttimer5 - -\section tutdaytime Introduction to Sockets - -The tutorial programs in this section show how to use asio to develop simple -client and server programs. These tutorial programs are based around the <a -href="http://www.ietf.org/rfc/rfc867.txt">daytime</a> protocol, which supports -both TCP and UDP. - -The first three tutorial programs implement the daytime protocol using TCP. - -\li \ref tutdaytime1 -\li \ref tutdaytime2 -\li \ref tutdaytime3 - -The next three tutorial programs implement the daytime protocol using UDP. - -\li \ref tutdaytime4 -\li \ref tutdaytime5 -\li \ref tutdaytime6 - -The last tutorial program in this section demonstrates how asio allows the TCP -and UDP servers to be easily combined into a single program. - -\li \ref tutdaytime7 - -*/ diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer1/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/timer1/.gitignore deleted file mode 100644 index 1d47ca67c43..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer1/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -timer -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer1/timer.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/timer1/timer.cpp index 79ddf918261..35ad17c6496 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/timer1/timer.cpp @@ -2,7 +2,7 @@ // timer.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,13 +10,12 @@ #include <iostream> #include <asio.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> int main() { asio::io_context io; - asio::deadline_timer t(io, boost::posix_time::seconds(5)); + asio::steady_timer t(io, asio::chrono::seconds(5)); t.wait(); std::cout << "Hello, world!" << std::endl; diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer2/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/timer2/.gitignore deleted file mode 100644 index 1d47ca67c43..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer2/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -timer -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer2/timer.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/timer2/timer.cpp index 3275c22c2f6..10f0b528a44 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/timer2/timer.cpp @@ -2,7 +2,7 @@ // timer.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,7 +10,6 @@ #include <iostream> #include <asio.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> void print(const asio::error_code& /*e*/) { @@ -21,7 +20,7 @@ int main() { asio::io_context io; - asio::deadline_timer t(io, boost::posix_time::seconds(5)); + asio::steady_timer t(io, asio::chrono::seconds(5)); t.async_wait(&print); io.run(); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer3/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/timer3/.gitignore deleted file mode 100644 index 1d47ca67c43..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer3/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -timer -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer3/timer.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/timer3/timer.cpp index dfbf7d660a0..b2e27b73dc5 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/timer3/timer.cpp @@ -2,7 +2,7 @@ // timer.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,18 +10,17 @@ #include <iostream> #include <asio.hpp> -#include <boost/bind.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/bind/bind.hpp> void print(const asio::error_code& /*e*/, - asio::deadline_timer* t, int* count) + asio::steady_timer* t, int* count) { if (*count < 5) { std::cout << *count << std::endl; ++(*count); - t->expires_at(t->expires_at() + boost::posix_time::seconds(1)); + t->expires_at(t->expiry() + asio::chrono::seconds(1)); t->async_wait(boost::bind(print, asio::placeholders::error, t, count)); } @@ -32,7 +31,7 @@ int main() asio::io_context io; int count = 0; - asio::deadline_timer t(io, boost::posix_time::seconds(1)); + asio::steady_timer t(io, asio::chrono::seconds(1)); t.async_wait(boost::bind(print, asio::placeholders::error, &t, &count)); diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer4/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/timer4/.gitignore deleted file mode 100644 index 1d47ca67c43..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer4/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -timer -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer4/timer.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/timer4/timer.cpp index cbea70d26fa..ebc6d0999dd 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/timer4/timer.cpp @@ -2,7 +2,7 @@ // timer.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,14 +10,13 @@ #include <iostream> #include <asio.hpp> -#include <boost/bind.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/bind/bind.hpp> class printer { public: printer(asio::io_context& io) - : timer_(io, boost::posix_time::seconds(1)), + : timer_(io, asio::chrono::seconds(1)), count_(0) { timer_.async_wait(boost::bind(&printer::print, this)); @@ -35,13 +34,13 @@ public: std::cout << count_ << std::endl; ++count_; - timer_.expires_at(timer_.expires_at() + boost::posix_time::seconds(1)); + timer_.expires_at(timer_.expiry() + asio::chrono::seconds(1)); timer_.async_wait(boost::bind(&printer::print, this)); } } private: - asio::deadline_timer timer_; + asio::steady_timer timer_; int count_; }; diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer5/.gitignore b/3rdparty/asio/src/examples/cpp03/tutorial/timer5/.gitignore deleted file mode 100644 index 1d47ca67c43..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer5/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -timer -.deps -.dirstamp -*.o -*.obj -*.exe -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer5/timer.cpp b/3rdparty/asio/src/examples/cpp03/tutorial/timer5/timer.cpp index a798e85aacf..f17c9d67f94 100644 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +++ b/3rdparty/asio/src/examples/cpp03/tutorial/timer5/timer.cpp @@ -2,7 +2,7 @@ // timer.cpp // ~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -10,16 +10,15 @@ #include <iostream> #include <asio.hpp> -#include <boost/bind.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/bind/bind.hpp> class printer { public: printer(asio::io_context& io) - : strand_(io), - timer1_(io, boost::posix_time::seconds(1)), - timer2_(io, boost::posix_time::seconds(1)), + : strand_(asio::make_strand(io)), + timer1_(io, asio::chrono::seconds(1)), + timer2_(io, asio::chrono::seconds(1)), count_(0) { timer1_.async_wait(asio::bind_executor(strand_, @@ -41,7 +40,7 @@ public: std::cout << "Timer 1: " << count_ << std::endl; ++count_; - timer1_.expires_at(timer1_.expires_at() + boost::posix_time::seconds(1)); + timer1_.expires_at(timer1_.expiry() + asio::chrono::seconds(1)); timer1_.async_wait(asio::bind_executor(strand_, boost::bind(&printer::print1, this))); @@ -55,7 +54,7 @@ public: std::cout << "Timer 2: " << count_ << std::endl; ++count_; - timer2_.expires_at(timer2_.expires_at() + boost::posix_time::seconds(1)); + timer2_.expires_at(timer2_.expiry() + asio::chrono::seconds(1)); timer2_.async_wait(asio::bind_executor(strand_, boost::bind(&printer::print2, this))); @@ -63,9 +62,9 @@ public: } private: - asio::io_context::strand strand_; - asio::deadline_timer timer1_; - asio::deadline_timer timer2_; + asio::strand<asio::io_context::executor_type> strand_; + asio::steady_timer timer1_; + asio::steady_timer timer2_; int count_; }; diff --git a/3rdparty/asio/src/examples/cpp03/tutorial/timer_dox.txt b/3rdparty/asio/src/examples/cpp03/tutorial/timer_dox.txt deleted file mode 100644 index 7c5a0a099a6..00000000000 --- a/3rdparty/asio/src/examples/cpp03/tutorial/timer_dox.txt +++ /dev/null @@ -1,383 +0,0 @@ -// -// Copyright (c) 2003-2016 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) -// - -/** -\page tuttimer1 Timer.1 - Using a timer synchronously - -This tutorial program introduces asio by showing how to perform a blocking -wait on a timer. - -\dontinclude timer1/timer.cpp -\skip #include - -We start by including the necessary header files. - -All of the asio classes can be used by simply including the <tt>"asio.hpp"</tt> -header file. - -\until asio.hpp - -Since this example uses timers, we need to include the appropriate -Boost.Date_Time header file for manipulating times. - -\until posix_time.hpp - -All programs that use asio need to have at least one asio::io_service object. -This class provides access to I/O functionality. We declare an object of this -type first thing in the main function. - -\until asio::io_service - -Next we declare an object of type asio::deadline_timer. The core asio classes -that provide I/O functionality (or as in this case timer functionality) always -take a reference to an io_service as their first constructor argument. The -second argument to the constructor sets the timer to expire 5 seconds from now. - -\until asio::deadline_timer - -In this simple example we perform a blocking wait on the timer. -That is, the call to asio::deadline_timer::wait() will not return until the -timer has expired, 5 seconds after it was created (i.e. <b>not</b> from when the -wait starts). - -A deadline timer is always in one of two states: "expired" or "not expired". If -the asio::deadline_timer::wait() function is called on an expired timer, it -will return immediately. - -\until wait - -Finally we print the obligatory <tt>"Hello, world!"</tt> -message to show when the timer has expired. - -\until } - -See the \ref tuttimer1src "full source listing" \n -Return to the \ref index "tutorial index" \n -Next: \ref tuttimer2 - -*/ - -/** -\page tuttimer1src Source listing for Timer.1 -\include timer1/timer.cpp -Return to \ref tuttimer1 -*/ - -/** -\page tuttimer2 Timer.2 - Using a timer asynchronously - -This tutorial program demonstrates how to use asio's asynchronous callback -functionality by modifying the program from tutorial Timer.1 to perform an -asynchronous wait on the timer. - -\dontinclude timer2/timer.cpp -\skip #include - -\until posix_time.hpp - -Using asio's asynchronous functionality means having a callback -function that will be called when an asynchronous operation completes. In this -program we define a function called <tt>print</tt> to be called when the -asynchronous wait finishes. - -\until asio::deadline_timer - -Next, instead of doing a blocking wait as in tutorial Timer.1, -we call the asio::deadline_timer::async_wait() function to perform an -asynchronous wait. When calling this function we pass the <tt>print</tt> -callback handler that was defined above. - -\skipline async_wait - -Finally, we must call the asio::io_service::run() member function -on the io_service object. - -The asio library provides a guarantee that callback handlers will <b>only</b> -be called from threads that are currently calling asio::io_service::run(). -Therefore unless the asio::io_service::run() function is called the callback for -the asynchronous wait completion will never be invoked. - -The asio::io_service::run() function will also continue to run while there is -still "work" to do. In this example, the work is the asynchronous wait on the -timer, so the call will not return until the timer has expired and the -callback has completed. - -It is important to remember to give the io_service some work to do before -calling asio::io_service::run(). For example, if we had omitted the above call -to asio::deadline_timer::async_wait(), the io_service would not have had any -work to do, and consequently asio::io_service::run() would have returned -immediately. - -\skip run -\until } - -See the \ref tuttimer2src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tuttimer1 \n -Next: \ref tuttimer3 - -*/ - -/** -\page tuttimer2src Source listing for Timer.2 -\include timer2/timer.cpp -Return to \ref tuttimer2 -*/ - -/** -\page tuttimer3 Timer.3 - Binding arguments to a handler - -In this tutorial we will modify the program from tutorial Timer.2 so that the -timer fires once a second. This will show how to pass additional parameters to -your handler function. - -\dontinclude timer3/timer.cpp -\skip #include - -\until posix_time.hpp - -To implement a repeating timer using asio you need to change -the timer's expiry time in your callback function, and to then start a new -asynchronous wait. Obviously this means that the callback function will need -to be able to access the timer object. To this end we add two new parameters -to the <tt>print</tt> function: - -\li A pointer to a timer object. - -\li A counter so that we can stop the program when the timer fires for the -sixth time. - -\until { - -As mentioned above, this tutorial program uses a counter to -stop running when the timer fires for the sixth time. However you will observe -that there is no explicit call to ask the io_service to stop. Recall that in -tutorial Timer.2 we learnt that the asio::io_service::run() function completes -when there is no more "work" to do. By not starting a new asynchronous wait on -the timer when <tt>count</tt> reaches 5, the io_service will run out of work and -stop running. - -\until ++ - -Next we move the expiry time for the timer along by one second -from the previous expiry time. By calculating the new expiry time relative to -the old, we can ensure that the timer does not drift away from the -whole-second mark due to any delays in processing the handler. - -\until expires_at - -Then we start a new asynchronous wait on the timer. As you can -see, the \ref boost_bind function is used to associate the extra parameters -with your callback handler. The asio::deadline_timer::async_wait() function -expects a handler function (or function object) with the signature -<tt>void(const asio::error_code&)</tt>. Binding the additional parameters -converts your <tt>print</tt> function into a function object that matches the -signature correctly. - -See the <a href="http://www.boost.org/libs/bind/bind.html">Boost.Bind -documentation</a> for more information on how to use \ref boost_bind. - -In this example, the asio::placeholders::error argument to \ref boost_bind is a -named placeholder for the error object passed to the handler. When initiating -the asynchronous operation, and if using \ref boost_bind, you must specify only -the arguments that match the handler's parameter list. In tutorial Timer.4 you -will see that this placeholder may be elided if the parameter is not needed by -the callback handler. - -\until asio::io_service - -A new <tt>count</tt> variable is added so that we can stop the -program when the timer fires for the sixth time. - -\until asio::deadline_timer - -As in Step 4, when making the call to -asio::deadline_timer::async_wait() from <tt>main</tt> we bind the additional -parameters needed for the <tt>print</tt> function. - -\until run - -Finally, just to prove that the <tt>count</tt> variable was -being used in the <tt>print</tt> handler function, we will print out its new -value. - -\until } - -See the \ref tuttimer3src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tuttimer2 \n -Next: \ref tuttimer4 - -*/ - -/** -\page tuttimer3src Source listing for Timer.3 -\include timer3/timer.cpp -Return to \ref tuttimer3 -*/ - -/** -\page tuttimer4 Timer.4 - Using a member function as a handler - -In this tutorial we will see how to use a class member function as a callback -handler. The program should execute identically to the tutorial program from -tutorial Timer.3. - -\dontinclude timer4/timer.cpp -\skip #include - -\until posix_time.hpp - -Instead of defining a free function <tt>print</tt> as the -callback handler, as we did in the earlier tutorial programs, we now define a -class called <tt>printer</tt>. - -\until public - -The constructor of this class will take a reference to the -io_service object and use it when initialising the <tt>timer_</tt> member. The -counter used to shut down the program is now also a member of the class. - -\until { - -The \ref boost_bind function works just as well with class -member functions as with free functions. Since all non-static class member -functions have an implicit <tt>this</tt> parameter, we need to bind -<tt>this</tt> to the function. As in tutorial Timer.3, \ref boost_bind -converts our callback handler (now a member function) into a function object -that can be invoked as though it has the signature <tt>void(const -asio::error_code&)</tt>. - -You will note that the asio::placeholders::error placeholder is not specified -here, as the <tt>print</tt> member function does not accept an error object as -a parameter. - -\until } - -In the class destructor we will print out the final value of -the counter. - -\until } - -The <tt>print</tt> member function is very similar to the -<tt>print</tt> function from tutorial Timer.3, except that it now operates on -the class data members instead of having the timer and counter passed in as -parameters. - -\until }; - -The <tt>main</tt> function is much simpler than before, as it -now declares a local <tt>printer</tt> object before running the io_service as -normal. - -\until } - -See the \ref tuttimer4src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tuttimer3 \n -Next: \ref tuttimer5 \n - -*/ - -/** -\page tuttimer4src Source listing for Timer.4 -\include timer4/timer.cpp -Return to \ref tuttimer4 -*/ - -/** -\page tuttimer5 Timer.5 - Synchronising handlers in multithreaded programs - -This tutorial demonstrates the use of the asio::io_service::strand class to -synchronise callback handlers in a multithreaded program. - -The previous four tutorials avoided the issue of handler synchronisation by -calling the asio::io_service::run() function from one thread only. As you -already know, the asio library provides a guarantee that callback handlers will -<b>only</b> be called from threads that are currently calling -asio::io_service::run(). Consequently, calling asio::io_service::run() from -only one thread ensures that callback handlers cannot run concurrently. - -The single threaded approach is usually the best place to start when -developing applications using asio. The downside is the limitations it places -on programs, particularly servers, including: - -<ul> -<li>Poor responsiveness when handlers can take a long time to complete.</li> -<li>An inability to scale on multiprocessor systems.</li> -</ul> - -If you find yourself running into these limitations, an alternative approach -is to have a pool of threads calling asio::io_service::run(). However, as this -allows handlers to execute concurrently, we need a method of synchronisation -when handlers might be accessing a shared, thread-unsafe resource. - -\dontinclude timer5/timer.cpp -\skip #include - -\until posix_time.hpp - -We start by defining a class called <tt>printer</tt>, similar -to the class in the previous tutorial. This class will extend the previous -tutorial by running two timers in parallel. - -\until public - -In addition to initialising a pair of asio::deadline_timer members, the -constructor initialises the <tt>strand_</tt> member, an object of type -asio::io_service::strand. - -An asio::io_service::strand is an executor that guarantees that, for those -handlers that are dispatched through it, an executing handler will be allowed -to complete before the next one is started. This is guaranteed irrespective of -the number of threads that are calling asio::io_service::run(). Of course, the -handlers may still execute concurrently with other handlers that were -<b>not</b> dispatched through an asio::io_service::strand, or were dispatched -through a different asio::io_service::strand object. - -\until { - -When initiating the asynchronous operations, each callback handler is "bound" -to an asio::io_service::strand object. The -asio::io_service::strand::bind_executor() function returns a new handler that -automatically dispatches its contained handler through the -asio::io_service::strand object. By binding the handlers to the same -asio::io_service::strand, we are ensuring that they cannot execute -concurrently. - -\until } -\until } - -In a multithreaded program, the handlers for asynchronous -operations should be synchronised if they access shared resources. In this -tutorial, the shared resources used by the handlers (<tt>print1</tt> and -<tt>print2</tt>) are <tt>std::cout</tt> and the <tt>count_</tt> data member. - -\until }; - -The <tt>main</tt> function now causes asio::io_service::run() to -be called from two threads: the main thread and one additional thread. This is -accomplished using an asio::thread object. - -Just as it would with a call from a single thread, concurrent calls to -asio::io_service::run() will continue to execute while there is "work" left to -do. The background thread will not exit until all asynchronous operations have -completed. - -\until } - -See the \ref tuttimer5src "full source listing" \n -Return to the \ref index "tutorial index" \n -Previous: \ref tuttimer4 \n - -*/ - -/** -\page tuttimer5src Source listing for Timer.5 -\include timer5/timer.cpp -Return to \ref tuttimer5 -*/ diff --git a/3rdparty/asio/src/examples/cpp03/windows/.gitignore b/3rdparty/asio/src/examples/cpp03/windows/.gitignore deleted file mode 100644 index 180ba886e58..00000000000 --- a/3rdparty/asio/src/examples/cpp03/windows/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.deps -.dirstamp -*.o -*.obj -*.exe -server -*.ilk -*.manifest -*.pdb -*.tds diff --git a/3rdparty/asio/src/examples/cpp03/windows/transmit_file.cpp b/3rdparty/asio/src/examples/cpp03/windows/transmit_file.cpp index 8ca9e1790fc..6026f02ea48 100644 --- a/3rdparty/asio/src/examples/cpp03/windows/transmit_file.cpp +++ b/3rdparty/asio/src/examples/cpp03/windows/transmit_file.cpp @@ -2,7 +2,7 @@ // transmit_file.cpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2021 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) @@ -11,7 +11,7 @@ #include <ctime> #include <iostream> #include <string> -#include <boost/bind.hpp> +#include <boost/bind/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> #include "asio.hpp" @@ -22,9 +22,15 @@ using asio::ip::tcp; using asio::windows::overlapped_ptr; using asio::windows::random_access_handle; +typedef asio::basic_stream_socket<tcp, + asio::io_context::executor_type> tcp_socket; + +typedef asio::basic_socket_acceptor<tcp, + asio::io_context::executor_type> tcp_acceptor; + // A wrapper for the TransmitFile overlapped I/O operation. template <typename Handler> -void transmit_file(tcp::socket& socket, +void transmit_file(tcp_socket& socket, random_access_handle& file, Handler handler) { // Construct an OVERLAPPED-derived object to contain the handler. @@ -65,7 +71,7 @@ public: return pointer(new connection(io_context, filename)); } - tcp::socket& socket() + tcp_socket& socket() { return socket_; } @@ -96,10 +102,10 @@ private: size_t /*bytes_transferred*/) { asio::error_code ignored_ec; - socket_.shutdown(tcp::socket::shutdown_both, ignored_ec); + socket_.shutdown(tcp_socket::shutdown_both, ignored_ec); } - tcp::socket socket_; + tcp_socket socket_; std::string filename_; random_access_handle file_; }; @@ -137,7 +143,7 @@ private: start_accept(); } - tcp::acceptor acceptor_; + tcp_acceptor acceptor_; std::string filename_; }; |
