diff options
author | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
---|---|---|
committer | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
commit | 06e5c21a835c0e923506c4ff27929f34e00761c2 (patch) | |
tree | 75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /library/cpp/threading/future/subscription/subscription.cpp | |
parent | 03f024c4412e3aa613bb543cf1660176320ba8f4 (diff) | |
download | ydb-06e5c21a835c0e923506c4ff27929f34e00761c2.tar.gz |
fix ya.make
Diffstat (limited to 'library/cpp/threading/future/subscription/subscription.cpp')
-rw-r--r-- | library/cpp/threading/future/subscription/subscription.cpp | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/library/cpp/threading/future/subscription/subscription.cpp b/library/cpp/threading/future/subscription/subscription.cpp deleted file mode 100644 index a98b4a4f036..00000000000 --- a/library/cpp/threading/future/subscription/subscription.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "subscription.h" - -namespace NThreading { - -bool operator==(TSubscriptionId const& l, TSubscriptionId const& r) noexcept { - return l.StateId() == r.StateId() && l.SubId() == r.SubId(); -} - -bool operator!=(TSubscriptionId const& l, TSubscriptionId const& r) noexcept { - return !(l == r); -} - -void TSubscriptionManager::TSubscription::operator()() { - Callback(); -} - -TSubscriptionManagerPtr TSubscriptionManager::NewInstance() { - return new TSubscriptionManager(); -} - -TSubscriptionManagerPtr TSubscriptionManager::Default() { - static auto instance = NewInstance(); - return instance; -} - -void TSubscriptionManager::Unsubscribe(TSubscriptionId id) { - with_lock(Lock) { - UnsubscribeImpl(id); - } -} - -void TSubscriptionManager::Unsubscribe(TVector<TSubscriptionId> const& ids) { - with_lock(Lock) { - UnsubscribeImpl(ids); - } -} - -void TSubscriptionManager::OnCallback(TFutureStateId stateId) noexcept { - THashMap<ui64, TSubscription> subscriptions; - with_lock(Lock) { - auto const it = Subscriptions.find(stateId); - Y_VERIFY(it != Subscriptions.end(), "The callback has been triggered more than once"); - subscriptions.swap(it->second); - Subscriptions.erase(it); - } - for (auto& [_, subscription] : subscriptions) { - subscription(); - } -} - -void TSubscriptionManager::UnsubscribeImpl(TSubscriptionId id) { - auto const it = Subscriptions.find(id.StateId()); - if (it == std::end(Subscriptions)) { - return; - } - it->second.erase(id.SubId()); -} - -void TSubscriptionManager::UnsubscribeImpl(TVector<TSubscriptionId> const& ids) { - for (auto const& id : ids) { - UnsubscribeImpl(id); - } -} - -} |