userver: userver/storages/redis/request_generic.hpp Source File
Loading...
Searching...
No Matches
request_generic.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file
4/// @brief @copybrief storages::redis::RequestGeneric
5
6#include <userver/compiler/impl/lifetime.hpp>
7#include <userver/storages/redis/parse_reply.hpp>
8#include <userver/storages/redis/reply.hpp>
9#include <userver/storages/redis/request.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace storages::redis {
14
15/// @brief Redis future for generic command responses.
16/// Can be used to request custom modules commands or unsupported yet commands
17template <typename ReplyType>
18class [[nodiscard]] RequestGeneric final {
19public:
20 explicit RequestGeneric(RequestGenericCommon&& request)
21 : request_(std::move(request))
22 {}
23
24 void Wait() { request_.Wait(); }
25
26 void IgnoreResult() const { request_.IgnoreResult(); }
27
28 ReplyType Get(const std::string& request_description = {}) {
29 return impl::ParseReply<ReplyType, ReplyType>(request_.GetRaw(), request_description);
30 }
31
32 /// Satisfies @ref engine::Awaitable, for use with @ref engine::WaitAnyContext and friends.
33 engine::AwaitableToken GetAwaitableToken() noexcept USERVER_IMPL_LIFETIME_BOUND {
34 return request_.GetAwaitableToken();
35 }
36
37private:
38 RequestGenericCommon request_;
39};
40
41} // namespace storages::redis
42
43USERVER_NAMESPACE_END