Update SwitchImpl
Change-Id: I1ca7c22d17bfe9c5c66cb49403785751c8a191b1
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
index b1dce75..8e7b153 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Switch.java
@@ -18,6 +18,7 @@
// Graph traversal API
+ // XXX What is the Definition of neighbor? Link exist in both direction or one-way is sufficient to be a neighbor, etc.
public Iterable<Switch> getNeighbors();
public Iterable<Link> getOutgoingLinks();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
index 6d98740..a8c824d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
@@ -3,8 +3,10 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Set;
import net.onrc.onos.datastore.topology.RCPort;
import net.onrc.onos.datastore.topology.RCSwitch;
@@ -46,13 +48,20 @@
@Override
public Iterable<Switch> getNeighbors() {
- // TODO Auto-generated method stub
- return null;
+ Set<Switch> neighbors = new HashSet<>();
+ for (Link link : getOutgoingLinks()) {
+ neighbors.add(link.getDestinationSwitch());
+ }
+ // XXX should incoming considered neighbor?
+ for (Link link : getIncomingLinks()) {
+ neighbors.add(link.getSourceSwitch());
+ }
+ return neighbors;
}
@Override
public Link getLinkToNeighbor(Long neighborDpid) {
- for (Link link : graph.getOutgoingLinksFromSwitch(dpid)) {
+ for (Link link : getOutgoingLinks()) {
if (link.getDestinationSwitch().getDpid().equals(neighborDpid) ) {
return link;
}
@@ -72,8 +81,6 @@
public Port removePort(Port port) {
Port p = this.ports.remove(port.getNumber());
- // XXX Do we need to validate instance equality?
- assert( p == port );
return p;
}