namespace MQTTnet.Server.Internal; /// /// Helper class that stores subscriptions by their topic hash mask. /// public sealed class TopicHashMaskSubscriptions { public Dictionary> SubscriptionsByHashMask { get; } = new Dictionary>(); public void AddSubscription(MqttSubscription subscription) { if (!SubscriptionsByHashMask.TryGetValue(subscription.TopicHashMask, out var subscriptions)) { subscriptions = new HashSet(); SubscriptionsByHashMask.Add(subscription.TopicHashMask, subscriptions); } subscriptions.Add(subscription); } public void RemoveSubscription(MqttSubscription subscription) { if (SubscriptionsByHashMask.TryGetValue(subscription.TopicHashMask, out var subscriptions)) { subscriptions.Remove(subscription); if (subscriptions.Count == 0) { SubscriptionsByHashMask.Remove(subscription.TopicHashMask); } } } }