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
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
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