netty4 OpenFlow southbound

- separate I/O thread and message dispatch threads

Change-Id: I11a10a47de451a9e3063b62f9450be19c3a9dae7
diff --git a/providers/null/pom.xml b/providers/null/pom.xml
index 321de42..7490d37 100644
--- a/providers/null/pom.xml
+++ b/providers/null/pom.xml
@@ -55,6 +55,11 @@
         </dependency>
 
         <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-api</artifactId>
             <classifier>tests</classifier>
diff --git a/providers/openflow/app/pom.xml b/providers/openflow/app/pom.xml
index 4f152ab..9a42cf9 100644
--- a/providers/openflow/app/pom.xml
+++ b/providers/openflow/app/pom.xml
@@ -21,7 +21,7 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
@@ -47,7 +47,7 @@
     <dependencies>
     <dependency>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-api</artifactId>
+        <artifactId>onos-protocols-openflow-api</artifactId>
     </dependency>
     </dependencies>
 </project>
diff --git a/providers/openflow/base/app.xml b/providers/openflow/base/app.xml
index a372932..14439ff 100644
--- a/providers/openflow/base/app.xml
+++ b/providers/openflow/base/app.xml
@@ -19,12 +19,12 @@
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}" apps="org.onosproject.optical-model">
     <description>${project.description}</description>
-    <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact>
-    <artifact>mvn:${project.groupId}/onos-of-ctl/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-protocols-openflow-api/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-protocols-openflow-ctl/${project.version}</artifact>
 
-    <artifact>mvn:${project.groupId}/onos-of-provider-device/${project.version}</artifact>
-    <artifact>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</artifact>
-    <artifact>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</artifact>
-    <artifact>mvn:${project.groupId}/onos-of-provider-group/${project.version}</artifact>
-    <artifact>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-device/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-packet/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-flow/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-group/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-meter/${project.version}</artifact>
 </app>
diff --git a/providers/openflow/base/features.xml b/providers/openflow/base/features.xml
index dc00bde..95baf4d 100644
--- a/providers/openflow/base/features.xml
+++ b/providers/openflow/base/features.xml
@@ -19,13 +19,13 @@
              description="${project.description}">
         <feature>onos-api</feature>
         <bundle>mvn:org.onosproject/openflowj/3.2.0.onos</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-protocols-openflow-api/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-protocols-openflow-ctl/${project.version}</bundle>
 
-        <bundle>mvn:${project.groupId}/onos-of-provider-device/${project.version}</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-provider-group/${project.version}</bundle>
-        <bundle>mvn:${project.groupId}/onos-of-provider-meter/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-device/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-packet/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-flow/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-group/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-meter/${project.version}</bundle>
     </feature>
 </features>
diff --git a/providers/openflow/base/pom.xml b/providers/openflow/base/pom.xml
index c00f88e..5e02635 100644
--- a/providers/openflow/base/pom.xml
+++ b/providers/openflow/base/pom.xml
@@ -21,7 +21,7 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
@@ -33,11 +33,11 @@
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-api</artifactId>
+            <artifactId>onos-protocols-openflow-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-ctl</artifactId>
+            <artifactId>onos-protocols-openflow-ctl</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
@@ -47,22 +47,22 @@
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-provider-device</artifactId>
+            <artifactId>onos-providers-openflow-device</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-provider-packet</artifactId>
+            <artifactId>onos-providers-openflow-packet</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-provider-flow</artifactId>
+            <artifactId>onos-providers-openflow-flow</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-provider-group</artifactId>
+            <artifactId>onos-providers-openflow-group</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git a/providers/openflow/device/pom.xml b/providers/openflow/device/pom.xml
index 097efa6..5798c90 100644
--- a/providers/openflow/device/pom.xml
+++ b/providers/openflow/device/pom.xml
@@ -21,11 +21,11 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-device</artifactId>
+    <artifactId>onos-providers-openflow-device</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow protocol device provider</description>
diff --git a/providers/openflow/flow/pom.xml b/providers/openflow/flow/pom.xml
index d7e714d..b3e78b4 100644
--- a/providers/openflow/flow/pom.xml
+++ b/providers/openflow/flow/pom.xml
@@ -21,11 +21,11 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-flow</artifactId>
+    <artifactId>onos-providers-openflow-flow</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow protocol flow provider</description>
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
index 17cf980..575f5b2 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
@@ -24,6 +24,8 @@
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -31,8 +33,6 @@
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.jboss.netty.buffer.ChannelBuffer;
-import org.jboss.netty.buffer.ChannelBuffers;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.net.DeviceId;
@@ -565,8 +565,7 @@
                 return null;
             }
 
