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/Switch.java b/src/main/java/net/onrc/onos/core/topology/Switch.java
new file mode 100644
index 0000000..0b97dfa
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/Switch.java
@@ -0,0 +1,31 @@
+package net.onrc.onos.core.topology;
+
+import java.util.Collection;
+
+/**
+ * Interface of Switch Object exposed to the "NB" read-only Topology.
+ *
+ * Everything returned by these interfaces must be either Unmodifiable view,
+ * immutable object, or a copy of the original "SB" In-memory Topology.
+ *
+ */
+public interface Switch {
+	public Long getDpid();
+
+	public Collection<Port> getPorts();
+
+	public Port getPort(Long number);
+
+
+	// 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();
+	public Iterable<Link> getIncomingLinks();
+
+	public Link getLinkToNeighbor(Long dpid);
+
+	// XXX Iterable or Collection?
+	public Collection<Device> getDevices();
+}