Renamed networkgraph package to topology.
Moved NetworkGraphPublisher into new topology package.
net.onrc.onos.ofcontroller.networkgraph.* => net.onrc.onos.core.topology.*
net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher => net.onrc.onos.core.topology.NetworkGraphPublisher
Change-Id: I8b156d0fcbba520fee61e92ab659bb02cfa704ac
diff --git a/src/main/java/net/onrc/onos/core/topology/PortImpl.java b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
new file mode 100644
index 0000000..cd7d82b
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
@@ -0,0 +1,113 @@
+package net.onrc.onos.core.topology;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Port Object stored in In-memory Topology.
+ *
+ * TODO REMOVE following design memo: This object itself may hold the DBObject,
+ * but this Object itself will not issue any read/write to the DataStore.
+ */
+public class PortImpl extends NetworkGraphObject implements Port {
+
+ private Switch sw;
+
+ private Long number;
+ private String description;
+
+ protected Link outgoingLink;
+ protected Link incomingLink;
+ // These needs to be ConcurrentCollecton if allowing Graph to be accessed Concurrently
+ protected Set<Device> devices;
+
+ public PortImpl(NetworkGraph graph, Switch parentSwitch, Long number) {
+ super(graph);
+ this.sw = parentSwitch;
+ this.number = number;
+ this.devices = new HashSet<>();
+ }
+
+ @Override
+ public Long getDpid() {
+ return sw.getDpid();
+ }
+
+ @Override
+ public Long getNumber() {
+ return number;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public Long getHardwareAddress() {
+ // TODO Auto-generated method stub
+ return 0L;
+ }
+
+ @Override
+ public Switch getSwitch() {
+ return sw;
+ }
+
+ @Override
+ public Link getOutgoingLink() {
+ return outgoingLink;
+ }
+
+ @Override
+ public Link getIncomingLink() {
+ return incomingLink;
+ }
+
+ @Override
+ public Iterable<Device> getDevices() {
+ return Collections.unmodifiableSet(this.devices);
+ }
+
+ public void setOutgoingLink(Link link) {
+ outgoingLink = link;
+ }
+
+ public void setIncomingLink(Link link) {
+ incomingLink = link;
+ }
+
+ /**
+ *
+ * @param d
+ * @return true if successfully added
+ */
+ public boolean addDevice(Device d) {
+ return this.devices.add(d);
+ }
+
+ /**
+ *
+ * @param d
+ * @return true if device existed and was removed
+ */
+ public boolean removeDevice(Device d) {
+ return this.devices.remove(d);
+ }
+
+ public void removeAllDevice() {
+ this.devices.clear();
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%d:%d",
+ getSwitch().getDpid(),
+ getNumber());
+ }
+}