-            ChannelBuffer bb = ChannelBuffers.wrappedBuffer(
-                    msg.getData().getData());
+            ByteBuf bb = Unpooled.wrappedBuffer(msg.getData().getData());
 
             if (bb.readableBytes() < MIN_EXPECTED_BYTE_LEN) {
                 log.debug("Wrong length: Expected to be >= {}, was: {}",
diff --git a/providers/openflow/group/pom.xml b/providers/openflow/group/pom.xml
index 191b6c3..fc015b2 100644
--- a/providers/openflow/group/pom.xml
+++ b/providers/openflow/group/pom.xml
@@ -21,11 +21,11 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-group</artifactId>
+    <artifactId>onos-providers-openflow-group</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow protocol group provider</description>
@@ -33,7 +33,7 @@
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-provider-flow</artifactId>
+            <artifactId>onos-providers-openflow-flow</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git a/providers/openflow/message/app.xml b/providers/openflow/message/app.xml
index ac282d5..24ee590 100644
--- a/providers/openflow/message/app.xml
+++ b/providers/openflow/message/app.xml
@@ -19,5 +19,5 @@
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-    <artifact>mvn:${project.groupId}/onos-of-provider-message/${project.version}</artifact>
+    <artifact>mvn:${project.groupId}/onos-providers-openflow-message/${project.version}</artifact>
 </app>
diff --git a/providers/openflow/message/features.xml b/providers/openflow/message/features.xml
index 5b84ecd..1c4a9f0 100644
--- a/providers/openflow/message/features.xml
+++ b/providers/openflow/message/features.xml
@@ -18,7 +18,7 @@
     <feature name="${project.artifactId}" version="${project.version}"
              description="${project.description}">
         <feature>onos-api</feature>
-        <bundle>mvn:${project.groupId}/onos-of-provider-message/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-providers-openflow-message/${project.version}</bundle>
         <bundle>mvn:${project.groupId}/onos-app-cpman-api/${project.version}</bundle>
     </feature>
 </features>
diff --git a/providers/openflow/message/pom.xml b/providers/openflow/message/pom.xml
index 346e501..f083838 100644
--- a/providers/openflow/message/pom.xml
+++ b/providers/openflow/message/pom.xml
@@ -20,11 +20,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-message</artifactId>
+    <artifactId>onos-providers-openflow-message</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow control message provider</description>
diff --git a/providers/openflow/meter/pom.xml b/providers/openflow/meter/pom.xml
index dcf3001..4f7fbea 100644
--- a/providers/openflow/meter/pom.xml
+++ b/providers/openflow/meter/pom.xml
@@ -21,11 +21,11 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-meter</artifactId>
+    <artifactId>onos-providers-openflow-meter</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow protocol meter provider</description>
diff --git a/providers/openflow/packet/pom.xml b/providers/openflow/packet/pom.xml
index bd3ff26..7751b46 100644
--- a/providers/openflow/packet/pom.xml
+++ b/providers/openflow/packet/pom.xml
@@ -21,11 +21,11 @@
 
     <parent>
         <groupId>org.onosproject</groupId>
-        <artifactId>onos-of-providers</artifactId>
+        <artifactId>onos-providers-openflow</artifactId>
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-provider-packet</artifactId>
+    <artifactId>onos-providers-openflow-packet</artifactId>
     <packaging>bundle</packaging>
 
     <description>ONOS OpenFlow protocol packet provider</description>
diff --git a/providers/openflow/pom.xml b/providers/openflow/pom.xml
index 03114df..b574233 100644
--- a/providers/openflow/pom.xml
+++ b/providers/openflow/pom.xml
@@ -25,7 +25,7 @@
         <version>1.11.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>onos-of-providers</artifactId>
+    <artifactId>onos-providers-openflow</artifactId>
     <packaging>pom</packaging>
 
     <description>ONOS OpenFlow protocol adapters</description>
@@ -46,11 +46,11 @@
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-api</artifactId>
+            <artifactId>onos-protocols-openflow-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-of-api</artifactId>
+            <artifactId>onos-protocols-openflow-api</artifactId>
             <classifier>tests</classifier>
             <scope>test</scope>
         </dependency>