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
EventHandler s 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)
EventDispatcher
fireEvent
in interface EventDispatcher
public void addHandler(EventHandler eventHandler)
EventDispatcher
addHandler
in interface EventDispatcher
eventHandler
- 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)
EventDispatcher
EventHandler
s associated with a particular
event type.getHandlers
in interface EventDispatcher
eventType
- The type of event.EventHandler
s associated with that event or
null.public void removeHandler(EventHandler eventHandler)
EventDispatcher
removeHandler
in interface EventDispatcher
eventHandler
- the event handler to be removed from the dispatcherprivate void removeDisposableForHandler(EventHandler eventHandler)
public void removeHandlersForEvent(int eventType)
EventDispatcher
removeHandlersForEvent
in interface EventDispatcher
public boolean removeHandlersForSession(Session session)
EventDispatcher
removeHandlersForSession
in interface EventDispatcher
session
- The session instance from which event handlers need to be
removed.public void clear()
EventDispatcher
clear
in interface EventDispatcher
protected List<EventHandler> getHandlersToRemoveForSession(List<EventHandler> handlerList, Session session)
public void close()
EventDispatcher
close
in interface EventDispatcher
public 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.