From 7b8617e60dd0be81b392167e7a19fa2e7d82d60e Mon Sep 17 00:00:00 2001 From: muXxer Date: Sat, 21 Jan 2023 14:14:26 +0100 Subject: [PATCH] Add ClientSubscribedToTopic to SubscriptionManager --- .../subscriptionmanager/subscription_manager.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/core/subscriptionmanager/subscription_manager.go b/core/subscriptionmanager/subscription_manager.go index a2cd0bd03..d5a58db16 100644 --- a/core/subscriptionmanager/subscription_manager.go +++ b/core/subscriptionmanager/subscription_manager.go @@ -316,13 +316,24 @@ func (s *SubscriptionManager[C, T]) Unsubscribe(clientID C, topic T) { s.events.TopicUnsubscribed.Trigger(&ClientTopicEvent[C, T]{ClientID: clientID, Topic: topic}) } -func (s *SubscriptionManager[C, T]) HasSubscribers(topic T) bool { +func (s *SubscriptionManager[C, T]) TopicHasSubscribers(topic T) bool { s.RLock() defer s.RUnlock() - _, hasSubscribers := s.topics.Get(topic) + return s.topics.Has(topic) +} + +func (s *SubscriptionManager[C, T]) ClientSubscribedToTopic(clientID C, topic T) bool { + s.RLock() + defer s.RUnlock() + + // check if the client is connected + subscribedTopics, exists := s.subscribers.Get(clientID) + if !exists { + return false + } - return hasSubscribers + return subscribedTopics.Has(topic) } // SubscribersSize returns the size of the underlying map of the SubscriptionManager.