X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fboost%2Flibs%2Fasio%2Fexample%2Fcpp17%2Fcoroutines_ts%2Fecho_server.cpp;h=8a4c7c4f103b9bd08dc40172a3232e22f83cdb82;hb=1e59de90020f1d8d374046ef9cca56ccd4e806e2;hp=7f663effe9f6137cc5eb0a736c95756d0a3f0e03;hpb=11fdf7f228cb605e22a0e495ebabd3329db96b81;p=ceph.git diff --git a/ceph/src/boost/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp b/ceph/src/boost/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp index 7f663effe..8a4c7c4f1 100644 --- a/ceph/src/boost/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp +++ b/ceph/src/boost/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp @@ -2,14 +2,14 @@ // echo_server.cpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the 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 -#include +#include +#include #include #include #include @@ -17,25 +17,26 @@ #include using boost::asio::ip::tcp; -using boost::asio::experimental::co_spawn; -using boost::asio::experimental::detached; -namespace this_coro = boost::asio::experimental::this_coro; +using boost::asio::awaitable; +using boost::asio::co_spawn; +using boost::asio::detached; +using boost::asio::use_awaitable; +namespace this_coro = boost::asio::this_coro; -template - using awaitable = boost::asio::experimental::awaitable< - T, boost::asio::io_context::executor_type>; +#if defined(BOOST_ASIO_ENABLE_HANDLER_TRACKING) +# define use_awaitable \ + boost::asio::use_awaitable_t(__FILE__, __LINE__, __PRETTY_FUNCTION__) +#endif awaitable echo(tcp::socket socket) { - auto token = co_await this_coro::token(); - try { char data[1024]; for (;;) { - std::size_t n = co_await socket.async_read_some(boost::asio::buffer(data), token); - co_await async_write(socket, boost::asio::buffer(data, n), token); + std::size_t n = co_await socket.async_read_some(boost::asio::buffer(data), use_awaitable); + co_await async_write(socket, boost::asio::buffer(data, n), use_awaitable); } } catch (std::exception& e) @@ -46,19 +47,12 @@ awaitable echo(tcp::socket socket) awaitable listener() { - auto executor = co_await this_coro::executor(); - auto token = co_await this_coro::token(); - - tcp::acceptor acceptor(executor.context(), {tcp::v4(), 55555}); + auto executor = co_await this_coro::executor; + tcp::acceptor acceptor(executor, {tcp::v4(), 55555}); for (;;) { - tcp::socket socket = co_await acceptor.async_accept(token); - co_spawn(executor, - [socket = std::move(socket)]() mutable - { - return echo(std::move(socket)); - }, - detached); + tcp::socket socket = co_await acceptor.async_accept(use_awaitable); + co_spawn(executor, echo(std::move(socket)), detached); } } @@ -71,7 +65,7 @@ int main() boost::asio::signal_set signals(io_context, SIGINT, SIGTERM); signals.async_wait([&](auto, auto){ io_context.stop(); }); - co_spawn(io_context, listener, detached); + co_spawn(io_context, listener(), detached); io_context.run(); }