Java 类net.floodlightcontroller.core.IInfoProvider 实例源码

项目:iTAP-controller    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:smartenit    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) {
    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners =
            new ConcurrentHashMap<OFType, 
                                  ListenerDispatcher<OFType, 
                                                     IOFMessageListener>>();
    this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
    this.haListeners = new CopyOnWriteArraySet<IHAListener>();
    this.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
    this.connectedSwitches = new HashSet<OFSwitchImpl>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.factory = new BasicFactory();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    setConfigParams(configParams);
    this.role = getInitialRole(configParams);
    this.roleChanger = new RoleChanger();
    initVendorMessages();
    this.systemStartTime = System.currentTimeMillis();
}
项目:floodlight-qosmanager    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) {
    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners =
            new ConcurrentHashMap<OFType, 
                                  ListenerDispatcher<OFType, 
                                                     IOFMessageListener>>();
    this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
    this.haListeners = new CopyOnWriteArraySet<IHAListener>();
    this.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
    this.connectedSwitches = new HashSet<OFSwitchImpl>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.factory = new BasicFactory();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    setConfigParams(configParams);
    this.role = getInitialRole(configParams);
    this.roleChanger = new RoleChanger();
    initVendorMessages();
    this.systemStartTime = System.currentTimeMillis();
}
项目:my-floodlight    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) {
    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners =
            new ConcurrentHashMap<OFType, 
                                  ListenerDispatcher<OFType, 
                                                     IOFMessageListener>>();
    this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
    this.haListeners = new CopyOnWriteArraySet<IHAListener>();
    this.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
    this.connectedSwitches = new HashSet<OFSwitchImpl>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.factory = new BasicFactory();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    setConfigParams(configParams);
    this.role = getInitialRole(configParams);
    this.roleChanger = new RoleChanger();
    initVendorMessages();
    this.systemStartTime = System.currentTimeMillis();
}
项目:FL_HAND    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) {
    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners =
            new ConcurrentHashMap<OFType,
                                  ListenerDispatcher<OFType,
                                                     IOFMessageListener>>();
    this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
    this.haListeners = new CopyOnWriteArraySet<IHAListener>();
    this.switchBindingMap =
            new ConcurrentHashMap<String, IOFSwitchDriver>();
    this.switchDescSortedList = new ArrayList<String>();
    this.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
    this.connectedSwitches = new HashSet<IOFSwitch>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.factory = new BasicFactory();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    setConfigParams(configParams);
    this.role = getInitialRole(configParams);
    this.notifiedRole = this.role;
    this.roleChanger = new RoleChanger(this);
    initVendorMessages();
    this.systemStartTime = System.currentTimeMillis();
}
项目:sdn-project    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) {
    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners =
            new ConcurrentHashMap<OFType, 
                                  ListenerDispatcher<OFType, 
                                                     IOFMessageListener>>();
    this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
    this.haListeners = new CopyOnWriteArraySet<IHAListener>();
    this.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
    this.connectedSwitches = new HashSet<OFSwitchImpl>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.factory = new BasicFactory();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    setConfigParams(configParams);
    this.role = getInitialRole(configParams);
    this.roleChanger = new RoleChanger();
    initVendorMessages();
    this.systemStartTime = System.currentTimeMillis();
}
项目:fresco_floodlight    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:fresco_floodlight    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:fresco_floodlight    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:fresco_floodlight    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:iTAP-controller    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:iTAP-controller    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:iTAP-controller    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:SDN-Multicast    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:SDN-Multicast    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:SDN-Multicast    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:SDN-Multicast    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:arscheduler    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:arscheduler    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:arscheduler    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:arscheduler    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:QoS-floodlight    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:QoS-floodlight    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }

    providerMap.get(type).remove(provider);
}
项目:QoS-floodlight    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }

    return result;
}
项目:floodlight1.2-delay    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:floodlight1.2-delay    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:floodlight1.2-delay    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:floodlight1.2-delay    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:floodlight-hardware    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:floodlight-hardware    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:floodlight-hardware    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:floodlight-hardware    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:ACAMPController    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();
    this.completionListeners = new ConcurrentLinkedQueue<IControllerCompletionListener>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:ACAMPController    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:ACAMPController    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:ACAMPController    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}
项目:fast-failover-demo    文件:Controller.java   
/**
 * Initialize internal data structures
 */
public void init(Map<String, String> configParams) throws FloodlightModuleException {

    this.moduleLoaderState = ModuleLoaderState.INIT;

    // These data structures are initialized here because other
    // module's startUp() might be called before ours        
    this.messageListeners = new ConcurrentHashMap<OFType, ListenerDispatcher<OFType, IOFMessageListener>>();
    this.haListeners = new ListenerDispatcher<HAListenerTypeMarker, IHAListener>();
    this.controllerNodeIPsCache = new HashMap<String, String>();
    this.updates = new LinkedBlockingQueue<IUpdate>();
    this.providerMap = new HashMap<String, List<IInfoProvider>>();

    setConfigParams(configParams);

    HARole initialRole = getInitialRole(configParams);
    this.notifiedRole = initialRole;
    this.shutdownService = new ShutdownServiceImpl();

    this.roleManager = new RoleManager(this, this.shutdownService,
                                       this.notifiedRole,
                                       INITIAL_ROLE_CHANGE_DESCRIPTION);
    this.timer = new HashedWheelTimer();

    // Switch Service Startup
    this.switchService.registerLogicalOFMessageCategory(LogicalOFMessageCategory.MAIN);
    this.switchService.addOFSwitchListener(new NotificationSwitchListener());

    this.counters = new ControllerCounters(debugCounterService);
 }
项目:fast-failover-demo    文件:Controller.java   
@Override
public void addInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        providerMap.put(type, new ArrayList<IInfoProvider>());
    }
    providerMap.get(type).add(provider);
}
项目:fast-failover-demo    文件:Controller.java   
@Override
public void removeInfoProvider(String type, IInfoProvider provider) {
    if (!providerMap.containsKey(type)) {
        log.debug("Provider type {} doesn't exist.", type);
        return;
    }
    providerMap.get(type).remove(provider);
}
项目:fast-failover-demo    文件:Controller.java   
@Override
public Map<String, Object> getControllerInfo(String type) {
    if (!providerMap.containsKey(type)) return null;

    Map<String, Object> result = new LinkedHashMap<String, Object>();
    for (IInfoProvider provider : providerMap.get(type)) {
        result.putAll(provider.getInfo(type));
    }
    return result;
}