Package net.engio.mbassy.subscription
Class SubscriptionManager
- java.lang.Object
-
- net.engio.mbassy.subscription.SubscriptionManager
-
public class SubscriptionManager extends java.lang.Object
The subscription managers responsibility is to consistently handle and synchronize the message listener subscription process. It provides fast lookup of existing subscriptions when another instance of an already known listener is subscribed and takes care of creating new set of subscriptions for any unknown class that defines message handlers.
-
-
Field Summary
Fields Modifier and Type Field Description private MetadataReader
metadataReader
private StrongConcurrentSet<java.lang.Class>
nonListeners
private java.util.concurrent.locks.ReentrantReadWriteLock
readWriteLock
private BusRuntime
runtime
private SubscriptionFactory
subscriptionFactory
private java.util.Map<java.lang.Class,Subscription[]>
subscriptionsPerListener
private java.util.Map<java.lang.Class,java.util.ArrayList<Subscription>>
subscriptionsPerMessage
-
Constructor Summary
Constructors Constructor Description SubscriptionManager(MetadataReader metadataReader, SubscriptionFactory subscriptionFactory, BusRuntime runtime)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Subscription[]
getSubscriptionsByListener(java.lang.Object listener)
java.util.Collection<Subscription>
getSubscriptionsByMessageType(java.lang.Class messageType)
void
subscribe(java.lang.Object listener)
private void
subscribe(java.lang.Object listener, Subscription[] subscriptions)
boolean
unsubscribe(java.lang.Object listener)
-
-
-
Field Detail
-
metadataReader
private final MetadataReader metadataReader
-
subscriptionsPerMessage
private final java.util.Map<java.lang.Class,java.util.ArrayList<Subscription>> subscriptionsPerMessage
-
subscriptionsPerListener
private final java.util.Map<java.lang.Class,Subscription[]> subscriptionsPerListener
-
nonListeners
private final StrongConcurrentSet<java.lang.Class> nonListeners
-
subscriptionFactory
private final SubscriptionFactory subscriptionFactory
-
readWriteLock
private final java.util.concurrent.locks.ReentrantReadWriteLock readWriteLock
-
runtime
private final BusRuntime runtime
-
-
Constructor Detail
-
SubscriptionManager
public SubscriptionManager(MetadataReader metadataReader, SubscriptionFactory subscriptionFactory, BusRuntime runtime)
-
-
Method Detail
-
unsubscribe
public boolean unsubscribe(java.lang.Object listener)
-
getSubscriptionsByListener
private Subscription[] getSubscriptionsByListener(java.lang.Object listener)
-
subscribe
public void subscribe(java.lang.Object listener)
-
subscribe
private void subscribe(java.lang.Object listener, Subscription[] subscriptions)
-
getSubscriptionsByMessageType
public java.util.Collection<Subscription> getSubscriptionsByMessageType(java.lang.Class messageType)
-
-