summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/src/examples/cpp03
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/src/examples/cpp03')
-rw-r--r--3rdparty/asio/src/examples/cpp03/Makefile.am5
-rw-r--r--3rdparty/asio/src/examples/cpp03/Makefile.in2339
-rw-r--r--3rdparty/asio/src/examples/cpp03/allocation/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/allocation/server.cpp103
-rw-r--r--3rdparty/asio/src/examples/cpp03/buffers/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/buffers/reference_counted.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/chat/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/chat/chat_client.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/chat/chat_message.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/chat/chat_server.cpp10
-rw-r--r--3rdparty/asio/src/examples/cpp03/chat/posix_chat_client.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/fork/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/fork/daemon.cpp9
-rw-r--r--3rdparty/asio/src/examples/cpp03/fork/process_per_connection.cpp11
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/client/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/client/async_client.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/doc_root/data_1K.html28
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/doc_root/data_2K.html49
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/doc_root/data_4K.html91
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/doc_root/data_8K.html175
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/connection.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/connection.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/connection_manager.cpp6
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/connection_manager.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/main.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/mime_types.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/mime_types.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/reply.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/reply.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/request.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/request_handler.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/request_handler.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/request_parser.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/request_parser.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server/server.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/connection.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/connection.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.cpp7
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/io_context_pool.hpp9
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/main.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/mime_types.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/mime_types.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/reply.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/reply.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/request.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/request_handler.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/request_handler.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/request_parser.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/request_parser.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/server.cpp6
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server2/server.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/connection.cpp32
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/connection.hpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/main.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/mime_types.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/mime_types.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/reply.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/reply.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/request.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/request_handler.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/request_handler.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/request_parser.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/request_parser.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server3/server.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/file_handler.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/file_handler.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/main.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/mime_types.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/mime_types.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/reply.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/reply.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/request.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/request_parser.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/request_parser.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/http/server4/server.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/icmp/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/icmp/icmp_header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/icmp/ipv4_header.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/icmp/ping.cpp26
-rw-r--r--3rdparty/asio/src/examples/cpp03/invocation/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp69
-rw-r--r--3rdparty/asio/src/examples/cpp03/iostreams/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/iostreams/daytime_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/iostreams/daytime_server.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/iostreams/http_client.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/local/.gitignore13
-rw-r--r--3rdparty/asio/src/examples/cpp03/local/connect_pair.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/local/iostream_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/local/stream_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/local/stream_server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/multicast/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/multicast/receiver.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/multicast/sender.cpp9
-rw-r--r--3rdparty/asio/src/examples/cpp03/nonblocking/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp14
-rw-r--r--3rdparty/asio/src/examples/cpp03/porthopper/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/porthopper/client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/porthopper/protocol.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/porthopper/server.cpp22
-rw-r--r--3rdparty/asio/src/examples/cpp03/serialization/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/serialization/client.cpp6
-rw-r--r--3rdparty/asio/src/examples/cpp03/serialization/connection.hpp10
-rw-r--r--3rdparty/asio/src/examples/cpp03/serialization/server.cpp8
-rw-r--r--3rdparty/asio/src/examples/cpp03/serialization/stock.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/basic_logger.hpp14
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/daytime_client.cpp12
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/logger.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/logger_service.cpp8
-rw-r--r--3rdparty/asio/src/examples/cpp03/services/logger_service.hpp32
-rw-r--r--3rdparty/asio/src/examples/cpp03/socks4/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/socks4/socks4.hpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/socks4/sync_client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/spawn/.gitignore12
-rw-r--r--3rdparty/asio/src/examples/cpp03/spawn/echo_server.cpp22
-rw-r--r--3rdparty/asio/src/examples/cpp03/spawn/parallel_grep.cpp8
-rw-r--r--3rdparty/asio/src/examples/cpp03/ssl/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/ssl/README2
-rw-r--r--3rdparty/asio/src/examples/cpp03/ssl/client.cpp7
-rw-r--r--3rdparty/asio/src/examples/cpp03/ssl/server.cpp4
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/.gitignore11
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp53
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp207
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp201
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp108
-rw-r--r--3rdparty/asio/src/examples/cpp03/timeouts/server.cpp72
-rw-r--r--3rdparty/asio/src/examples/cpp03/timers/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/timers/tick_count_timer.cpp123
-rw-r--r--3rdparty/asio/src/examples/cpp03/timers/time_t_timer.cpp83
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime1/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime1/client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime2/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime2/server.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime3/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime3/server.cpp10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime4/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime4/client.cpp2
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime5/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime5/server.cpp9
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime6/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime6/server.cpp6
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime7/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime7/server.cpp12
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/daytime_dox.txt502
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/index_dox.txt48
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer1/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer1/timer.cpp5
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer2/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer2/timer.cpp5
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer3/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer3/timer.cpp11
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer4/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer4/timer.cpp11
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer5/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer5/timer.cpp21
-rw-r--r--3rdparty/asio/src/examples/cpp03/tutorial/timer_dox.txt383
-rw-r--r--3rdparty/asio/src/examples/cpp03/windows/.gitignore10
-rw-r--r--3rdparty/asio/src/examples/cpp03/windows/transmit_file.cpp20
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_;
};