Adding model abstractions to help flesh-out the concepts.
diff --git a/net/api/src/main/java/org/onlab/onos/net/HostLinks.java b/net/api/src/main/java/org/onlab/onos/net/HostLinks.java
new file mode 100644
index 0000000..eabbeb1
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/HostLinks.java
@@ -0,0 +1,24 @@
+package org.onlab.onos.net;
+
+/**
+ * Abstraction of a link between an end-station host and the network
+ * infrastructure.
+ */
+public interface HostLinks extends Link {
+
+ /**
+ * Returns the host identification.
+ *
+ * @return host identifier
+ */
+ ElementId hostId();
+
+ /**
+ * Returns the connection point where the host attaches to the
+ * network infrastructure.
+ *
+ * @return host connection point
+ */
+ ConnectPoint connectPoint();
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/HostLocation.java b/net/api/src/main/java/org/onlab/onos/net/HostLocation.java
index 5c124db..022a6f9 100644
--- a/net/api/src/main/java/org/onlab/onos/net/HostLocation.java
+++ b/net/api/src/main/java/org/onlab/onos/net/HostLocation.java
@@ -12,6 +12,6 @@
*
* @return timestamp in milliseconds since start of epoch
*/
- long timestamp();
+ long time();
}
diff --git a/net/api/src/main/java/org/onlab/onos/net/Link.java b/net/api/src/main/java/org/onlab/onos/net/Link.java
index 200f682..75e026d 100644
--- a/net/api/src/main/java/org/onlab/onos/net/Link.java
+++ b/net/api/src/main/java/org/onlab/onos/net/Link.java
@@ -5,7 +5,8 @@
/**
* Abstraction of a network infrastructure link.
*/
-public interface Link extends Provided { // TODO: Also should extend graph Edge once the graph module is checked in
+public interface Link extends Provided {
+// TODO: Consider extending graph Edge<Element> once the graph module is available
/**
* Coarse representation of the link type.
diff --git a/net/api/src/main/java/org/onlab/onos/net/Path.java b/net/api/src/main/java/org/onlab/onos/net/Path.java
new file mode 100644
index 0000000..22a363a
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/Path.java
@@ -0,0 +1,20 @@
+package org.onlab.onos.net;
+
+import java.util.List;
+
+/**
+ * Representation of a contiguous directed path in a network. Path comprises
+ * of a sequence of links, where adjacent links must share the same device,
+ * meaning that destination of the source of one link must coincide with the
+ * destination of the previous link.
+ */
+public interface Path extends Link {
+
+ /**
+ * Returns sequence of links comprising the path.
+ *
+ * @return list of links
+ */
+ List<Link> links();
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/Topology.java b/net/api/src/main/java/org/onlab/onos/net/Topology.java
new file mode 100644
index 0000000..c8a01e9
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/Topology.java
@@ -0,0 +1,48 @@
+package org.onlab.onos.net;
+
+/**
+ * Represents a network topology computation snapshot.
+ */
+public interface Topology {
+
+ /**
+ * Returns the time, specified in milliseconds since start of epoch,
+ * when the topology became active and made available.
+ *
+ * @return time in milliseconds since start of epoch
+ */
+ long time();
+
+ /**
+ * Returns the number of SCCs (strongly connected components) in the
+ * topology.
+ *
+ * @return number of clusters
+ */
+ int clusterCount();
+
+ /**
+ * Returns the number of infrastructure devices in the topology.
+ *
+ * @return number of devices
+ */
+ int deviceCount();
+
+
+ /**
+ * Returns the number of infrastructure links in the topology.
+ *
+ * @return number of links
+ */
+ int linkCount();
+
+ /**
+ * Returns the number of infrastructure paths computed between devices
+ * in the topology. This means the number of all the shortest paths
+ * (hop-count) between all device pairs.
+ *
+ * @return number of paths
+ */
+ int pathCount();
+
+}