public class JetlangEventDispatcher extends Object implements EventDispatcher
| Modifier and Type | Field and Description |
|---|---|
private List<EventHandler> |
anyHandler |
private Lane<String,ExecutorService> |
dispatcherLane |
private Map<EventHandler,org.jetlang.core.Disposable> |
disposableHandlerMap
This Map holds event handlers and their corresponding
Disposable
objects. |
private org.jetlang.channels.MemoryChannel<Event> |
eventQueue |
private org.jetlang.fibers.Fiber |
fiber |
private Map<Integer,List<EventHandler>> |
handlersByEventType |
private boolean |
isCloseCalled |
private static org.slf4j.Logger |
LOG |
| Constructor and Description |
|---|
JetlangEventDispatcher(Map<Integer,List<EventHandler>> listenersByEventType,
List<EventHandler> anyHandler,
org.jetlang.channels.MemoryChannel<Event> eventQueue,
org.jetlang.fibers.Fiber fiber,
Lane<String,ExecutorService> lane) |
JetlangEventDispatcher(org.jetlang.channels.MemoryChannel<Event> eventQueue,
org.jetlang.fibers.Fiber fiber,
Lane<String,ExecutorService> lane) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addANYHandler(EventHandler eventHandler)
Creates a batch subscription to the jetlang memory channel for the ANY
event handler.
|
void |
addHandler(EventHandler eventHandler)
Adds event handler to the dispatcher.
|
void |
clear()
Clears all handles associated with this dispatcher.
|
void |
close()
Called by the session during disconnect, the dispatcher will no longer
accept any events, it will also detach the existing listeners.
|
protected org.jetlang.core.Callback<List<Event>> |
createEventCallbackForHandler(EventHandler eventHandler) |
protected void |
dispatchEventOnSameLane(Event event) |
void |
fireEvent(Event event)
Fires event in asynchronous mode
|
Map<EventHandler,org.jetlang.core.Disposable> |
getDisposableHandlerMap() |
org.jetlang.channels.MemoryChannel<Event> |
getEventQueue() |
org.jetlang.fibers.Fiber |
getFiber() |
List<EventHandler> |
getHandlers(int eventType)
Returns the list of
EventHandlers associated with a particular
event type. |
protected List<EventHandler> |
getHandlersToRemoveForSession(List<EventHandler> handlerList,
Session session) |
Map<Integer,List<EventHandler>> |
getListenersByEventType() |
void |
initialize() |
private void |
removeDisposableForHandler(EventHandler eventHandler) |
void |
removeHandler(EventHandler eventHandler)
Removes an event handler from the dispatcher
|
void |
removeHandlersForEvent(int eventType)
Removes all event listeners associated with the event type.
|
boolean |
removeHandlersForSession(Session session)
Removes all the handlers for a session.
|
void |
setDisposableHandlerMap(Map<EventHandler,org.jetlang.core.Disposable> disposableHandlerMap) |
void |
setListenersByEventType(Map<Integer,List<EventHandler>> listenersByEventType) |
private static final org.slf4j.Logger LOG
private Map<Integer,List<EventHandler>> handlersByEventType
private List<EventHandler> anyHandler
private final org.jetlang.channels.MemoryChannel<Event> eventQueue
private final org.jetlang.fibers.Fiber fiber
private volatile boolean isCloseCalled
private final Lane<String,ExecutorService> dispatcherLane
private Map<EventHandler,org.jetlang.core.Disposable> disposableHandlerMap
Disposable
objects. This way, when a handler is removed, the dispose method can be
called on the Disposable.public JetlangEventDispatcher(org.jetlang.channels.MemoryChannel<Event> eventQueue, org.jetlang.fibers.Fiber fiber, Lane<String,ExecutorService> lane)
public JetlangEventDispatcher(Map<Integer,List<EventHandler>> listenersByEventType, List<EventHandler> anyHandler, org.jetlang.channels.MemoryChannel<Event> eventQueue, org.jetlang.fibers.Fiber fiber, Lane<String,ExecutorService> lane)
public void initialize()
public void fireEvent(Event event)
EventDispatcherfireEvent in interface EventDispatcherpublic void addHandler(EventHandler eventHandler)
EventDispatcheraddHandler in interface EventDispatchereventHandler - The event handler to be added to the dispatcher.protected void addANYHandler(EventHandler eventHandler)
eventHandler - protected org.jetlang.core.Callback<List<Event>> createEventCallbackForHandler(EventHandler eventHandler)
protected void dispatchEventOnSameLane(Event event)
public List<EventHandler> getHandlers(int eventType)
EventDispatcherEventHandlers associated with a particular
event type.getHandlers in interface EventDispatchereventType - The type of event.EventHandlers associated with that event or
null.public void removeHandler(EventHandler eventHandler)
EventDispatcherremoveHandler in interface EventDispatchereventHandler - the event handler to be removed from the dispatcherprivate void removeDisposableForHandler(EventHandler eventHandler)
public void removeHandlersForEvent(int eventType)
EventDispatcherremoveHandlersForEvent in interface EventDispatcherpublic boolean removeHandlersForSession(Session session)
EventDispatcherremoveHandlersForSession in interface EventDispatchersession - The session instance from which event handlers need to be
removed.public void clear()
EventDispatcherclear in interface EventDispatcherprotected List<EventHandler> getHandlersToRemoveForSession(List<EventHandler> handlerList, Session session)
public void close()
EventDispatcherclose in interface EventDispatcherpublic Map<Integer,List<EventHandler>> getListenersByEventType()
public void setListenersByEventType(Map<Integer,List<EventHandler>> listenersByEventType)
public org.jetlang.channels.MemoryChannel<Event> getEventQueue()
public org.jetlang.fibers.Fiber getFiber()
public Map<EventHandler,org.jetlang.core.Disposable> getDisposableHandlerMap()
public void setDisposableHandlerMap(Map<EventHandler,org.jetlang.core.Disposable> disposableHandlerMap)
Copyright © 2013. All Rights Reserved.