Skeletons for Intent-runtime, Flow-manager and Match-action modules.

This task is a part of ONOS-1395.
(Sub-tasks: ONOS-1397, ONOS-1398, ONOS-1400)

Change-Id: I30064f658b6c193aee8419079dad380163364475
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java b/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java
new file mode 100644
index 0000000..087ef47
--- /dev/null
+++ b/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java
@@ -0,0 +1,61 @@
+package net.onrc.onos.api.flowmanager;
+
+import java.util.List;
+
+import net.onrc.onos.core.matchaction.MatchActionPlan;
+import net.onrc.onos.core.matchaction.action.IAction;
+import net.onrc.onos.core.matchaction.match.PacketMatch;
+import net.onrc.onos.core.util.PortNumber;
+
+/**
+ * IFlow object representing a packet path.
+ * <p>
+ * TODO: Think this: Do we need a bandwidth constraint?
+ */
+public class PacketPathFlow extends PathFlow {
+    private int hardTimeout;
+    private int idleTimeout;
+
+    /**
+     * Constructor.
+     *
+     * @param id ID for this new IFlow object.
+     * @param match Match object at the source node of the path.
+     * @param inPort Ingress port number at the ingress edge node.
+     * @param path Path between ingress and egress edge node.
+     * @param edgeActions The list of IAction objects at the egress edge node.
+     * @param hardTimeout hard-timeout value.
+     * @param idleTimeout idle-timeout value.
+     */
+    public PacketPathFlow(String id,
+            PacketMatch match, PortNumber inPort, Path path, List<IAction> edgeActions,
+            int hardTimeout, int idleTimeout) {
+        super(id, match, inPort, path, edgeActions);
+        this.hardTimeout = hardTimeout;
+        this.idleTimeout = idleTimeout;
+    }
+
+    /**
+     * Gets idle-timeout value.
+     *
+     * @return Idle-timeout value (seconds)
+     */
+    public int getIdleTimeout() {
+        return idleTimeout;
+    }
+
+    /**
+     * Gets hard-timeout value.
+     *
+     * @return Hard-timeout value (seconds)
+     */
+    public int getHardTimeout() {
+        return hardTimeout;
+    }
+
+    @Override
+    public MatchActionPlan compile() {
+        // TODO Auto-generated method stub
+        return super.compile();
+    }
+}