Fixup Augmentable and Identifiable methods changing
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / multipart / MultipartReplyQueueStatsDeserializer.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
10
11 import io.netty.buffer.ByteBuf;
12 import java.math.BigInteger;
13 import java.util.ArrayList;
14 import java.util.List;
15 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
16 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
17 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.queue.rev130925.QueueId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStatsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMap;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapKey;
28
29 public class MultipartReplyQueueStatsDeserializer implements OFDeserializer<MultipartReplyBody> {
30
31     @Override
32     public MultipartReplyBody deserialize(ByteBuf message) {
33         final MultipartReplyQueueStatsBuilder builder = new MultipartReplyQueueStatsBuilder();
34         final List<QueueIdAndStatisticsMap> items = new ArrayList<>();
35
36         while (message.readableBytes() > 0) {
37             final long port = message.readUnsignedInt();
38             final NodeConnectorId nodeConnectorId = new NodeConnectorId(OpenflowPortsUtil
39                     .getProtocolAgnosticPortUri(EncodeConstants.OF13_VERSION_ID, port));
40             final QueueId queueId = new QueueId(message.readUnsignedInt());
41
42             final byte[] txBytes = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
43             message.readBytes(txBytes);
44             final byte[] txPackets = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
45             message.readBytes(txPackets);
46             final byte[] txErrors = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
47             message.readBytes(txErrors);
48
49             items.add(new QueueIdAndStatisticsMapBuilder()
50                 .withKey(new QueueIdAndStatisticsMapKey(nodeConnectorId, queueId))
51                 .setNodeConnectorId(nodeConnectorId)
52                 .setQueueId(queueId)
53                 .setTransmittedBytes(new Counter64(new BigInteger(1, txBytes)))
54                 .setTransmittedPackets(new Counter64(new BigInteger(1, txPackets)))
55                 .setTransmissionErrors(new Counter64(new BigInteger(1, txErrors)))
56                 .setDuration(new DurationBuilder()
57                     .setSecond(new Counter32(message.readUnsignedInt()))
58                     .setNanosecond(new Counter32(message.readUnsignedInt()))
59                     .build())
60                 .build());
61         }
62
63         return builder
64             .setQueueIdAndStatisticsMap(items)
65             .build();
66     }
67
68 }