Refactor the logic on collecting OpenFlow message statistics
Change-Id: I34c209c0ca90cb094ed5f82c96a8a43d3519b807
diff --git a/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
index ba3eab5..43b91fd 100644
--- a/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/protocols/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -34,6 +34,7 @@
import org.onosproject.openflow.controller.Dpid;
import org.onosproject.openflow.controller.OpenFlowController;
import org.onosproject.openflow.controller.OpenFlowEventListener;
+import org.onosproject.openflow.controller.OpenFlowMessageListener;
import org.onosproject.openflow.controller.OpenFlowPacketContext;
import org.onosproject.openflow.controller.OpenFlowSwitch;
import org.onosproject.openflow.controller.OpenFlowSwitchListener;
@@ -134,7 +135,7 @@
protected Set<OpenFlowEventListener> ofEventListener = new CopyOnWriteArraySet<>();
- protected boolean monitorAllEvents = false;
+ protected Set<OpenFlowMessageListener> ofMessageListener = new CopyOnWriteArraySet<>();
protected Multimap<Dpid, OFFlowStatsEntry> fullFlowStats =
ArrayListMultimap.create();
@@ -217,11 +218,6 @@
}
@Override
- public void monitorAllEvents(boolean monitor) {
- this.monitorAllEvents = monitor;
- }
-
- @Override
public void addListener(OpenFlowSwitchListener listener) {
if (!ofSwitchListener.contains(listener)) {
this.ofSwitchListener.add(listener);
@@ -234,6 +230,16 @@
}
@Override
+ public void addMessageListener(OpenFlowMessageListener listener) {
+ ofMessageListener.add(listener);
+ }
+
+ @Override
+ public void removeMessageListener(OpenFlowMessageListener listener) {
+ ofMessageListener.remove(listener);
+ }
+
+ @Override
public void addPacketListener(int priority, PacketListener listener) {
ofPacketListener.put(priority, listener);
}
@@ -625,8 +631,20 @@
}
@Override
+ public void processDownstreamMessage(Dpid dpid, List<OFMessage> m) {
+ for (OpenFlowMessageListener listener : ofMessageListener) {
+ listener.handleOutgoingMessage(dpid, m);
+ }
+ }
+
+
+ @Override
public void processMessage(Dpid dpid, OFMessage m) {
processPacket(dpid, m);
+
+ for (OpenFlowMessageListener listener : ofMessageListener) {
+ listener.handleIncomingMessage(dpid, m);
+ }
}
@Override