public class EventDispatcher
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
private static class |
EventDispatcher.Request |
| Modifier and Type | Field and Description |
|---|---|
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
m_bndlListeners |
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
m_fwkListeners |
private Logger |
m_logger |
private static int |
m_references |
private ServiceRegistry |
m_registry |
private static java.util.List<EventDispatcher.Request> |
m_requestList |
private static java.util.List<EventDispatcher.Request> |
m_requestPool |
private static SecureAction |
m_secureAction |
private static boolean |
m_stopping |
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
m_svcListeners |
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
m_syncBndlListeners |
private static java.lang.Thread |
m_thread |
private static java.lang.String |
m_threadLock |
| Constructor and Description |
|---|
EventDispatcher(Logger logger,
ServiceRegistry registry) |
| Modifier and Type | Method and Description |
|---|---|
Filter |
addListener(BundleContext bc,
java.lang.Class clazz,
java.util.EventListener l,
Filter filter) |
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
addListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
ListenerInfo info) |
private <T> java.util.Set<BundleContext> |
createWhitelistFromHooks(java.util.EventObject event,
Framework felix,
java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners1,
java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners2,
java.lang.Class<T> hookClass) |
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
filterListenersUsingHooks(ServiceEvent event,
Framework felix,
java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners) |
void |
fireBundleEvent(BundleEvent event,
Framework felix) |
private static void |
fireEventAsynchronously(EventDispatcher dispatcher,
int type,
java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
java.util.EventObject event) |
private static void |
fireEventImmediately(EventDispatcher dispatcher,
int type,
java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
java.util.EventObject event,
java.util.Dictionary oldProps) |
void |
fireFrameworkEvent(FrameworkEvent event) |
void |
fireServiceEvent(ServiceEvent event,
java.util.Dictionary oldProps,
Framework felix) |
java.util.Collection<ListenerHook.ListenerInfo> |
getAllServiceListeners()
Returns all existing service listener information into a collection of
ListenerHook.ListenerInfo objects.
|
private static void |
invokeBundleListenerCallback(Bundle bundle,
java.util.EventListener l,
java.util.EventObject event) |
private static void |
invokeFrameworkListenerCallback(Bundle bundle,
java.util.EventListener l,
java.util.EventObject event) |
private static void |
invokeServiceListenerCallback(Bundle bundle,
java.util.EventListener l,
Filter filter,
java.lang.Object acc,
java.util.EventObject event,
java.util.Dictionary oldProps) |
ListenerHook.ListenerInfo |
removeListener(BundleContext bc,
java.lang.Class clazz,
java.util.EventListener l) |
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
removeListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
BundleContext bc,
int idx) |
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
removeListenerInfos(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
BundleContext bc) |
void |
removeListeners(BundleContext bc) |
private static void |
run()
This is the dispatching thread's main loop.
|
void |
startDispatching() |
void |
stopDispatching() |
Filter |
updateListener(BundleContext bc,
java.lang.Class clazz,
java.util.EventListener l,
Filter filter) |
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> |
updateListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners,
int idx,
ListenerInfo info) |
private final Logger m_logger
private final ServiceRegistry m_registry
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> m_fwkListeners
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> m_bndlListeners
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> m_syncBndlListeners
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> m_svcListeners
private static java.lang.Thread m_thread
private static final java.lang.String m_threadLock
private static int m_references
private static volatile boolean m_stopping
private static final java.util.List<EventDispatcher.Request> m_requestList
private static final java.util.List<EventDispatcher.Request> m_requestPool
private static final SecureAction m_secureAction
public EventDispatcher(Logger logger, ServiceRegistry registry)
public void startDispatching()
public void stopDispatching()
public Filter addListener(BundleContext bc, java.lang.Class clazz, java.util.EventListener l, Filter filter)
public ListenerHook.ListenerInfo removeListener(BundleContext bc, java.lang.Class clazz, java.util.EventListener l)
public void removeListeners(BundleContext bc)
public Filter updateListener(BundleContext bc, java.lang.Class clazz, java.util.EventListener l, Filter filter)
public java.util.Collection<ListenerHook.ListenerInfo> getAllServiceListeners()
public void fireFrameworkEvent(FrameworkEvent event)
public void fireBundleEvent(BundleEvent event, Framework felix)
public void fireServiceEvent(ServiceEvent event, java.util.Dictionary oldProps, Framework felix)
private java.util.Map<BundleContext,java.util.List<ListenerInfo>> filterListenersUsingHooks(ServiceEvent event, Framework felix, java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners)
private <T> java.util.Set<BundleContext> createWhitelistFromHooks(java.util.EventObject event, Framework felix, java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners1, java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners2, java.lang.Class<T> hookClass)
private static void fireEventAsynchronously(EventDispatcher dispatcher, int type, java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, java.util.EventObject event)
private static void fireEventImmediately(EventDispatcher dispatcher, int type, java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, java.util.EventObject event, java.util.Dictionary oldProps)
private static void invokeFrameworkListenerCallback(Bundle bundle, java.util.EventListener l, java.util.EventObject event)
private static void invokeBundleListenerCallback(Bundle bundle, java.util.EventListener l, java.util.EventObject event)
private static void invokeServiceListenerCallback(Bundle bundle, java.util.EventListener l, Filter filter, java.lang.Object acc, java.util.EventObject event, java.util.Dictionary oldProps)
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> addListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, ListenerInfo info)
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> updateListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, int idx, ListenerInfo info)
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> removeListenerInfo(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, BundleContext bc, int idx)
private static java.util.Map<BundleContext,java.util.List<ListenerInfo>> removeListenerInfos(java.util.Map<BundleContext,java.util.List<ListenerInfo>> listeners, BundleContext bc)
private static void run()