⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventipcmanagerdefaultimpl.java

📁 opennms得相关源码 请大家看看
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            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 + -