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

📄 pollereventprocessor.java

📁 opennms得相关源码 请大家看看
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // Extract node label and transaction No. from the event parms        long txNo = -1L;        Parms parms = event.getParms();        if (parms != null) {            String parmName = null;            Value parmValue = null;            String parmContent = null;            Enumeration parmEnum = parms.enumerateParm();            while (parmEnum.hasMoreElements()) {                Parm parm = (Parm) parmEnum.nextElement();                parmName = parm.getParmName();                parmValue = parm.getValue();                if (parmValue == null)                    continue;                else                    parmContent = parmValue.getContent();                // get the external transaction number                if (parmName.equals(EventConstants.PARM_TRANSACTION_NO)) {                    String temp = parmContent;                    if (log.isDebugEnabled())                        log.debug("nodeDeletedHandler:  parmName: " + parmName + " /parmContent: " + parmContent);                    try {                        txNo = Long.valueOf(temp).longValue();                    } catch (NumberFormatException nfe) {                        log.warn("nodeDeletedHandler: Parameter " + EventConstants.PARM_TRANSACTION_NO + " cannot be non-numberic", nfe);                        txNo = -1;                    }                }            }        }                Date closeDate;        try {            closeDate = EventConstants.parseToDate(event.getTime());        } catch (ParseException e) {            closeDate = new Date();        }                getPoller().closeOutagesForNode(closeDate, event.getDbid(), nodeId);                PollableNode node = getNetwork().getNode(nodeId);        if (node == null) {          log.error("Nodeid " + nodeId + " does not exist in pollable node map, unable to delete node.");          if (isXmlRPCEnabled()) {              int status = EventConstants.XMLRPC_NOTIFY_FAILURE;              XmlrpcUtil.createAndSendXmlrpcNotificationEvent(txNo, sourceUei, "Node does not exist in pollable node map.", status, "OpenNMS.Poller");          }          return;        }        node.delete();    }    /**     *      */    private void interfaceDeletedHandler(Event event) {        Category log = ThreadCategory.getInstance(getClass());        int nodeId = (int) event.getNodeid();        String sourceUei = event.getUei();        String ipAddr = event.getInterface();                // Extract node label and transaction No. from the event parms        long txNo = -1L;        Parms parms = event.getParms();        if (parms != null) {            String parmName = null;            Value parmValue = null;            String parmContent = null;            Enumeration parmEnum = parms.enumerateParm();            while (parmEnum.hasMoreElements()) {                Parm parm = (Parm) parmEnum.nextElement();                parmName = parm.getParmName();                parmValue = parm.getValue();                if (parmValue == null)                    continue;                else                    parmContent = parmValue.getContent();                // get the external transaction number                if (parmName.equals(EventConstants.PARM_TRANSACTION_NO)) {                    String temp = parmContent;                    if (log.isDebugEnabled())                        log.debug("interfaceDeletedHandlerHandler:  parmName: " + parmName + " /parmContent: " + parmContent);                    try {                        txNo = Long.valueOf(temp).longValue();                    } catch (NumberFormatException nfe) {                        log.warn("interfaceDeletedHandlerHandler: Parameter " + EventConstants.PARM_TRANSACTION_NO + " cannot be non-numberic", nfe);                        txNo = -1;                    }                }            }        }                InetAddress addr;        try {            addr = InetAddress.getByName(ipAddr);        } catch (UnknownHostException e) {            log.error("interfaceDeletedHandler: Could not convert interface "+event.getInterface()+" to InetAddress", e);            return;                    }                Date closeDate;        try {            closeDate = EventConstants.parseToDate(event.getTime());        } catch (ParseException e) {            closeDate = new Date();        }                getPoller().closeOutagesForInterface(closeDate, event.getDbid(), nodeId, ipAddr);                PollableInterface iface = getNetwork().getInterface(nodeId, addr);        if (iface == null) {          log.error("Interface " + nodeId + "/" + event.getInterface() + " does not exist in pollable node map, unable to delete node.");          if (isXmlRPCEnabled()) {              int status = EventConstants.XMLRPC_NOTIFY_FAILURE;              XmlrpcUtil.createAndSendXmlrpcNotificationEvent(txNo, sourceUei, "Interface does not exist in pollable node map.", status, "OpenNMS.Poller");          }          return;        }        iface.delete();    }    /**     * <p>     * This method remove a deleted service from the pollable service list of     * the specified interface, so that it will not be scheduled by the poller.     * </p>     */    private void serviceDeletedHandler(Event event) {        Category log = ThreadCategory.getInstance(getClass());        int nodeId = (int) event.getNodeid();        String ipAddr = event.getInterface();        String service = event.getService();                InetAddress addr;        try {            addr = InetAddress.getByName(ipAddr);        } catch (UnknownHostException e) {            log.error("serviceDeletedHandler: Could not convert "+ipAddr+" to an InetAddress", e);            return;        }                Date closeDate;        try {            closeDate = EventConstants.parseToDate(event.getTime());        } catch (ParseException e) {            closeDate = new Date();        }                getPoller().closeOutagesForService(closeDate, event.getDbid(), nodeId, ipAddr, service);                PollableService svc = getNetwork().getService(nodeId, addr, service);        if (svc == null) {          log.error("Interface " + nodeId + "/" + event.getInterface() + " does not exist in pollable node map, unable to delete node.");          return;        }                svc.delete();    }        /**     * Constructor     *      * @param pollableServices     *            List of all the PollableService objects scheduled for polling     */    PollerEventProcessor(Poller poller) {        m_poller = poller;        createMessageSelectorAndSubscribe();        Category log = ThreadCategory.getInstance(getClass());        if (log.isDebugEnabled())            log.debug("Subscribed to eventd");    }    /**     * Unsubscribe from eventd     */    public void close() {        getEventManager().removeEventListener(this);    }    /**     * @return     */    private EventIpcManager getEventManager() {        return getPoller().getEventManager();    }    /**     * This method is invoked by the EventIpcManager when a new event is     * available for processing. Each message is examined for its Universal     * Event Identifier and the appropriate action is taking based on each UEI.     *      * @param event     *            The event     */    public void onEvent(Event event) {        if (event == null)            return;        Category log = ThreadCategory.getInstance(getClass());        // print out the uei        //        if (log.isDebugEnabled()) {            log.debug("PollerEventProcessor: received event, uei = " + event.getUei());        }	if(event.getUei().equals(EventConstants.SCHEDOUTAGES_CHANGED_EVENT_UEI)) {		log.info("Reloading poller config factory and polloutages config factory");        		scheduledOutagesChangeHandler(log);	} else if(!event.hasNodeid()) {	    // For all other events, if the event doesn't have a nodeId it can't be processed.            log.info("PollerEventProcessor: no database node id found, discarding event");        } else if (event.getUei().equals(EventConstants.NODE_GAINED_SERVICE_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if (event.getInterface() == null || event.getInterface().length() == 0) {                log.info("PollerEventProcessor: no interface found, discarding event");            } else {                nodeGainedServiceHandler(event);            }        } else if (event.getUei().equals(EventConstants.RESUME_POLLING_SERVICE_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if (event.getInterface() == null || event.getInterface().length() == 0) {                log.info("PollerEventProcessor: no interface found, cannot resume polling service, discarding event");            } else {                nodeGainedServiceHandler(event);            }        } else if (event.getUei().equals(EventConstants.SUSPEND_POLLING_SERVICE_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if (event.getInterface() == null || event.getInterface().length() == 0) {                log.info("PollerEventProcessor: no interface found, cannot suspend polling service, discarding event");            } else {                nodeRemovePollableServiceHandler(event);            }        } else if (event.getUei().equals(EventConstants.INTERFACE_REPARENTED_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if (event.getInterface() == null || event.getInterface().length() == 0) {                log.info("PollerEventProcessor: no interface found, discarding event");            } else {                interfaceReparentedHandler(event);            }        } else if (event.getUei().equals(EventConstants.NODE_DELETED_EVENT_UEI) || event.getUei().equals(EventConstants.DUP_NODE_DELETED_EVENT_UEI)) {            if (event.getNodeid() < 0) {                log.info("PollerEventProcessor: no node or interface found, discarding event");            }            // NEW NODE OUTAGE EVENTS            nodeDeletedHandler(event);        } else if (event.getUei().equals(EventConstants.INTERFACE_DELETED_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if (event.getNodeid() < 0 || event.getInterface() == null || event.getInterface().length() == 0) {                log.info("PollerEventProcessor: invalid nodeid or no interface found, discarding event");            } else {                interfaceDeletedHandler(event);            }        } else if (event.getUei().equals(EventConstants.SERVICE_DELETED_EVENT_UEI)) {            // If there is no interface then it cannot be processed            //            if ((event.getNodeid() < 0) || (event.getInterface() == null) || (event.getInterface().length() == 0) || (event.getService() == null)) {                log.info("PollerEventProcessor: invalid nodeid or no nodeinterface " + "or service found, discarding event");            } else {                serviceDeletedHandler(event);            }        } // end single event proces    } // end onEvent()    private void scheduledOutagesChangeHandler(Category log) {        try {            getPollerConfig().update();            getPoller().getPollOutagesConfig().update();		} catch (Exception e) {			e.printStackTrace();			log.error("Failed to reload PollerConfigFactory because "+e.getMessage(), e);		}        getPoller().refreshServicePackages();    }    /**     * Return an id for this event listener     */    public String getName() {        return "Poller:PollerEventProcessor";    }    /**     * @return     */    private Poller getPoller() {        return m_poller;    }    /**     * @return     */    private PollerConfig getPollerConfig() {        return getPoller().getPollerConfig();    }    private PollableNetwork getNetwork() {        return getPoller().getNetwork();    }    /**     * @return Returns the xmlrpc.     */    private boolean isXmlRPCEnabled() {        return getPollerConfig().getXmlrpc();    }} // end class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -