12 #include <aedis/aedis.hpp>
13 #include <aedis/src.hpp>
15 #include "lib/net_utils.hpp"
17 namespace resp3 = aedis::resp3;
22 namespace net = aedis::net;
23 using net::async_write;
25 using net::dynamic_buffer;
51 auto const* end = data + size;
52 auto const* pos = std::find(data, end,
'\t');
55 auto const res1 = std::from_chars(data, pos, obj.a);
56 if (res1.ec != std::errc()) {
61 auto const res2 = std::from_chars(pos + 1, end, obj.b);
62 if (res2.ec != std::errc()) {
68 net::awaitable<void> serialization()
71 auto socket = co_await connect();
77 sr.push(command::hello, 3);
78 sr.push(command::flushall);
79 sr.push(command::set,
"key", obj);
80 sr.push(command::get,
"key");
81 sr.push(command::quit);
82 co_await async_write(socket, buffer(request));
89 co_await resp3::async_read(socket, dynamic_buffer(buffer));
90 co_await resp3::async_read(socket, dynamic_buffer(buffer));
91 co_await resp3::async_read(socket, dynamic_buffer(buffer));
92 co_await resp3::async_read(socket, dynamic_buffer(buffer),
adapt(get));
93 co_await resp3::async_read(socket, dynamic_buffer(buffer));
96 std::cout <<
"get: a = " <<
get.a <<
", b = " <<
get.b <<
"\n";
98 }
catch (std::exception
const& e) {
99 std::cerr << e.what() << std::endl;
107 co_spawn(ioc, serialization(), net::detached);
auto adapt() noexcept
Creates a void response adapter.
std::error_code make_error_code(error e)
Converts an error in an std::error_code object.
resp3::serializer< std::string, command > make_serializer(std::basic_string< CharT, Traits, Allocator > &storage)
Creates a serializer for a std::string.
char const * to_string(command c)
Converts a command to a string.
@ get
https://redis.io/commands/get