📄 eventipcmanagerdefaultimpl.java
字号:
Category log = ThreadCategory.getInstance(this.getClass()); log.warn("Unable to queue event log to the event handler pool queue", iE); throw new UndeclaredEventException(iE); } catch (FifoQueueException qE) { Category log = ThreadCategory.getInstance(this.getClass()); log.warn("Unable to queue event log to the event handler pool queue", qE); throw new UndeclaredEventException(qE); } } /** * Called by eventd to send an event to all interested listeners */ public synchronized void broadcastNow(Event event) { Category log = ThreadCategory.getInstance(this.getClass()); if (log.isDebugEnabled()) log.debug("Event to be broadcasted: " + event.getUei()); if (m_listeners.size() <= 0) { if (log.isDebugEnabled()) log.debug("No listeners interested in all events"); } // send to listeners interested in receiving all events Iterator listenerIter = m_listeners.iterator(); while (listenerIter.hasNext()) { EventListener listener = (EventListener) listenerIter.next(); ListenerThread listenerThr = (ListenerThread) m_listenerThreads.get(listener.getName()); try { listenerThr.getQueue().add(event); if (log.isDebugEnabled()) log.debug("Queued event to listener: " + listener.getName()); } catch (FifoQueueException fe) { log.error("Error queueing event " + event.getUei() + " to listener thread " + listener.getName(), fe); } catch (InterruptedException ie) { log.error("Error queueing event " + event.getUei() + " to listener thread " + listener.getName(), ie); } } // get event UEI String uei = event.getUei(); if (uei == null) { return; } // send to listeners who are interested in this event uei List listenerList = (List) m_ueiListeners.get(uei); if (listenerList != null) { listenerIter = listenerList.iterator(); while (listenerIter.hasNext()) { EventListener listener = (EventListener) listenerIter.next(); ListenerThread listenerThread = (ListenerThread) m_listenerThreads.get(listener.getName()); try { listenerThread.getQueue().add(event); if (log.isDebugEnabled()) log.debug("Queued event to listener: " + listener.getName()); } catch (FifoQueueException fe) { log.error("Error queueing event " + event.getUei() + " to listener thread " + listener.getName(), fe); } catch (InterruptedException ie) { log.error("Error queueing event " + event.getUei() + " to listener thread " + listener.getName(), ie); } } } else { if (log.isDebugEnabled()) log.debug("No listener interested in event: " + uei); } } /** * Register an event listener that is interested in all events */ public synchronized void addEventListener(EventListener listener) { // create a new queue and listener thread for this listener ListenerThread listenerThread = (ListenerThread) m_listenerThreads.get(listener.getName()); if (listenerThread == null) { FifoQueue lq = new FifoQueueImpl(); listenerThread = new ListenerThread(listener, lq); listenerThread.start(); m_listenerThreads.put(listener.getName(), listenerThread); } // add listener to list of listeners listening for all events m_listeners.add(listener); // remove listener from uei specific listeners Iterator keysetIter = m_ueiListeners.keySet().iterator(); while (keysetIter.hasNext()) { String key = (String) keysetIter.next(); List listenersList = (List) m_ueiListeners.get(key); if (listenersList != null) { listenersList.remove(listener); } } } /** * Register an event listener interested in the UEIs in the passed list */ public synchronized void addEventListener(EventListener listener, List ueilist) { Category log = ThreadCategory.getInstance(this.getClass()); if (log.isDebugEnabled()) log.debug("Adding event listener " + listener.getName() + " for " + ueilist); if (ueilist == null || ueilist.size() == 0) { // nothing to do return; } // create a new queue and listener thread for this listener ListenerThread listenerThread = (ListenerThread) m_listenerThreads.get(listener.getName()); if (listenerThread == null) { FifoQueue lq = new FifoQueueImpl(); listenerThread = new ListenerThread(listener, lq); listenerThread.start(); m_listenerThreads.put(listener.getName(), listenerThread); } // add to uei listeners Iterator ueiIter = ueilist.iterator(); while (ueiIter.hasNext()) { String uei = (String) ueiIter.next(); // check if there are other listeners already, else create // an entry List listenersList = (List) m_ueiListeners.get(uei); if (listenersList == null) { listenersList = new ArrayList(); listenersList.add(listener); m_ueiListeners.put(uei, listenersList); } else { if (!listenersList.contains(listener)) listenersList.add(listener); } } // remove from list of listeners listening for all events m_listeners.remove(listener); } /** * Register an event listener interested in the passed UEI */ public synchronized void addEventListener(EventListener listener, String uei) { if (uei == null) { // nothing to do return; } // create a new queue and listener thread for this listener ListenerThread listenerThread = (ListenerThread) m_listenerThreads.get(listener.getName()); if (listenerThread == null) { FifoQueue lq = new FifoQueueImpl(); listenerThread = new ListenerThread(listener, lq); listenerThread.start(); m_listenerThreads.put(listener.getName(), listenerThread); } // check if there are other listeners already, else create // an entry List listenersList = (List) m_ueiListeners.get(uei); if (listenersList == null) { listenersList = new ArrayList(); listenersList.add(listener); m_ueiListeners.put(uei, listenersList); } else { if (!listenersList.contains(listener)) listenersList.add(listener); } // remove from list of listeners listening for all events m_listeners.remove(listener); } /** * Removes a registered event listener. The UEI list indicates the list of * events the listener is no more interested in. * * <strong>Note: </strong>The listener thread for this listener is not * stopped until the 'removeListener(EventListener listener)' method is * called. */ public synchronized void removeEventListener(EventListener listener, List ueilist) { if (ueilist == null || ueilist.size() == 0) { // nothing to do return; } // Iterate through the ueis and remove the listener Iterator ueiIter = ueilist.iterator(); while (ueiIter.hasNext()) { String uei = (String) ueiIter.next(); List listenersList = (List) m_ueiListeners.get(uei); if (listenersList != null) { listenersList.remove(listener); } } } /** * Removes a registered event listener. The UEI indicates one the listener * is no more interested in. * * <strong>Note: </strong>The listener thread for this listener is not * stopped until the 'removeListener(EventListener listener)' method is * called. */ public synchronized void removeEventListener(EventListener listener, String uei) { if (uei == null) { // nothing to do return; } List listenersList = (List) m_ueiListeners.get(uei); if (listenersList != null) { listenersList.remove(listener); } } /** * Removes a registered event listener. * * <strong>Note: </strong>Only this method stops the listener thread for the * listener passed. */ public synchronized void removeEventListener(EventListener listener) { // remove from list of events that listen for all events m_listeners.remove(listener); // remove listener from uei specific listeners Iterator keysetIter = m_ueiListeners.keySet().iterator(); while (keysetIter.hasNext()) { String key = (String) keysetIter.next(); List listenersList = (List) m_ueiListeners.get(key); if (listenersList != null) { listenersList.remove(listener); } } // stop the listener thread for this listener ListenerThread listenerThread = (ListenerThread) m_listenerThreads.get(listener.getName()); if (listenerThread != null) { listenerThread.stop(); m_listenerThreads.remove(listener.getName()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -