Renamed devicemanager, flowprogrammer, linkdiscovery and util packages

net.onrc.onos.ofcontroller.devicemanager.* => net.onrc.onos.core.devicemanager.*
net.onrc.onos.ofcontroller.flowprogrammer.* => net.onrc.onos.core.flowprogrammer.*
net.onrc.onos.ofcontroller.linkdiscovery.* => net.onrc.onos.core.linkdiscovery.*
net.onrc.onos.ofcontroller.util.* => net.onrc.onos.core.util.*

Change-Id: Iaa865af552e8fb3a589e73d006569ac79f5a0f08
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/IFlowSyncService.java b/src/main/java/net/onrc/onos/core/flowprogrammer/IFlowSyncService.java
new file mode 100644
index 0000000..f2d5989
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/IFlowSyncService.java
@@ -0,0 +1,30 @@
+package net.onrc.onos.core.flowprogrammer;
+
+import java.util.concurrent.Future;
+
+import net.floodlightcontroller.core.IOFSwitch;
+import net.floodlightcontroller.core.module.IFloodlightService;
+
+/**
+ * FlowSyncService is a service to synchronize GraphDB and switch's flow table.
+ * FlowSyncService offers APIs to trigger and interrupt synchronization explicitly.
+ *
+ * @author Brian
+ */
+public interface IFlowSyncService extends IFloodlightService {
+    public Future<SyncResult> synchronize(IOFSwitch sw);
+
+    public void interrupt(IOFSwitch sw);
+
+    public class SyncResult {
+        public final int flowAdded;
+        public final int flowRemoved;
+        public final int flowSkipped;
+
+        public SyncResult(int added, int removed, int skipped) {
+            flowAdded = added;
+            flowRemoved = removed;
+            flowSkipped = skipped;
+        }
+    }
+}