12#include <userver/compiler/impl/three_way_comparison.hpp>
13#include <userver/storages/redis/fwd.hpp>
15USERVER_NAMESPACE_BEGIN
21namespace storages::
redis {
23inline constexpr std::chrono::milliseconds kDefaultTimeoutSingle{500};
24inline constexpr std::chrono::milliseconds kDefaultTimeoutAll{2000};
25inline constexpr std::size_t kDefaultMaxRetries{4};
33 bool IsAny()
const {
return id_ == -1; }
35#ifdef USERVER_IMPL_HAS_THREE_WAY_COMPARISON
36 auto operator<=>(
const ServerId&)
const =
default;
50 static ServerId Invalid() {
return invalid_; }
52 int64_t GetId()
const {
return id_; }
54 void SetDescription(std::string description)
const;
55 void RemoveDescription()
const;
56 std::string GetDescription()
const;
59 static std::atomic<std::int64_t> next_id_;
66 std::size_t operator()(
ServerId server_id)
const noexcept {
return std::hash<std::size_t>{}(server_id.GetId()); }
142 constexpr CommandControl() =
default;
143 constexpr CommandControl(
144 const std::optional<std::chrono::milliseconds>& timeout_single,
145 const std::optional<std::chrono::milliseconds>& timeout_all,
146 const std::optional<size_t>& max_retries
150#ifdef USERVER_IMPL_HAS_THREE_WAY_COMPARISON
158 std::string ToString()
const;