/* * Copyright (c) 2015 Huawei, Inc and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.usc.manager; import java.util.Hashtable; import org.opendaylight.usc.manager.api.UscEvent; import org.opendaylight.usc.manager.monitor.UscChannelEventHandler; import org.opendaylight.usc.manager.monitor.UscEventHandler; import org.opendaylight.usc.manager.monitor.UscSessionEventHandler; import org.opendaylight.usc.manager.monitor.evt.UscChannelCloseEvent; import org.opendaylight.usc.manager.monitor.evt.UscChannelCreateEvent; import org.opendaylight.usc.manager.monitor.evt.UscChannelErrorEvent; import org.opendaylight.usc.manager.monitor.evt.UscSessionCloseEvent; import org.opendaylight.usc.manager.monitor.evt.UscSessionCreateEvent; import org.opendaylight.usc.manager.monitor.evt.UscSessionErrorEvent; import org.opendaylight.usc.manager.monitor.evt.UscSessionTransactionEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Monitor Manager of USC */ public class UscMonitorService { @SuppressWarnings("unused") private static final Logger LOG = LoggerFactory.getLogger(UscMonitorService.class); private static UscMonitorService monitorManager = new UscMonitorService(); private Hashtable<Class<? extends UscEvent>, UscEventHandler> eventHandlerList; private UscMonitorService() { initEventHandlerList(); } /** * get unique monitor manager of USC * * @return monitor manager */ public static UscMonitorService getInstance() { return monitorManager; } private void initEventHandlerList() { eventHandlerList = new Hashtable<Class<? extends UscEvent>, UscEventHandler>(); UscChannelEventHandler cHandler = new UscChannelEventHandler(); UscSessionEventHandler sHandler = new UscSessionEventHandler(); eventHandlerList.put(UscChannelCreateEvent.class, cHandler); eventHandlerList.put(UscChannelCloseEvent.class, cHandler); eventHandlerList.put(UscChannelErrorEvent.class, cHandler); eventHandlerList.put(UscSessionCreateEvent.class, sHandler); eventHandlerList.put(UscSessionCloseEvent.class, sHandler); eventHandlerList.put(UscSessionTransactionEvent.class, sHandler); eventHandlerList.put(UscSessionErrorEvent.class, sHandler); } /** * register event handler for an event type * * @param eventType * the type of event * @param handler * the event handler */ public void registerEventHandler(Class<? extends UscEvent> eventType, UscEventHandler handler) { if (eventType != null && handler != null) eventHandlerList.put(eventType, handler); } /** * get all of registered event handlers * * @return event handler list */ public Hashtable<Class<? extends UscEvent>, UscEventHandler> getEventHandlerList() { return eventHandlerList; } }