7#include <boost/asio.hpp>
8#if defined(BOOST_ASIO_HAS_CO_AWAIT)
13namespace net = boost::asio;
14namespace resp3 = aedis::resp3;
15using resolver = net::use_awaitable_t<>::as_default_on_t<net::ip::tcp::resolver>;
16using tcp_socket = net::use_awaitable_t<>::as_default_on_t<net::ip::tcp::socket>;
20auto co_main(std::string host, std::string port) -> net::awaitable<void>
22 auto ex =
co_await net::this_coro::executor;
25 auto const addrs =
co_await resv.async_resolve(host, port);
26 tcp_socket socket{ex};
27 co_await net::async_connect(socket, addrs);
32 req.
push(
"PING",
"Hello world");
37 std::string buffer, resp;
40 auto dbuffer = net::dynamic_buffer(buffer);
45 std::cout <<
"Ping: " << resp << std::endl;
void push(std::string_view cmd, Ts const &... args)
Appends a new command to the end of the request.
auto adapt2() noexcept
Creates a dummy response adapter.
auto async_write(AsyncWriteStream &stream, Request const &req, CompletionToken &&token=boost::asio::default_completion_token_t< typename AsyncWriteStream::executor_type >{})
Writes a request asynchronously.
auto async_read(AsyncReadStream &stream, DynamicBuffer buffer, ResponseAdapter adapter=ResponseAdapter{}, CompletionToken &&token=boost::asio::default_completion_token_t< typename AsyncReadStream::executor_type >{})
Reads a complete response to a Redis command asynchronously.