Added FlowSync flag to FlowProgrammer.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
index 87a4767..a59a9f9 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
@@ -11,6 +11,8 @@
import net.floodlightcontroller.core.module.IFloodlightService;
public class FlowProgrammer implements IFloodlightModule {
+ private static final boolean enableFlowSync = false;
+
protected volatile IFloodlightProviderService floodlightProvider;
protected FlowPusher pusher;
@@ -20,7 +22,9 @@
public FlowProgrammer() {
pusher = new FlowPusher(NUM_PUSHER_THREAD);
+ if (enableFlowSync) {
synchronizer = new FlowSynchronizer();
+ }
}
@Override
@@ -28,13 +32,17 @@
throws FloodlightModuleException {
floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
pusher.init(null, floodlightProvider.getOFMessageFactory(), null);
+ if (enableFlowSync) {
synchronizer.init(context);
+ }
}
@Override
public void startUp(FloodlightModuleContext context) {
pusher.start();
+ if (enableFlowSync) {
synchronizer.startUp(context);
+ }
}
@Override
@@ -42,7 +50,9 @@
Collection<Class<? extends IFloodlightService>> l =
new ArrayList<Class<? extends IFloodlightService>>();
l.add(IFlowPusherService.class);
+ if (enableFlowSync) {
l.add(IFlowSyncService.class);
+ }
return l;
}
@@ -53,7 +63,9 @@
new HashMap<Class<? extends IFloodlightService>,
IFloodlightService>();
m.put(IFlowPusherService.class, pusher);
- m.put(IFlowSyncService.class, synchronizer);
+ if (enableFlowSync) {
+ m.put(IFlowSyncService.class, synchronizer);
+ }
return m;
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
index e87f631..532477a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
@@ -33,8 +33,8 @@
import net.onrc.onos.ofcontroller.util.Port;
/**
- * FlowPusher intermediates flow_mod sent from FlowManager/FlowSync to switches.
- * FlowPusher controls the rate of sending flow_mods so that connection doesn't overflow.
+ * FlowPusher intermediates FlowManager/FlowSynchronizer and switches to push OpenFlow
+ * messages to switches in proper rate.
* @author Naoki Shiota
*
*/
@@ -64,6 +64,7 @@
SUSPENDED,
}
+ @SuppressWarnings("serial")
private class SwitchQueue extends ArrayDeque<OFMessage> {
QueueState state;
@@ -107,6 +108,11 @@
private int number_thread = 1;
+ /**
+ * Main thread that reads messages from queues and sends them to switches.
+ * @author Naoki Shiota
+ *
+ */
private class FlowPusherProcess implements Runnable {
private Map<IOFSwitch,SwitchQueue> queues
= new HashMap<IOFSwitch,SwitchQueue>();
@@ -233,7 +239,7 @@
}
/**
- * Suspend processing a queue related to given switch.
+ * Suspend sending messages to switch.
* @param sw
*/
@Override
@@ -254,7 +260,7 @@
}
/**
- * Resume processing a queue related to given switch.
+ * Resume sending messages to switch.
*/
@Override
public boolean resume(IOFSwitch sw) {
@@ -273,6 +279,9 @@
}
}
+ /**
+ * Check if given switch is suspended.
+ */
@Override
public boolean isSuspended(IOFSwitch sw) {
SwitchQueue queue = getQueue(sw);
@@ -286,7 +295,7 @@
}
/**
- * End processing queue and exit thread.
+ * Stop processing queue and exit thread.
*/
public void stop() {
if (threadMap == null) {
@@ -300,6 +309,11 @@
}
}
+ /**
+ * Set sending rate to a switch.
+ * @param sw Switch.
+ * @param rate Rate in bytes/sec.
+ */
public void setRate(IOFSwitch sw, long rate) {
SwitchQueue queue = getQueue(sw);
if (queue == null) {
@@ -313,8 +327,9 @@
/**
* Add OFMessage to the queue related to given switch.
- * @param sw
- * @param msg
+ * @param sw Switch to which message is sent.
+ * @param msg Message to be sent.
+ * @return true if succeed.
*/
@Override
public boolean add(IOFSwitch sw, OFMessage msg) {
@@ -341,10 +356,10 @@
/**
* Create OFMessage from given flow information and add it to the queue.
- * @param sw
- * @param flowObj
- * @param flowEntryObj
- * @return
+ * @param sw Switch to which message is sent.
+ * @param flowObj FlowPath.
+ * @param flowEntryObj FlowEntry.
+ * @return true if succeed.
*/
@Override
public boolean add(IOFSwitch sw, IFlowPath flowObj, IFlowEntry flowEntryObj) {
@@ -651,6 +666,13 @@
return true;
}
+ /**
+ * Create OFMessage from given flow information and add it to the queue.
+ * @param sw Switch to which message is sent.
+ * @param flowPath FlowPath.
+ * @param flowEntry FlowEntry.
+ * @return true if secceed.
+ */
@Override
public boolean add(IOFSwitch sw, FlowPath flowPath, FlowEntry flowEntry) {
//