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