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)
20 : request_(std::move(request))
21 {}
22
23 void Wait() { request_.Wait(); }
24
25 void IgnoreResult() const { request_.IgnoreResult(); }
26
27 ReplyType Get(const std::string& request_description = {}) {
28 return impl::ParseReply<ReplyType, ReplyType>(request_.GetRaw(), request_description);
29 }
30
31 /// @cond
32 /// Internal helper for WaitAny/WaitAll
33 engine::impl::ContextAccessor* TryGetContextAccessor() noexcept { return request_.TryGetContextAccessor(); }
34 /// @endcond
35
36private:
37 RequestGenericCommon request_;
38};
39
40} // namespace storages::redis
41
42USERVER_NAMESPACE_END