Adding some PortEvent related internal interfaces.
Change-Id: I39ab061db367c355dc7721eef387f94cdec277ba
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
index 31b143d..5411a1b 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
@@ -371,14 +371,28 @@
@Override
public PortEvent getPortEvent(final SwitchPort port) {
- ConcurrentMap<PortNumber, PortEvent> portMap = this.ports.get(port.getDpid());
+ return getPortEvent(port.getDpid(), port.getPortNumber());
+ }
+
+ @Override
+ public PortEvent getPortEvent(final Dpid dpid, PortNumber portNumber) {
+ ConcurrentMap<PortNumber, PortEvent> portMap = this.ports.get(dpid);
if (portMap != null) {
- return portMap.get(port.getPortNumber());
+ return portMap.get(portNumber);
}
return null;
}
@Override
+ public Collection<PortEvent> getPortEvents(final Dpid dpid) {
+ ConcurrentMap<PortNumber, PortEvent> portList = ports.get(dpid);
+ if (portList == null) {
+ return Collections.emptyList();
+ }
+ return Collections.unmodifiableCollection(portList.values());
+ }
+
+ @Override
public Collection<PortEvent> getAllPortEvents() {
List<PortEvent> events = new LinkedList<>();
for (ConcurrentMap<PortNumber, PortEvent> cm : ports.values()) {
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java b/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
index 9656013..e712795 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
@@ -5,6 +5,7 @@
import net.floodlightcontroller.util.MACAddress;
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.LinkTuple;
+import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
/**
@@ -35,6 +36,23 @@
public PortEvent getPortEvent(SwitchPort port);
/**
+ * Gets a PortEvent.
+ *
+ * @param dpid Switch DPID
+ * @param portNumber Port number
+ * @return the PortEvent for the (Dpid, PortNumber) if found, otherwise null
+ */
+ public PortEvent getPortEvent(Dpid dpid, PortNumber portNumber);
+
+ /**
+ * Gets all the PortEvents on a switch.
+ *
+ * @param dpid Switch DPID
+ * @return PortEvents
+ */
+ public Collection<PortEvent> getPortEvents(Dpid dpid);
+
+ /**
* Gets all PortEvent entries.
*
* @return all PortEvent entries.