-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.RateQueueProperty;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.RateQueuePropertyBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueProperties;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutputBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.get.config.reply.Queues;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.get.config.reply.QueuesBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueueProperty;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueuePropertyBuilder;\r
-\r
-/**\r
- * Translates QueueGetConfigReply messages (OpenFlow v1.0)\r
- * @author michal.polkorab\r
- */\r
-public class OF10QueueGetConfigReplyMessageFactory implements OFDeserializer<GetQueueConfigOutput> {\r
-\r
- private static final byte PADDING_IN_QUEUE_GET_CONFIG_REPLY_HEADER = 6;\r
- private static final byte PADDING_IN_PACKET_QUEUE_HEADER = 2;\r
- private static final byte PADDING_IN_QUEUE_PROPERTY_HEADER = 4;\r
- private static final byte PADDING_IN_RATE_QUEUE_PROPERTY = 6;\r
- private static final byte PACKET_QUEUE_HEADER_LENGTH = 8;\r
-\r
- private static OF10QueueGetConfigReplyMessageFactory instance;\r
- \r
- private OF10QueueGetConfigReplyMessageFactory() {\r
- // singleton\r
- }\r
- \r
- /**\r
- * \r
- * @return singleton factory\r
- */\r
- public static synchronized OF10QueueGetConfigReplyMessageFactory getInstance(){\r
- \r
- if(instance == null){\r
- instance = new OF10QueueGetConfigReplyMessageFactory();\r
- }\r
- return instance;\r
- }\r
- \r
- @Override\r
- public GetQueueConfigOutput bufferToMessage(ByteBuf rawMessage, short version) {\r
- GetQueueConfigOutputBuilder builder = new GetQueueConfigOutputBuilder();\r
- builder.setVersion(version);\r
- builder.setXid((rawMessage.readUnsignedInt()));\r
- builder.setPort(new PortNumber((long) rawMessage.readUnsignedShort()));\r
- rawMessage.skipBytes(PADDING_IN_QUEUE_GET_CONFIG_REPLY_HEADER);\r
- builder.setQueues(createQueuesList(rawMessage));\r
- return builder.build();\r
- }\r
- \r
- private static List<Queues> createQueuesList(ByteBuf input){\r
- List<Queues> queuesList = new ArrayList<>();\r
- while (input.readableBytes() > 0) {\r
- QueuesBuilder queueBuilder = new QueuesBuilder();\r
- queueBuilder.setQueueId(new QueueId(input.readUnsignedInt()));\r
- int length = input.readUnsignedShort();\r
- input.skipBytes(PADDING_IN_PACKET_QUEUE_HEADER);\r
- queueBuilder.setQueueProperty(createPropertiesList(input, length - PACKET_QUEUE_HEADER_LENGTH));\r
- queuesList.add(queueBuilder.build());\r
- } \r
- return queuesList;\r
- }\r
- \r
- private static List<QueueProperty> createPropertiesList(ByteBuf input, int length){\r
- int propertiesLength = length;\r
- List<QueueProperty> propertiesList = new ArrayList<>();\r
- while (propertiesLength > 0) {\r
- QueuePropertyBuilder propertiesBuilder = new QueuePropertyBuilder();\r
- QueueProperties property = QueueProperties.forValue(input.readUnsignedShort());\r
- propertiesBuilder.setProperty(property);\r
- propertiesLength -= input.readUnsignedShort();\r
- input.skipBytes(PADDING_IN_QUEUE_PROPERTY_HEADER);\r
- if (property.equals(QueueProperties.OFPQTMINRATE)) {\r
- RateQueuePropertyBuilder rateBuilder = new RateQueuePropertyBuilder();\r
- rateBuilder.setRate(input.readUnsignedShort());\r
- propertiesBuilder.addAugmentation(RateQueueProperty.class, rateBuilder.build());\r
- input.skipBytes(PADDING_IN_RATE_QUEUE_PROPERTY);\r
- }\r
- propertiesList.add(propertiesBuilder.build());\r
- }\r
- return propertiesList;\r
- }\r
-}
\ No newline at end of file
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.openflowjava.protocol.impl.deserialization.factories;
+
+import io.netty.buffer.ByteBuf;
+
+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.opendaylight.openflow.augments.rev150225.RateQueueProperty;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.RateQueuePropertyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueProperties;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.get.config.reply.Queues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.get.config.reply.QueuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueueProperty;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueuePropertyBuilder;
+
+/**
+ * Translates QueueGetConfigReply messages (OpenFlow v1.0)
+ * @author michal.polkorab
+ */
+public class OF10QueueGetConfigReplyMessageFactory implements OFDeserializer<GetQueueConfigOutput> {
+
+ private static final byte PADDING_IN_QUEUE_GET_CONFIG_REPLY_HEADER = 6;
+ private static final byte PADDING_IN_PACKET_QUEUE_HEADER = 2;
+ private static final byte PADDING_IN_QUEUE_PROPERTY_HEADER = 4;
+ private static final byte PADDING_IN_RATE_QUEUE_PROPERTY = 6;
+ private static final byte PACKET_QUEUE_HEADER_LENGTH = 8;
+
+ @Override
+ public GetQueueConfigOutput deserialize(ByteBuf rawMessage) {
+ GetQueueConfigOutputBuilder builder = new GetQueueConfigOutputBuilder();
+ builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
+ builder.setXid((rawMessage.readUnsignedInt()));
+ builder.setPort(new PortNumber((long) rawMessage.readUnsignedShort()));
+ rawMessage.skipBytes(PADDING_IN_QUEUE_GET_CONFIG_REPLY_HEADER);
+ builder.setQueues(createQueuesList(rawMessage));
+ return builder.build();
+ }
+
+ private static List<Queues> createQueuesList(ByteBuf input){
+ List<Queues> queuesList = new ArrayList<>();
+ while (input.readableBytes() > 0) {
+ QueuesBuilder queueBuilder = new QueuesBuilder();
+ queueBuilder.setQueueId(new QueueId(input.readUnsignedInt()));
+ int length = input.readUnsignedShort();
+ input.skipBytes(PADDING_IN_PACKET_QUEUE_HEADER);
+ queueBuilder.setQueueProperty(createPropertiesList(input, length - PACKET_QUEUE_HEADER_LENGTH));
+ queuesList.add(queueBuilder.build());
+ }
+ return queuesList;
+ }
+
+ private static List<QueueProperty> createPropertiesList(ByteBuf input, int length){
+ int propertiesLength = length;
+ List<QueueProperty> propertiesList = new ArrayList<>();
+ while (propertiesLength > 0) {
+ QueuePropertyBuilder propertiesBuilder = new QueuePropertyBuilder();
+ QueueProperties property = QueueProperties.forValue(input.readUnsignedShort());
+ propertiesBuilder.setProperty(property);
+ propertiesLength -= input.readUnsignedShort();
+ input.skipBytes(PADDING_IN_QUEUE_PROPERTY_HEADER);
+ if (property.equals(QueueProperties.OFPQTMINRATE)) {
+ RateQueuePropertyBuilder rateBuilder = new RateQueuePropertyBuilder();
+ rateBuilder.setRate(input.readUnsignedShort());
+ propertiesBuilder.addAugmentation(RateQueueProperty.class, rateBuilder.build());
+ input.skipBytes(PADDING_IN_RATE_QUEUE_PROPERTY);
+ }
+ propertiesList.add(propertiesBuilder.build());
+ }
+ return propertiesList;
+ }
+}
\ No newline at end of file