Interface EventManager
-
- All Known Implementing Classes:
QueueDrivenEventManager
public interface EventManager
Manages subscriptions to and delivery of events. Each event type is defined by its class. Each listener is subscribed to events of one type of event class. All event delivery will happen on-queue (seeSession.queue()
). Subscriptions and un-subscriptions may happen on or off-queue.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
EventManager.ListenerExceptionHandler
Handler that will be called in a listener throws any Throwable while receiving an event.static interface
EventManager.Subscription
Represents a subscription of a listener that has been subscribed to an event.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description <E> void
post(E event)
Post an event to all subscribers of the given event type.<E> void
post(java.lang.Class<E> type, E event)
Post an event object and specify the precise type of listeners to deliver to.<E> EventManager.Subscription
subscribe(java.lang.Class<E> eventType, java.util.function.Consumer<E> eventConsumer)
Create a subscription for the given event type.
-
-
-
Method Detail
-
post
<E> void post(@Nonnull E event)
Post an event to all subscribers of the given event type. Subscribers will receive notification on-queue. If the calling thread is already executing on-queue, then delivery will happen synchronously, otherwise, this call will return immediately and notification will happen asynchronously on the execution queue.- Parameters:
event
- The event to post. The type of this object will determine which listeners are notified.
-
post
<E> void post(@Nonnull java.lang.Class<E> type, @Nonnull E event)
Post an event object and specify the precise type of listeners to deliver to. Useful for when you are posting a subclass or implementation of the type being listened to
-
subscribe
<E> EventManager.Subscription subscribe(@Nonnull java.lang.Class<E> eventType, @Nonnull java.util.function.Consumer<E> eventConsumer)
Create a subscription for the given event type. Events of this type will be delivered to the given consumer until theEventManager.Subscription.unsubscribe()
method is called.- Parameters:
eventType
- The type of event to subscribe to.eventConsumer
- The listener which will be invoked with any events of the given type that are posted to this event manager. Consumer will always be invoked on the session's queue.- Returns:
- A Subscription object that serves as an un-subscribe callback method.
-
-