Skip to content

Commit

Permalink
awaitable examples.
Browse files Browse the repository at this point in the history
Closes #2104.
  • Loading branch information
klemens-morgenstern committed Oct 29, 2022
1 parent 1fc3407 commit 09bfca1
Show file tree
Hide file tree
Showing 26 changed files with 2,293 additions and 0 deletions.
28 changes: 28 additions & 0 deletions doc/qbk/02_examples/_examples.qbk
Expand Up @@ -40,6 +40,10 @@ used to evaluate robustness. All asynchronous clients support timeouts.
[HTTP, coroutine]
[[path_link example/http/client/coro/http_client_coro.cpp http_client_coro.cpp]]
[[path_link example/http/client/coro-ssl/http_client_coro_ssl.cpp http_client_coro_ssl.cpp]]
][
[WebSocket, C++20 coroutine]
[[path_link example/http/client/awaitable/http_client_awaitable.cpp http_client_awaitable.cpp]]
[]
][
[HTTP crawl (asynchronous)]
[[path_link example/http/client/crawl/http_crawl.cpp http_crawl.cpp]]
Expand Down Expand Up @@ -72,6 +76,10 @@ before disconnecting. All asynchronous clients support timeouts.
[WebSocket, coroutine]
[[path_link example/websocket/client/coro/websocket_client_coro.cpp websocket_client_coro.cpp]]
[[path_link example/websocket/client/coro-ssl/websocket_client_coro_ssl.cpp websocket_client_coro_ssl.cpp]]
][
[WebSocket, C++20 coroutine]
[[path_link example/websocket/client/awaitable/websocket_client_awaitable.cpp websocket_client_awaitable.cpp]]
[]
]]

[endsect]
Expand Down Expand Up @@ -101,6 +109,9 @@ command line. All asynchronous servers support timeouts.
[HTTP, stackless coroutine]
[[path_link example/http/server/stackless/http_server_stackless.cpp http_server_stackless.cpp]]
[[path_link example/http/server/stackless-ssl/http_server_stackless_ssl.cpp http_server_stackless_ssl.cpp]]
][
[HTTP, C++ 20 coroutine]
[[path_link example/http/server/awaitable/http_server_awaitable.cpp http_server_awaitable.cpp]]
][
[HTTP, fast (optimized for speed)]
[[path_link example/http/server/fast/http_server_fast.cpp http_server_fast.cpp]]
Expand Down Expand Up @@ -137,6 +148,10 @@ support timeouts.
[WebSocket, stackless coroutine]
[[path_link example/websocket/server/stackless/websocket_server_stackless.cpp websocket_server_stackless.cpp]]
[[path_link example/websocket/server/stackless-ssl/websocket_server_stackless_ssl.cpp websocket_server_stackless_ssl.cpp]]
][
[HTTP, C++ 20 coroutine]
[[path_link example/websocket/server/awaitable/websocket_server_awaitable.cpp websocket_server_awaitable.cpp]]
[]
][
[WebSocket, fast (suited for benchmarks)]
[[path_link example/websocket/server/fast/websocket_server_fast.cpp websocket_server_fast.cpp]]
Expand Down Expand Up @@ -178,6 +193,19 @@ and illustrate the implementation of advanced features.
]]
[[path_link example/advanced/server-flex/advanced_server_flex.cpp advanced_server_flex.cpp]]
][
[Advanced, flex (plain + SSL) with awaitable]
[[itemized_list
[Timeouts]
[Multi-threaded]
[HTTP pipelining]
[Parser-oriented HTTP reading]
[Dual protocols: HTTP and WebSocket]
[Flexible ports: plain and SSL on the same port]
[Clean exit via SIGINT (CTRL+C) or SIGTERM (kill)]
[Usage of cancellation_signals]
]]
[[path_link example/advanced/server-flex-awaitable/advanced_server_flex_awaitable.cpp advanced_server_flex_awaitable.cpp]]
][
[Chat Server, multi-threaded]
[[itemized_list
[Multi-threaded]
Expand Down
1 change: 1 addition & 0 deletions example/advanced/CMakeLists.txt
Expand Up @@ -9,3 +9,4 @@

add_subdirectory (server)
add_subdirectory (server-flex)
add_subdirectory (server-flex-awaitable)
3 changes: 3 additions & 0 deletions example/advanced/Jamfile
Expand Up @@ -11,3 +11,6 @@ build-project server ;

# SSL
build-project server-flex ;

# C++20
build-project server-flex-awaitable ;
31 changes: 31 additions & 0 deletions example/advanced/server-flex-awaitable/CMakeLists.txt
@@ -0,0 +1,31 @@
#
# Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Official repository: https://github.com/boostorg/beast
#

if (OPENSSL_FOUND)
GroupSources(include/boost/beast beast)
GroupSources(example/common common)
GroupSources(example/advanced/server-flex-awaitable "/")

add_executable (advanced-server-flex-awaitable
${BOOST_BEAST_FILES}
${PROJECT_SOURCE_DIR}/example/common/server_certificate.hpp
Jamfile
advanced_server_flex_awaitable.cpp
)

set_property(TARGET advanced-server-flex-awaitable PROPERTY FOLDER "example-advanced-server")

target_link_libraries (advanced-server-flex-awaitable
OpenSSL::SSL OpenSSL::Crypto
lib-asio
lib-asio-ssl
lib-beast
)

endif()
22 changes: 22 additions & 0 deletions example/advanced/server-flex-awaitable/Jamfile
@@ -0,0 +1,22 @@
#
# Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Official repository: https://github.com/boostorg/beast
#

import ac ;

project
: requirements
[ ac.check-library /boost/beast//lib-asio-ssl : <library>/boost/beast//lib-asio-ssl/<link>static : <build>no ]
;

exe advanced-server-flex-awaitable :
advanced_server_flex_awaitable.cpp
:
<variant>coverage:<build>no
<variant>ubasan:<build>no
;

0 comments on commit 09bfca1

Please sign in to comment.