X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FReadService.java;h=585e4f32c46d83b1edbe758ad2b635655639dcc8;hp=9ff3d21ff0a5ddbff953066b9e2b3553f3807617;hb=eed57e2b0afd50823bc882123b6cbac04bcc48d9;hpb=29f7cfb54b580928c7feac63abce028a7014b0d5 diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java index 9ff3d21ff0..585e4f32c4 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java @@ -11,31 +11,34 @@ package org.opendaylight.controller.protocol_plugin.openflow.internal; import java.util.Dictionary; import java.util.List; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; import org.apache.felix.dm.Component; -import org.opendaylight.controller.protocol_plugin.openflow.IPluginReadServiceFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import org.opendaylight.controller.protocol_plugin.openflow.IReadFilterInternalListener; +import org.opendaylight.controller.protocol_plugin.openflow.IReadServiceFilter; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.Node.NodeIDType; import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.core.NodeTable; import org.opendaylight.controller.sal.flowprogrammer.Flow; import org.opendaylight.controller.sal.reader.FlowOnNode; import org.opendaylight.controller.sal.reader.IPluginInReadService; +import org.opendaylight.controller.sal.reader.IPluginOutReadService; import org.opendaylight.controller.sal.reader.NodeConnectorStatistics; import org.opendaylight.controller.sal.reader.NodeDescription; +import org.opendaylight.controller.sal.reader.NodeTableStatistics; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Container Instance of IPluginInReadService implementation class - * - * - * */ -public class ReadService implements IPluginInReadService { +public class ReadService implements IPluginInReadService, IReadFilterInternalListener { private static final Logger logger = LoggerFactory .getLogger(ReadService.class); - private IPluginReadServiceFilter filter; + private IReadServiceFilter filter; + private Set pluginOutReadServices; private String containerName; /** @@ -48,6 +51,7 @@ public class ReadService implements IPluginInReadService { Dictionary props = c.getServiceProperties(); containerName = (props != null) ? (String) props.get("containerName") : null; + pluginOutReadServices = new CopyOnWriteArraySet(); } /** @@ -77,14 +81,28 @@ public class ReadService implements IPluginInReadService { void stop() { } - public void setService(IPluginReadServiceFilter filter) { + public void setService(IReadServiceFilter filter) { this.filter = filter; } - public void unsetService(IPluginReadServiceFilter filter) { + public void unsetService(IReadServiceFilter filter) { this.filter = null; } + public void setPluginOutReadServices(IPluginOutReadService service) { + logger.trace("Got a service set request {}", service); + if (this.pluginOutReadServices != null) { + this.pluginOutReadServices.add(service); + } + } + + public void unsetPluginOutReadServices( + IPluginOutReadService service) { + logger.trace("Got a service UNset request"); + if (this.pluginOutReadServices != null) { + this.pluginOutReadServices.remove(service); + } + } @Override public FlowOnNode readFlow(Node node, Flow flow, boolean cached) { if (!node.getType().equals(NodeIDType.OPENFLOW)) { @@ -146,4 +164,52 @@ public class ReadService implements IPluginInReadService { } return filter.getTransmitRate(containerName, connector); } + + @Override + public NodeTableStatistics readNodeTable(NodeTable table, boolean cached) { + if (!table.getNode().getType() + .equals(NodeIDType.OPENFLOW)) { + logger.error("Invalid node type"); + return null; + } + return filter.readNodeTable(containerName, table, cached); + } + + @Override + public List readAllNodeTable(Node node, boolean cached) { + if (!node.getType().equals(NodeIDType.OPENFLOW)) { + logger.error("Invalid node type"); + return null; + } + + return filter.readAllNodeTable(containerName, node, cached); + } + + @Override + public void nodeFlowStatisticsUpdated(Node node, List flowStatsList) { + for (IPluginOutReadService service : pluginOutReadServices) { + service.nodeFlowStatisticsUpdated(node, flowStatsList); + } + } + + @Override + public void nodeConnectorStatisticsUpdated(Node node, List ncStatsList) { + for (IPluginOutReadService service : pluginOutReadServices) { + service.nodeConnectorStatisticsUpdated(node, ncStatsList); + } + } + + @Override + public void nodeTableStatisticsUpdated(Node node, List tableStatsList) { + for (IPluginOutReadService service : pluginOutReadServices) { + service.nodeTableStatisticsUpdated(node, tableStatsList); + } + } + + @Override + public void nodeDescriptionStatisticsUpdated(Node node, NodeDescription nodeDescription) { + for (IPluginOutReadService service : pluginOutReadServices) { + service.descriptionStatisticsUpdated(node, nodeDescription); + } + } }