Fixing topology related internal interface/class tree
- Moved TopologyInternal to more appropriate place
--- BaseInternalTopology (was TopologyInternal)
|
+-- ImmutableInternalTopology (new)
|
+-- MutableInternalTopology (new)
- Updated TopologyImpl, etc. to implement appropriate
*InternalTopology interface
- Added interface adaptor BaseTopologyAdaptor
BaseInternalTopology (self-contained) -> BaseTopology (object handle)
- TopologyObjects ({Switch,Port,Link,Host}Impl) is now common
between Mutable and Immutable variant of Topology.
There were locks for whole Topology, but there weren't any locks
per TopologyObject. If these instances were on MutableTopology,
then locking should happen outside these instance method calls.
ONOS-1925
Change-Id: I0a13b4ed4b5a66b7ea8c42212c9504e6bc83d853
diff --git a/src/main/java/net/onrc/onos/core/topology/PortImpl.java b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
index 5067049..d957809 100644
--- a/src/main/java/net/onrc/onos/core/topology/PortImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
@@ -4,14 +4,12 @@
import java.util.Map;
import static com.google.common.base.Preconditions.checkNotNull;
-
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
/**
* Handler to Port object stored in In-memory Topology snapshot.
- * <p/>
*/
public class PortImpl extends TopologyObject implements Port {
@@ -24,7 +22,7 @@
* @param topology Topology instance this object belongs to
* @param switchPort SwitchPort
*/
- PortImpl(TopologyInternal topology, SwitchPort switchPort) {
+ PortImpl(BaseInternalTopology topology, SwitchPort switchPort) {
super(topology);
this.id = checkNotNull(switchPort);
}
@@ -36,7 +34,7 @@
* @param dpid DPID
* @param number PortNumber
*/
- PortImpl(TopologyInternal topology, Dpid dpid, PortNumber number) {
+ PortImpl(BaseInternalTopology topology, Dpid dpid, PortNumber number) {
this(topology, new SwitchPort(dpid, number));
}
@@ -73,82 +71,43 @@
@Override
public Switch getSwitch() {
- topology.acquireReadLock();
- try {
- return topology.getSwitch(getDpid());
- } finally {
- topology.releaseReadLock();
- }
+ // TODO Cache BaseTopologyAdaptor instance?
+ return new BaseTopologyAdaptor(topology).getSwitch(getDpid());
}
@Override
public Link getOutgoingLink() {
- topology.acquireReadLock();
- try {
- return topology.getOutgoingLink(getSwitchPort());
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getOutgoingLink(getSwitchPort());
}
@Override
public Link getOutgoingLink(String type) {
- topology.acquireReadLock();
- try {
- return topology.getOutgoingLink(getSwitchPort(), type);
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getOutgoingLink(getSwitchPort(), type);
}
@Override
public Collection<Link> getOutgoingLinks() {
- topology.acquireReadLock();
- try {
- return topology.getOutgoingLinks(getSwitchPort());
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getOutgoingLinks(getSwitchPort());
}
@Override
public Link getIncomingLink() {
- topology.acquireReadLock();
- try {
- return topology.getIncomingLink(getSwitchPort());
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getIncomingLink(getSwitchPort());
}
@Override
public Link getIncomingLink(String type) {
- topology.acquireReadLock();
- try {
- return topology.getIncomingLink(getSwitchPort(), type);
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getIncomingLink(getSwitchPort(), type);
}
@Override
public Collection<Link> getIncomingLinks() {
- topology.acquireReadLock();
- try {
- return topology.getIncomingLinks(getSwitchPort());
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getIncomingLinks(getSwitchPort());
}
@Override
public Collection<Host> getHosts() {
- topology.acquireReadLock();
- try {
- return topology.getHosts(this.getSwitchPort());
- } finally {
- topology.releaseReadLock();
- }
+ return new BaseTopologyAdaptor(topology).getHosts(this.getSwitchPort());
}
/**