Module org.refcodes.eventbus
Package org.refcodes.eventbus
Class AbstractEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H>
java.lang.Object
org.refcodes.eventbus.AbstractEventBus<E,O,MATCH,META,H>
- Type Parameters:
E
- the element typeO
- the generic typeMATCH
- the generic typeMETA
- the generic typeH
- the generic type
- All Implemented Interfaces:
org.refcodes.component.HandleLookup<H,O>
,BusObservable<E,O,MATCH,H>
,BusPublisher<E>
,DispatchStrategyAccessor
,EventBus<E,O,MATCH,META,H>
,org.refcodes.matcher.Matcher<E>
,org.refcodes.observer.EventMatcher<E>
,org.refcodes.observer.Publisher<E>
- Direct Known Subclasses:
SimpleEventBus
public abstract class AbstractEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H> extends Object implements EventBus<E,O,MATCH,META,H>
The Class AbstractEventBus.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.eventbus.DispatchStrategyAccessor
DispatchStrategyAccessor.DispatchStrategyMutator, DispatchStrategyAccessor.DispatchStrategyProperty
-
Constructor Summary
Constructors Constructor Description AbstractEventBus(int aCorePoolSize, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, int aCorePoolSize, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator. -
Method Summary
Modifier and Type Method Description protected void
cascadeDispatch(E aEvent, Object aMonitor)
Hook implementing the cascaded dispatch method as ofDispatchStrategy.CASCADE
DispatchStrategy
getDispatchStrategy()
Retrieves theDispatchStrategy
property from the property.boolean
hasHandle(H aHandle)
boolean
isMatching(E aEvent)
O
lookupHandle(H aHandle)
protected void
parallelDispatch(E aEvent)
Hook implementing the parallel dispatch method as ofDispatchStrategy.PARALLEL
void
publishEvent(E aEvent, DispatchStrategy aDispatchStrategy)
Publishes an event using the givenDispatchStrategy
.O
removeHandle(H aHandle)
protected void
sequentialDispatch(E aEvent)
Hook implementing the sequential dispatch method as ofDispatchStrategy.SEQUENTIAL
H
subscribe(MATCH aEventMatcher, O aObserver)
Subscribes a listener to the event bus.void
unsubscribeAll(O aObserver)
Unsubscribes all registrations to a specific listener, even if that listener is involved in several subscriptions.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.refcodes.eventbus.BusObservable
subscribe, subscribe
Methods inherited from interface org.refcodes.eventbus.EventBus
onAction, onAction, onActions, onActions, onAlias, onAlias, onCatchAll, onChannel, onChannel, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onGroup, onGroup, onType, onUniversalId, onUniversalId, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent
-
Constructor Details
-
AbstractEventBus
public AbstractEventBus(int aCorePoolSize, org.refcodes.component.HandleGenerator<H> aHandleGenerator)Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.- Parameters:
aCorePoolSize
- The number of threads to keep in the pool, even if they are idle.aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, int aCorePoolSize, org.refcodes.component.HandleGenerator<H> aHandleGenerator)Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.aCorePoolSize
- The number of threads to keep in the pool, even if they are idle.aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.- Parameters:
aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.- Parameters:
aHandleGenerator
- The handle generator to be used.aExecutorService
- TheExecutorService
to be used when creating threads.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator)Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.aHandleGenerator
- The handle generator to be used.aExecutorService
- TheExecutorService
to be used when creating threads.
-
-
Method Details
-
isMatching
-
subscribe
Subscribes a listener to the event bus. In case the handle is being ignored, use the "unsubscribeAll" method where all subscriptions for a listener are removed.- Specified by:
subscribe
in interfaceBusObservable<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData>
- Parameters:
aEventMatcher
- TheEventMatcher
to guard theObserver
.aObserver
- TheObserver
to subscribe.- Returns:
- A handle to unsubscribe this combination.
-
unsubscribeAll
Unsubscribes all registrations to a specific listener, even if that listener is involved in several subscriptions.- Specified by:
unsubscribeAll
in interfaceBusObservable<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData>
- Parameters:
aObserver
- the observer
-
hasHandle
-
lookupHandle
-
removeHandle
-
getDispatchStrategy
Retrieves theDispatchStrategy
property from the property. Determines in whichDispatchStrategy
status a component is in.- Specified by:
getDispatchStrategy
in interfaceDispatchStrategyAccessor
- Returns:
- Returns the
DispatchStrategy
property stored by the property.
-
publishEvent
Publishes an event using the givenDispatchStrategy
.- Specified by:
publishEvent
in interfaceEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H>
- Parameters:
aEvent
- aEvent The event to be published.aDispatchStrategy
- TheDispatchStrategy
to be used when publishing the event.
-
sequentialDispatch
Hook implementing the sequential dispatch method as ofDispatchStrategy.SEQUENTIAL
- Parameters:
aEvent
- The event to be dispatched sequentially.
-
parallelDispatch
Hook implementing the parallel dispatch method as ofDispatchStrategy.PARALLEL
- Parameters:
aEvent
- The event to be dispatched sequentially.
-
cascadeDispatch
Hook implementing the cascaded dispatch method as ofDispatchStrategy.CASCADE
- Parameters:
aEvent
- The event to be dispatched cascading.aMonitor
- The monitor used for synchronizing this cascade.
-