package org.infosec.ismp.sitecheck; import java.util.ArrayList; import java.util.List; import org.infosec.ismp.eventd.EventIpcManagerFactory; import org.infosec.ismp.model.Parm; import org.infosec.ismp.model.Parms; import org.infosec.ismp.model.event.Event; import org.infosec.ismp.model.event.EventConstants; import org.infosec.ismp.model.event.EventListener; import org.infosec.ismp.util.ThreadCategory; /** * 处理Pingd关心的事件 * * @author lianglin * */ public class BroadcastEventProcessor implements EventListener { private SiteCheck m_siteCheck; public BroadcastEventProcessor(SiteCheck siteCheck) { m_siteCheck = siteCheck; List<String> ueiList = new ArrayList<String>(); ueiList.add(EventConstants.SITECHECK_NODE_ADD_UEI); ueiList.add(EventConstants.SITECHECK_NODE_RESET_UEI); ueiList.add(EventConstants.SITECHECK_NODE_DELETE_UEI); EventIpcManagerFactory.init(); EventIpcManagerFactory.getIpcManager().addEventListener(this, ueiList); } @Override public String getName() { return "siteCheck:BroadcastEventProcessor"; } @Override public void onEvent(Event event) { System.out.println("siteCheck:BroadcastEventProcessor"); ThreadCategory log = ThreadCategory.getInstance(getClass()); String eventUei = event.getUei(); if (eventUei == null) return; if (log.isDebugEnabled()) { log.debug("event is : "+event); log.debug("Received event: " + eventUei); } if (eventUei.equals(EventConstants.SITECHECK_NODE_ADD_UEI)) { String nodeId = event.getNodeid(); String ipAddr = event.getIpAddr(); Parms parms = event.getParams(); String intervalStr = getValue(parms, "interval"); // String halfIntervalWhenDownStr = getValue(parms, // "halfIntervalWhenDown"); // System.out.println("intervalStr is : " + intervalStr); // System.out.println("halfIntervalWhenDownStr is : " // + halfIntervalWhenDownStr); long interval = Long.parseLong(intervalStr); // boolean halfIntervalWhenDown = Boolean // .parseBoolean(halfIntervalWhenDownStr); m_siteCheck.siteCheck(nodeId, ipAddr, interval); if (log.isDebugEnabled()) { log.debug("add siteCheck node to siteCheck : " + nodeId); } } else if(eventUei.equals(EventConstants.SITECHECK_NODE_RESET_UEI)){ String nodeId = event.getNodeid(); m_siteCheck.resetSiteCheck(nodeId); if (log.isDebugEnabled()) { log.debug("reset siteCheck node from siteCheck: " + nodeId); } } else if (eventUei.equals(EventConstants.SITECHECK_NODE_DELETE_UEI)) { String nodeId = event.getNodeid(); m_siteCheck.unSiteCheck(nodeId); if (log.isDebugEnabled()) { log.debug("remove siteCheck node from siteCheck: " + nodeId); } } } String getValue(Parms parms, String parmName) { Parm[] parm = parms.getParm(); String value = null; if (parm != null && parm.length > 0) { for (int i = 0, count = parm.length; i < count; i++) { if (parm[i].getParmName().equalsIgnoreCase(parmName)) { value = parm[i].getValue().getContent(); break; } } } return value; } ThreadCategory log() { return ThreadCategory.getInstance(getClass()); } }