Fixup Augmentable and Identifiable methods changing
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / multipart / MultipartReplyMeterStatsDeserializer.java
index 09eb3a47947bfb1108aaa2d843818ad9cba0f15e..d43c6c1e93ab04804aed2d4caf716ea1f0056525 100644 (file)
@@ -13,16 +13,20 @@ import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart.reply.body.MultipartReplyMeterStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.DurationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.MeterBandStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStat;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStatBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStatKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
 
 public class MultipartReplyMeterStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
@@ -44,9 +48,17 @@ public class MultipartReplyMeterStatsDeserializer implements OFDeserializer<Mult
             message.skipBytes(PADDING_IN_METER_STATS_HEADER);
 
             itemBuilder
-                .setFlowCount(new Counter32(message.readUnsignedInt()))
-                .setPacketInCount(new Counter64(BigInteger.valueOf(message.readLong())))
-                .setByteInCount(new Counter64(BigInteger.valueOf(message.readLong())))
+                .withKey(new MeterStatsKey(itemBuilder.getMeterId()))
+                .setFlowCount(new Counter32(message.readUnsignedInt()));
+
+            final byte[] packetCount = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
+            message.readBytes(packetCount);
+            final byte[] byteCount = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
+            message.readBytes(byteCount);
+
+            itemBuilder
+                .setPacketInCount(new Counter64(new BigInteger(1, packetCount)))
+                .setByteInCount(new Counter64(new BigInteger(1, byteCount)))
                 .setDuration(new DurationBuilder()
                         .setSecond(new Counter32(message.readUnsignedInt()))
                         .setNanosecond(new Counter32(message.readUnsignedInt()))
@@ -54,13 +66,22 @@ public class MultipartReplyMeterStatsDeserializer implements OFDeserializer<Mult
 
             final List<BandStat> subItems = new ArrayList<>();
             int actualLength = METER_BODY_LENGTH;
+            long bandKey = 0;
 
             while (actualLength < itemLength) {
+                final byte[] packetCountB = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
+                message.readBytes(packetCountB);
+                final byte[] byteCountB = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
+                message.readBytes(byteCountB);
+
                 subItems.add(new BandStatBuilder()
-                        .setPacketBandCount(new Counter64(BigInteger.valueOf(message.readLong())))
-                        .setByteBandCount(new Counter64(BigInteger.valueOf(message.readLong())))
-                        .build());
+                    .setBandId(new BandId(bandKey))
+                    .withKey(new BandStatKey(new BandId(bandKey)))
+                    .setPacketBandCount(new Counter64(new BigInteger(1, packetCountB)))
+                    .setByteBandCount(new Counter64(new BigInteger(1, byteCountB)))
+                    .build());
 
+                bandKey++;
                 actualLength += METER_BAND_STATS_LENGTH;
             }