Fixed conversion of GetAsyncReply and SetAsync messages
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / GetAsyncReplyMessageFactory.java
index 9228eae7ff0e1e2eeb33c3c13d90c41cadfeee2d..30584823b32e218f78f26fee906743c29096a357 100644 (file)
@@ -12,12 +12,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutputBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.FlowRemovedMask;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.FlowRemovedMaskBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.PacketInMask;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.PacketInMaskBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.PortStatusMask;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.get.async.reply.PortStatusMaskBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.FlowRemovedMask;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.FlowRemovedMaskBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PacketInMask;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PacketInMaskBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PortStatusMask;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.async.body.grouping.PortStatusMaskBuilder;\r
 \r
 /**\r
  * Translates GetAsyncReply messages\r
@@ -27,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class GetAsyncReplyMessageFactory implements OFDeserializer<GetAsyncOutput> {\r
     \r
     private static GetAsyncReplyMessageFactory instance;\r
+    private static final byte SEPARATE_ROLES = 2;\r
     \r
     private GetAsyncReplyMessageFactory() {\r
         // singleton\r
@@ -53,97 +54,81 @@ public class GetAsyncReplyMessageFactory implements OFDeserializer<GetAsyncOutpu
         return builder.build();\r
     }\r
     \r
-    private static List<PacketInMask> decodePacketInMask(ByteBuf outputBuf) {\r
-        List<PacketInReason> readPIRList = new ArrayList<>();\r
+    private static List<PacketInMask> decodePacketInMask(ByteBuf input) {\r
         List<PacketInMask> inMasks = new ArrayList<>();\r
-        PacketInMaskBuilder maskBuilder = new PacketInMaskBuilder();\r
-        \r
-        readPIRList.add(decodedPacketInReason((int) outputBuf.readUnsignedInt()));\r
-        readPIRList.add(decodedPacketInReason((int) outputBuf.readUnsignedInt()));\r
-        inMasks.add(maskBuilder.setMask(readPIRList).build()); \r
+        PacketInMaskBuilder maskBuilder;\r
+        for (int i = 0; i < SEPARATE_ROLES; i++) {\r
+            maskBuilder = new PacketInMaskBuilder();\r
+            maskBuilder.setMask(decodePacketInReasons(input.readUnsignedInt()));\r
+            inMasks.add(maskBuilder.build()); \r
+        }\r
         return inMasks;\r
     }\r
     \r
-    private static List<PortStatusMask> decodePortStatusMask(ByteBuf outputBuf) {\r
-        List<PortReason> readPortReasonList = new ArrayList<>();\r
+    private static List<PortStatusMask> decodePortStatusMask(ByteBuf input) {\r
         List<PortStatusMask> inMasks = new ArrayList<>();\r
-        PortStatusMaskBuilder maskBuilder = new PortStatusMaskBuilder();\r
-        \r
-        readPortReasonList.add(decodePortReason((int) outputBuf.readUnsignedInt()));\r
-        readPortReasonList.add(decodePortReason((int) outputBuf.readUnsignedInt()));\r
-        inMasks.add(maskBuilder.setMask(readPortReasonList).build()); \r
+        PortStatusMaskBuilder maskBuilder;\r
+        for (int i = 0; i < SEPARATE_ROLES; i++) {\r
+            maskBuilder = new PortStatusMaskBuilder();\r
+            maskBuilder.setMask(decodePortReasons(input.readUnsignedInt()));\r
+            inMasks.add(maskBuilder.build());\r
+        }\r
         return inMasks;\r
     }\r
     \r
-    private static List<FlowRemovedMask> decodeFlowRemovedMask(ByteBuf outputBuf) {\r
-        List<FlowRemovedReason> readFlowRemovedReasonList = new ArrayList<>();\r
+    private static List<FlowRemovedMask> decodeFlowRemovedMask(ByteBuf input) {\r
         List<FlowRemovedMask> inMasks = new ArrayList<>();\r
-        FlowRemovedMaskBuilder maskBuilder = new FlowRemovedMaskBuilder();\r
-        \r
-        readFlowRemovedReasonList.add(decodeFlowRemovedReason((int) outputBuf.readUnsignedInt()));\r
-        readFlowRemovedReasonList.add(decodeFlowRemovedReason((int) outputBuf.readUnsignedInt()));\r
-        inMasks.add(maskBuilder.setMask(readFlowRemovedReasonList).build()); \r
+        FlowRemovedMaskBuilder maskBuilder;\r
+        for (int i = 0; i < SEPARATE_ROLES; i++) {\r
+            maskBuilder = new FlowRemovedMaskBuilder();\r
+            maskBuilder.setMask(decodeFlowRemovedReasons(input.readUnsignedInt()));\r
+            inMasks.add(maskBuilder.build());\r
+        }\r
         return inMasks;\r
     }\r
     \r
-    private static PacketInReason decodedPacketInReason(int input) {\r
-        PacketInReason reason = null;\r
-        Boolean OFPRNOMATCH = (input & (1 << 0)) != 0;\r
-        Boolean OFPRACTION = (input & (1 << 1)) != 0;\r
-        Boolean OFPRINVALIDTTL = (input & (1 << 2)) != 0;\r
-        \r
-        if (OFPRNOMATCH) {\r
-            return PacketInReason.forValue(0);\r
-            }\r
-        if (OFPRACTION) {\r
-            return PacketInReason.forValue(1);\r
-            }\r
-        if (OFPRINVALIDTTL) {\r
-            return PacketInReason.forValue(2);\r
-            }\r
-        \r
-        return reason;\r
+    private static List<PacketInReason> decodePacketInReasons(long input) {\r
+        List<PacketInReason> reasons = new ArrayList<>();\r
+        if ((input & (1 << 0)) != 0) {\r
+            reasons.add(PacketInReason.OFPRNOMATCH);\r
+        }\r
+        if ((input & (1 << 1)) != 0) {\r
+            reasons.add(PacketInReason.OFPRACTION);\r
+        }\r
+        if ((input & (1 << 2)) != 0) {\r
+            reasons.add(PacketInReason.OFPRINVALIDTTL);\r
+        }\r
+        return reasons;\r
     }\r
     \r
-    private static PortReason decodePortReason(int input) {\r
-        PortReason reason = null;\r
-        Boolean OFPPRADD = (input & (1 << 0)) != 0;\r
-        Boolean OFPPRDELETE = (input & (1 << 1)) != 0;\r
-        Boolean OFPPRMODIFY = (input & (1 << 2)) != 0;\r
-        \r
-        if (OFPPRADD) {\r
-            return PortReason.forValue(0);\r
-            }\r
-        if (OFPPRDELETE) {\r
-            return PortReason.forValue(1);\r
-            }\r
-        if (OFPPRMODIFY) {\r
-            return PortReason.forValue(2);\r
-            }\r
-        \r
-        return reason;\r
+    private static List<PortReason> decodePortReasons(long input) {\r
+        List<PortReason> reasons = new ArrayList<>();\r
+        if ((input & (1 << 0)) != 0) {\r
+            reasons.add(PortReason.OFPPRADD);\r
+        }\r
+        if ((input & (1 << 1)) != 0) {\r
+            reasons.add(PortReason.OFPPRDELETE);\r
+        }\r
+        if ((input & (1 << 2)) != 0) {\r
+            reasons.add(PortReason.OFPPRMODIFY);\r
+        }\r
+        return reasons;\r
     }\r
     \r
-    private static FlowRemovedReason decodeFlowRemovedReason(int input) {\r
-        FlowRemovedReason reason = null;\r
-        Boolean OFPRRIDLETIMEOUT = (input & (1 << 0)) != 0;\r
-        Boolean OFPRRHARDTIMEOUT = (input & (1 << 1)) != 0;\r
-        Boolean OFPRRDELETE = (input & (1 << 2)) != 0;\r
-        Boolean OFPRRGROUPDELETE = (input & (1 << 3)) != 0;\r
-        \r
-        if (OFPRRIDLETIMEOUT) {\r
-            return FlowRemovedReason.forValue(0);\r
-            }\r
-        if (OFPRRHARDTIMEOUT) {\r
-            return FlowRemovedReason.forValue(1);\r
-            }\r
-        if (OFPRRDELETE) {\r
-            return FlowRemovedReason.forValue(2);\r
-            }\r
-        if (OFPRRGROUPDELETE) {\r
-            return FlowRemovedReason.forValue(3);\r
-            }\r
-        \r
-        return reason;\r
+    private static List<FlowRemovedReason> decodeFlowRemovedReasons(long input) {\r
+        List<FlowRemovedReason> reasons = new ArrayList<>();\r
+        if ((input & (1 << 0)) != 0) {\r
+            reasons.add(FlowRemovedReason.OFPRRIDLETIMEOUT);\r
+        }\r
+        if ((input & (1 << 1)) != 0) {\r
+            reasons.add(FlowRemovedReason.OFPRRHARDTIMEOUT);\r
+        }\r
+        if ((input & (1 << 2)) != 0) {\r
+            reasons.add(FlowRemovedReason.OFPRRDELETE);\r
+        }\r
+        if ((input & (1 << 3)) != 0) {\r
+            reasons.add(FlowRemovedReason.OFPRRGROUPDELETE);\r
+        }\r
+        return reasons;\r
     }\r
 }\r