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
diff --git a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java
deleted file mode 100644
index 6763819..0000000
--- a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/MockOfPacketIn.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.openflow;
-
-import org.projectfloodlight.openflow.protocol.OFPacketIn;
-import org.projectfloodlight.openflow.protocol.OFPacketInReason;
-import org.projectfloodlight.openflow.protocol.OFType;
-import org.projectfloodlight.openflow.protocol.match.Match;
-import org.projectfloodlight.openflow.types.OFBufferId;
-import org.projectfloodlight.openflow.types.OFPort;
-import org.projectfloodlight.openflow.types.TableId;
-import org.projectfloodlight.openflow.types.U64;
-
-/**
- * Mock of the Open Flow packet in message.
- */
-public class MockOfPacketIn extends OfMessageAdapter implements OFPacketIn {
- public MockOfPacketIn() {
- super(OFType.PACKET_IN);
- }
-
- @Override
- public OFBufferId getBufferId() {
- return null;
- }
-
- @Override
- public int getTotalLen() {
- return 0;
- }
-
- @Override
- public OFPacketInReason getReason() {
- return null;
- }
-
- @Override
- public TableId getTableId() {
- return null;
- }
-
- @Override
- public Match getMatch() {
- return null;
- }
-
- @Override
- public byte[] getData() {
- return new byte[0];
- }
-
- @Override
- public OFPort getInPort() {
- return null;
- }
-
- @Override
- public OFPort getInPhyPort() {
- return null;
- }
-
- @Override
- public U64 getCookie() {
- return null;
- }
-
- @Override
- public OFPacketIn.Builder createBuilder() {
- return null;
- }
-}
diff --git a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java
index 0efd6fa..115c9ea 100644
--- a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java
+++ b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/OpenflowSwitchDriverAdapter.java
@@ -15,14 +15,11 @@
*/
package org.onosproject.openflow;
-import java.util.List;
-
import org.jboss.netty.channel.Channel;
import org.onosproject.net.Device;
import org.onosproject.net.driver.DriverData;
import org.onosproject.net.driver.DriverHandler;
import org.onosproject.openflow.controller.Dpid;
-import org.onosproject.openflow.controller.OpenFlowEventListener;
import org.onosproject.openflow.controller.RoleState;
import org.onosproject.openflow.controller.driver.OpenFlowAgent;
import org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver;
@@ -38,6 +35,8 @@
import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
import org.projectfloodlight.openflow.protocol.OFVersion;
+import java.util.List;
+
/**
* Testing adapter for the OpenFlow switch driver class.
*/
@@ -300,12 +299,4 @@
public String channelId() {
return null;
}
-
- @Override
- public void addEventListener(OpenFlowEventListener listener) {
- }
-
- @Override
- public void removeEventListener(OpenFlowEventListener listener) {
- }
}
diff --git a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/MockOfFlowRemoved.java b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/MockOfFlowRemoved.java
deleted file mode 100644
index 9aee677..0000000
--- a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/MockOfFlowRemoved.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.openflow.controller.impl;
-
-import org.onosproject.openflow.OfMessageAdapter;
-import org.projectfloodlight.openflow.protocol.OFFlowRemoved;
-import org.projectfloodlight.openflow.protocol.OFType;
-import org.projectfloodlight.openflow.protocol.match.Match;
-import org.projectfloodlight.openflow.types.TableId;
-import org.projectfloodlight.openflow.types.U64;
-
-/**
- * Mock of the Open Flow packet removed message.
- */
-public class MockOfFlowRemoved extends OfMessageAdapter implements OFFlowRemoved {
-
- public MockOfFlowRemoved() {
- super(OFType.FLOW_REMOVED);
- }
-
- @Override
- public U64 getCookie() {
- return null;
- }
-
- @Override
- public int getPriority() {
- return 0;
- }
-
- @Override
- public short getReason() {
- return 0;
- }
-
- @Override
- public TableId getTableId() throws UnsupportedOperationException {
- return null;
- }
-
- @Override
- public long getDurationSec() {
- return 0;
- }
-
- @Override
- public long getDurationNsec() {
- return 0;
- }
-
- @Override
- public int getIdleTimeout() {
- return 0;
- }
-
- @Override
- public int getHardTimeout() throws UnsupportedOperationException {
- return 0;
- }
-
- @Override
- public U64 getPacketCount() {
- return null;
- }
-
- @Override
- public U64 getByteCount() {
- return null;
- }
-
- @Override
- public Match getMatch() {
- return null;
- }
-
- @Override
- public OFFlowRemoved.Builder createBuilder() {
- return null;
- }
-}
diff --git a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java
index d87913a..54fae4e 100644
--- a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java
+++ b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplPacketsTest.java
@@ -104,7 +104,6 @@
agent = controller.agent;
switchListener = new OpenFlowSwitchListenerAdapter();
controller.addListener(switchListener);
- controller.monitorAllEvents(true);
packetListener = new TestPacketListener();
controller.addPacketListener(100, packetListener);