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);
}
}
}
}