Package net.engio.mbassy.subscription
Class Subscription
- java.lang.Object
-
- net.engio.mbassy.subscription.Subscription
-
public class Subscription extends java.lang.Object
A subscription is a thread-safe container that manages exactly one message handler of all registered message listeners of the same class, i.e. all subscribed instances (excluding subclasses) of a SingleMessageHandler.class will be referenced in the subscription created for SingleMessageHandler.class. There will be as many unique subscription objects per message listener class as there are message handlers defined in the message listeners class hierarchy. The subscription provides functionality for message publication by means of delegation to the respective message dispatcher.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
Subscription.Handle
A handle exposes specific functionality of a subscription to be used by clients.
-
Field Summary
Fields Modifier and Type Field Description private SubscriptionContext
context
private IMessageDispatcher
dispatcher
private java.util.UUID
id
protected java.util.Collection<java.lang.Object>
listeners
private java.util.concurrent.CopyOnWriteArrayList<java.lang.Runnable>
onSubscription
static java.util.Comparator<Subscription>
SubscriptionByPriorityDesc
-
Constructor Summary
Constructors Constructor Description Subscription(SubscriptionContext context, IMessageDispatcher dispatcher, java.util.Collection<java.lang.Object> listeners)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
belongsTo(java.lang.Class listener)
Check whether this subscription manages a message handler of the given listener class.boolean
contains(java.lang.Object listener)
Check whether this subscriptions manages the given listener instance.Subscription.Handle
getHandle()
java.lang.Class[]
getHandledMessageTypes()
int
getPriority()
boolean
handlesMessageType(java.lang.Class<?> messageType)
Check whether this subscription manages a specific message type.void
publish(MessagePublication publication, java.lang.Object message)
int
size()
void
subscribe(java.lang.Object o)
boolean
unsubscribe(java.lang.Object existingListener)
-
-
-
Field Detail
-
id
private final java.util.UUID id
-
listeners
protected final java.util.Collection<java.lang.Object> listeners
-
dispatcher
private final IMessageDispatcher dispatcher
-
context
private final SubscriptionContext context
-
onSubscription
private final java.util.concurrent.CopyOnWriteArrayList<java.lang.Runnable> onSubscription
-
SubscriptionByPriorityDesc
public static final java.util.Comparator<Subscription> SubscriptionByPriorityDesc
-
-
Constructor Detail
-
Subscription
Subscription(SubscriptionContext context, IMessageDispatcher dispatcher, java.util.Collection<java.lang.Object> listeners)
-
-
Method Detail
-
belongsTo
public boolean belongsTo(java.lang.Class listener)
Check whether this subscription manages a message handler of the given listener class.
-
contains
public boolean contains(java.lang.Object listener)
Check whether this subscriptions manages the given listener instance.
-
handlesMessageType
public boolean handlesMessageType(java.lang.Class<?> messageType)
Check whether this subscription manages a specific message type.
-
getHandledMessageTypes
public java.lang.Class[] getHandledMessageTypes()
-
publish
public void publish(MessagePublication publication, java.lang.Object message)
-
getPriority
public int getPriority()
-
subscribe
public void subscribe(java.lang.Object o)
-
unsubscribe
public boolean unsubscribe(java.lang.Object existingListener)
-
size
public int size()
-
getHandle
public Subscription.Handle getHandle()
-
-