package org.infosec.ismp.eventd; 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; import org.springframework.util.Assert; /** * 外部事件接受模块对内部事件的Listener,根据接受到相关的事件决定是否重启eventd模块等。 * @author <a href="mailto:lianglin1979@sjtu.edu.cn">lianglin</a> * */ public class BroadcastEventProcessor implements EventListener { private final Eventd m_eventd; public BroadcastEventProcessor(Eventd eventd) { this.m_eventd = eventd; Assert.notNull(m_eventd, " m_eventd must not be null"); addEventListener(); } /** * Create message selector to set to the subscription */ private void addEventListener() { EventIpcManagerFactory.getIpcManager().addEventListener(this, EventConstants.EVENTSCONFIG_CHANGED_EVENT_UEI); } /** * </p> * Closes the current connections to the event manager if they are * still active. This call may be invoked more than once safely and may be * invoked during object finalization. * </p> * */ public synchronized void close() { EventIpcManagerFactory.getIpcManager().removeEventListener(this); } /** * This method may be invoked by the garbage thresholding. Once invoked it * ensures that the <code>close</code> method is called <em>at least</em> * once during the cycle of this object. * */ @Override protected void finalize() throws Throwable { close(); } @Override public String getName() { return "Eventd:BroadcastEventProcessor"; } /** * This method is invoked by the event manager 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 message. * */ @Override public void onEvent(Event event) { // TODO:根据事件类型做相应的动作 } private ThreadCategory log() { return ThreadCategory.getInstance(getClass()); } }