Interface for Flow manager abstraction in ONOS
diff --git a/src/main/java/net/onrc/onos/flow/IFlowManager.java b/src/main/java/net/onrc/onos/flow/IFlowManager.java
new file mode 100644
index 0000000..da6448c
--- /dev/null
+++ b/src/main/java/net/onrc/onos/flow/IFlowManager.java
@@ -0,0 +1,53 @@
+package net.onrc.onos.flow;
+
+import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.floodlightcontroller.util.FlowEntry;
+import net.floodlightcontroller.util.FlowPath;
+
+public interface IFlowManager {
+
+ /*
+ * Generic create Flow from port to port
+ */
+ public void createFlow(IPortObject src_port, IPortObject dest_port);
+ /*
+ * get Flows matching a src_port & dest_port
+ */
+ public Iterable<FlowPath> getFlows(IPortObject src_port, IPortObject dest_port);
+ /*
+ * get all Flows going out from port
+ */
+ public Iterable<FlowPath> getFlows(IPortObject port);
+ /*
+ * Reconcile all flows on inactive port (src port of link which might be broken)
+ */
+ public void reconcileFlows(IPortObject src_port);
+ /*
+ * Reconcile flow based on flow
+ */
+ public void reconcileFlow(IPortObject src_port, IPortObject dest_port);
+ /*
+ * compute a flow path using src/dest port
+ */
+ public FlowPath computeFlowPath(IPortObject src_port, IPortObject dest_port);
+ /*
+ * Get all FlowEntries of a Flow
+ */
+ public Iterable<FlowEntry> getFlowEntries(FlowPath flow);
+ /*
+ * install a flow entry on switch
+ */
+ public void installFlowEntry(FlowEntry entry);
+ /*
+ * remove a flowEntry from switch
+ */
+ public void removeFlowEntry(FlowEntry entry);
+ /*
+ * install flow entry on remote controller
+ */
+ public void installFlowEntry(String ctrlId, FlowEntry entry);
+ /*
+ * remove flow entry on remote controller
+ */
+ public void removeFlowEntry(String ctrlId, FlowEntry entry);
+}