-
/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2013-2014 Cisco Systems, 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,
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.opendaylight.controller.sal.reader.NodeDescription;
import org.opendaylight.controller.sal.reader.NodeTableStatistics;
import org.opendaylight.controller.sal.utils.EtherTypes;
-import org.opendaylight.controller.sal.utils.GlobalConstants;
import org.opendaylight.controller.sal.utils.IPProtocols;
import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
import org.opendaylight.controller.sal.utils.NodeCreator;
public class ReadService implements IReadService, CommandProvider, IPluginOutReadService {
protected static final Logger logger = LoggerFactory.getLogger(ReadService.class);
- private ConcurrentHashMap<String, IPluginInReadService> pluginReader =
- new ConcurrentHashMap<String, IPluginInReadService>();
+ private ConcurrentHashMap<String, ProtocolService<IPluginInReadService>> pluginReader =
+ new ConcurrentHashMap<String, ProtocolService<IPluginInReadService>>();
private Set<IReadServiceListener> readerListeners =
new CopyOnWriteArraySet<IReadServiceListener>();
// Set the reference to the plugin flow Reader service
public void setService(Map<?, ?> props, IPluginInReadService s) {
- if (this.pluginReader == null) {
- logger.error("pluginReader store null");
- return;
- }
-
- logger.trace("Got a service set request {}", s);
- String type = null;
- for (Object e : props.entrySet()) {
- Map.Entry<?, ?> entry = (Map.Entry<?, ?>) e;
- logger.trace("Prop key:({}) value:({})", entry.getKey(),
- entry.getValue());
- }
-
- Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString());
- if (value instanceof String) {
- type = (String) value;
- }
- if (type == null) {
- logger.error("Received a pluginReader without any "
- + "protocolPluginType provided");
- } else {
- this.pluginReader.put(type, s);
- logger.debug("Stored the pluginReader for type: {}", type);
- }
+ ProtocolService.set(this.pluginReader, props, s, logger);
}
public void unsetService(Map<?, ?> props, IPluginInReadService s) {
- if (this.pluginReader == null) {
- logger.error("pluginReader store null");
- return;
- }
-
- String type = null;
- logger.debug("Received unsetpluginReader request");
- for (Object e : props.entrySet()) {
- Map.Entry<?, ?> entry = (Map.Entry<?, ?>) e;
- logger.trace("Prop key:({}) value:({})", entry.getKey(),
- entry.getValue());
- }
-
- Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString());
- if (value instanceof String) {
- type = (String) value;
- }
- if (type == null) {
- logger.error("Received a pluginReader without any "
- + "protocolPluginType provided");
- } else if (this.pluginReader.get(type).equals(s)) {
- this.pluginReader.remove(type);
- logger.debug("Removed the pluginReader for type: {}", type);
- }
+ ProtocolService.unset(this.pluginReader, props, s, logger);
}
+
public void setReaderListener(IReadServiceListener service) {
logger.trace("Got a listener set request {}", service);
this.readerListeners.add(service);
@Override
public FlowOnNode readFlow(Node node, Flow flow) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readFlow(node, flow, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readFlow(node, flow, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
@Override
public FlowOnNode nonCachedReadFlow(Node node, Flow flow) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readFlow(node, flow, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readFlow(node, flow, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
@Override
public List<FlowOnNode> readAllFlows(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readAllFlow(node, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readAllFlow(node, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
- return null;
+ return Collections.emptyList();
}
@Override
public List<FlowOnNode> nonCachedReadAllFlows(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readAllFlow(node, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readAllFlow(node, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
- return null;
+ return Collections.emptyList();
}
@Override
public NodeDescription readDescription(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readDescription(node, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readDescription(node, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
@Override
public NodeDescription nonCachedReadDescription(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readDescription(node, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readDescription(node, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
public NodeConnectorStatistics readNodeConnector(NodeConnector connector) {
Node node = connector.getNode();
if (pluginReader != null && node != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readNodeConnector(connector, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readNodeConnector(connector, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
NodeConnector connector) {
Node node = connector.getNode();
if (pluginReader != null && node != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readNodeConnector(connector, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readNodeConnector(connector, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
@Override
public List<NodeConnectorStatistics> readNodeConnectors(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readAllNodeConnector(node, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readAllNodeConnector(node, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
- return null;
+ return Collections.emptyList();
}
@Override
public List<NodeTableStatistics> readNodeTable(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readAllNodeTable(node, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readAllNodeTable(node, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
- return null;
+ return Collections.emptyList();
}
public NodeTableStatistics nonCachedReadNodeTable(NodeTable table) {
Node node = table.getNode();
if (pluginReader != null && node != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readNodeTable(table, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readNodeTable(table, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
public NodeTableStatistics readNodeTable(NodeTable table) {
Node node = table.getNode();
if (pluginReader != null && node != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readNodeTable(table, true);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readNodeTable(table, true);
}
}
logger.warn("Plugin {} unavailable", node.getType());
@Override
public List<NodeConnectorStatistics> nonCachedReadNodeConnectors(Node node) {
if (pluginReader != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .readAllNodeConnector(node, false);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().readAllNodeConnector(node, false);
}
}
logger.warn("Plugin {} unavailable", node.getType());
- return null;
+ return Collections.emptyList();
}
@Override
public long getTransmitRate(NodeConnector connector) {
Node node = connector.getNode();
if (pluginReader != null && node != null) {
- if (this.pluginReader.get(node.getType()) != null) {
- return this.pluginReader.get(node.getType())
- .getTransmitRate(connector);
+ ProtocolService<IPluginInReadService> service =
+ this.pluginReader.get(node.getType());
+ if (service != null) {
+ return service.getService().getTransmitRate(connector);
}
}
logger.warn("Plugin {} unavailable", node.getType());