Migrate MultipartReplyPortStatsDeserializer 98/94598/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 14:24:05 +0000 (15:24 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Jan 2021 14:24:43 +0000 (15:24 +0100)
Use readUint{32,64} and BindingMap to eliminate warnings, and improve
both readability and performance.

Change-Id: Ib30396a7cc8deee9ad254e27730ed1361ef718d7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyPortStatsDeserializer.java

index 320b833fff60336ccee22fef6c51c84b48b179da..f5e9de582bea3c121a2647585eebae5f2700d0cd 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,15 +24,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.m
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
 public class MultipartReplyPortStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
 
     private static final byte PADDING_IN_PORT_STATS_HEADER = 4;
 
     @Override
-    public MultipartReplyBody deserialize(ByteBuf message) {
+    public MultipartReplyBody deserialize(final ByteBuf message) {
         final MultipartReplyPortStatsBuilder builder = new MultipartReplyPortStatsBuilder();
-        final List<NodeConnectorStatisticsAndPortNumberMap> items = new ArrayList<>();
+        final var items = BindingMap
+            .<NodeConnectorStatisticsAndPortNumberMapKey, NodeConnectorStatisticsAndPortNumberMap>orderedBuilder();
 
         while (message.readableBytes() > 0) {
             final NodeConnectorStatisticsAndPortNumberMapBuilder itemBuilder =
@@ -45,58 +46,33 @@ public class MultipartReplyPortStatsDeserializer implements OFDeserializer<Multi
 
             message.skipBytes(PADDING_IN_PORT_STATS_HEADER);
 
-            final byte[] recPack = new byte[Long.BYTES];
-            message.readBytes(recPack);
-            final byte[] txPack = new byte[Long.BYTES];
-            message.readBytes(txPack);
-            final byte[] recByt = new byte[Long.BYTES];
-            message.readBytes(recByt);
-            final byte[] txByt = new byte[Long.BYTES];
-            message.readBytes(txByt);
-            final byte[] recDrop = new byte[Long.BYTES];
-            message.readBytes(recDrop);
-            final byte[] txDrop = new byte[Long.BYTES];
-            message.readBytes(txDrop);
-            final byte[] recError = new byte[Long.BYTES];
-            message.readBytes(recError);
-            final byte[] txError = new byte[Long.BYTES];
-            message.readBytes(txError);
-            final byte[] recFrameError = new byte[Long.BYTES];
-            message.readBytes(recFrameError);
-            final byte[] recOverRunError = new byte[Long.BYTES];
-            message.readBytes(recOverRunError);
-            final byte[] recCrcError = new byte[Long.BYTES];
-            message.readBytes(recCrcError);
-            final byte[] collisionCount = new byte[Long.BYTES];
-            message.readBytes(collisionCount);
-
             items.add(itemBuilder
                     .withKey(new NodeConnectorStatisticsAndPortNumberMapKey(itemBuilder.getNodeConnectorId()))
                     .setPackets(new PacketsBuilder()
-                            .setReceived(new BigInteger(1, recPack))
-                            .setTransmitted(new BigInteger(1, txPack))
+                            .setReceived(readUint64(message))
+                            .setTransmitted(readUint64(message))
                             .build())
                     .setBytes(new BytesBuilder()
-                            .setReceived(new BigInteger(1, recByt))
-                            .setTransmitted(new BigInteger(1, txByt))
+                            .setReceived(readUint64(message))
+                            .setTransmitted(readUint64(message))
                             .build())
-                    .setReceiveDrops(new BigInteger(1, recDrop))
-                    .setTransmitDrops(new BigInteger(1, txDrop))
-                    .setReceiveErrors(new BigInteger(1, recError))
-                    .setTransmitErrors(new BigInteger(1, txError))
-                    .setReceiveFrameError(new BigInteger(1, recFrameError))
-                    .setReceiveOverRunError(new BigInteger(1, recOverRunError))
-                    .setReceiveCrcError(new BigInteger(1, recCrcError))
-                    .setCollisionCount(new BigInteger(1, collisionCount))
+                    .setReceiveDrops(readUint64(message))
+                    .setTransmitDrops(readUint64(message))
+                    .setReceiveErrors(readUint64(message))
+                    .setTransmitErrors(readUint64(message))
+                    .setReceiveFrameError(readUint64(message))
+                    .setReceiveOverRunError(readUint64(message))
+                    .setReceiveCrcError(readUint64(message))
+                    .setCollisionCount(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
-                .setNodeConnectorStatisticsAndPortNumberMap(items)
+                .setNodeConnectorStatisticsAndPortNumberMap(items.build())
                 .build();
     }