Package io.moquette.broker.subscriptions
Class CTrieSubscriptionDirectory
- java.lang.Object
-
- io.moquette.broker.subscriptions.CTrieSubscriptionDirectory
-
- All Implemented Interfaces:
ISubscriptionsDirectory
public class CTrieSubscriptionDirectory extends Object implements ISubscriptionsDirectory
-
-
Constructor Summary
Constructors Constructor Description CTrieSubscriptionDirectory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(Subscription newSubscription)StringdumpTree()voidinit(ISubscriptionsRepository subscriptionsRepository)Set<String>listAllSessionIds()Set<Subscription>matchQosSharpening(Topic topic)Set<Subscription>matchWithoutQosSharpening(Topic topic)Given a topic string return the clients subscriptions that matches it.voidremoveSubscription(Topic topic, String clientID)Removes subscription from CTrie, adds TNode when the last client unsubscribes, then calls for cleanTomb in a separate atomic CAS operation.intsize()
-
-
-
Method Detail
-
init
public void init(ISubscriptionsRepository subscriptionsRepository)
- Specified by:
initin interfaceISubscriptionsDirectory
-
listAllSessionIds
public Set<String> listAllSessionIds()
- Specified by:
listAllSessionIdsin interfaceISubscriptionsDirectory- Returns:
- the list of client ids that has a subscription stored.
-
matchWithoutQosSharpening
public Set<Subscription> matchWithoutQosSharpening(Topic topic)
Given a topic string return the clients subscriptions that matches it. Topic string can't contain character # and + because they are reserved to listeners subscriptions, and not topic publishing.- Specified by:
matchWithoutQosSharpeningin interfaceISubscriptionsDirectory- Parameters:
topic- to use fo searching matching subscriptions.- Returns:
- the list of matching subscriptions, or empty if not matching.
-
matchQosSharpening
public Set<Subscription> matchQosSharpening(Topic topic)
- Specified by:
matchQosSharpeningin interfaceISubscriptionsDirectory
-
add
public void add(Subscription newSubscription)
- Specified by:
addin interfaceISubscriptionsDirectory
-
removeSubscription
public void removeSubscription(Topic topic, String clientID)
Removes subscription from CTrie, adds TNode when the last client unsubscribes, then calls for cleanTomb in a separate atomic CAS operation.- Specified by:
removeSubscriptionin interfaceISubscriptionsDirectory- Parameters:
topic- the subscription's topic to remove.clientID- the Id of client owning the subscription.
-
size
public int size()
- Specified by:
sizein interfaceISubscriptionsDirectory
-
dumpTree
public String dumpTree()
- Specified by:
dumpTreein interfaceISubscriptionsDirectory
-
-