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/storages/redis/parse_reply.hpp>
7#include <userver/storages/redis/reply.hpp>
8#include <userver/storages/redis/request.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12namespace storages::redis {
13
14/// @brief Redis future for generic command responses.
15/// Can be used to request custom modules commands or unsupported yet commands
16template <typename ReplyType>
17class [[nodiscard]] RequestGeneric final {
18public:
19 explicit RequestGeneric(RequestGenericCommon&& request) : request_(std::move(request)) {}
20
21 void Wait() { request_.Wait(); }
22
23 void IgnoreResult() const { request_.IgnoreResult(); }
24
25 ReplyType Get(const std::string& request_description = {}) {
26 return impl::ParseReply<ReplyType, ReplyType>(request_.GetRaw(), request_description);
27 }
28
29 /// @cond
30 /// Internal helper for WaitAny/WaitAll
31 engine::impl::ContextAccessor* TryGetContextAccessor() noexcept { return request_.TryGetContextAccessor(); }
32 /// @endcond
33
34private:
35 RequestGenericCommon request_;
36};
37
38} // namespace storages::redis
39
40USERVER_NAMESPACE_END