Update MRI upstreams for Phosphorus
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / multipart / MultipartReplyQueueStatsDeserializer.java
index 79ea9bd3f8ac98f612f05a66f301e50f88f4281f..9a52396ec8684a4c90dd3f8c9acdb347bf843a44 100644 (file)
@@ -5,13 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint64;
+
 import io.netty.buffer.ByteBuf;
-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.openflowplugin.openflow.md.util.OpenflowPortsUtil;
@@ -25,44 +24,34 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
-        final MultipartReplyQueueStatsBuilder builder = new MultipartReplyQueueStatsBuilder();
-        final List<QueueIdAndStatisticsMap> items = new ArrayList<>();
+    public MultipartReplyBody deserialize(final ByteBuf message) {
+        final var items = BindingMap.<QueueIdAndStatisticsMapKey, QueueIdAndStatisticsMap>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final long port = message.readUnsignedInt();
             final NodeConnectorId nodeConnectorId = new NodeConnectorId(OpenflowPortsUtil
-                    .getProtocolAgnosticPortUri(EncodeConstants.OF13_VERSION_ID, port));
-            final QueueId queueId = new QueueId(message.readUnsignedInt());
-
-            final byte[] txBytes = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
-            message.readBytes(txBytes);
-            final byte[] txPackets = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
-            message.readBytes(txPackets);
-            final byte[] txErrors = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
-            message.readBytes(txErrors);
+                    .getProtocolAgnosticPortUri(EncodeConstants.OF_VERSION_1_3, port));
 
             items.add(new QueueIdAndStatisticsMapBuilder()
-                .setKey(new QueueIdAndStatisticsMapKey(nodeConnectorId, queueId))
                 .setNodeConnectorId(nodeConnectorId)
-                .setQueueId(queueId)
-                .setTransmittedBytes(new Counter64(new BigInteger(1, txBytes)))
-                .setTransmittedPackets(new Counter64(new BigInteger(1, txPackets)))
-                .setTransmissionErrors(new Counter64(new BigInteger(1, txErrors)))
+                .setQueueId(new QueueId(readUint32(message)))
+                .setTransmittedBytes(new Counter64(readUint64(message)))
+                .setTransmittedPackets(new Counter64(readUint64(message)))
+                .setTransmissionErrors(new Counter64(readUint64(message)))
                 .setDuration(new DurationBuilder()
-                    .setSecond(new Counter32(message.readUnsignedInt()))
-                    .setNanosecond(new Counter32(message.readUnsignedInt()))
+                    .setSecond(new Counter32(readUint32(message)))
+                    .setNanosecond(new Counter32(readUint32(message)))
                     .build())
                 .build());
         }
 
-        return builder
-            .setQueueIdAndStatisticsMap(items)
+        return new MultipartReplyQueueStatsBuilder()
+            .setQueueIdAndStatisticsMap(items.build())
             .build();
     }
-
 }