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> {
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()))
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;
}