10USERVER_NAMESPACE_BEGIN
12namespace storages::
redis {
18class SubscriptionTokenImplBase {
20 SubscriptionTokenImplBase() =
default;
22 SubscriptionTokenImplBase(SubscriptionTokenImplBase&&) =
delete;
23 SubscriptionTokenImplBase& operator=(SubscriptionTokenImplBase&&) =
delete;
25 SubscriptionTokenImplBase(
const SubscriptionTokenImplBase&) =
delete;
26 SubscriptionTokenImplBase& operator=(
const SubscriptionTokenImplBase&&) =
delete;
28 virtual ~SubscriptionTokenImplBase();
30 virtual void SetMaxQueueLength(size_t length) = 0;
32 virtual void Unsubscribe() = 0;
42class [[nodiscard]] SubscriptionToken
final {
44 using OnMessageCb = std::function<
void(
const std::string& channel,
const std::string& message)>;
46 std::function<
void(
const std::string& pattern,
const std::string& channel,
const std::string& message)>;
49 SubscriptionToken(SubscriptionToken&&)
noexcept;
57 SubscriptionToken& operator=(SubscriptionToken&&)
noexcept;
70 bool IsEmpty()
const noexcept {
return impl_ ==
nullptr; }
73 std::unique_ptr<impl::SubscriptionTokenImplBase> impl_;