Javadoc update
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / OF10FlowRemovedMessageFactory.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 \r
6 import java.math.BigInteger;\r
7 \r
8 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
9 import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchDeserializer;\r
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowRemovedReason;\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessage;\r
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessageBuilder;\r
13 \r
14 /**\r
15  * Translates FlowRemoved messages (OpenFlow v1.0)\r
16  * @author michal.polkorab\r
17  */\r
18 public class OF10FlowRemovedMessageFactory implements OFDeserializer<FlowRemovedMessage> {\r
19 \r
20     private static final byte PADDING_IN_FLOW_REMOVED_MESSAGE = 1;\r
21     private static final byte PADDING_IN_FLOW_REMOVED_MESSAGE_2 = 2;\r
22     \r
23     \r
24     private static OF10FlowRemovedMessageFactory instance;\r
25     \r
26     private OF10FlowRemovedMessageFactory() {\r
27         // singleton\r
28     }\r
29     \r
30     /**\r
31      * @return singleton factory\r
32      */\r
33     public static synchronized OF10FlowRemovedMessageFactory getInstance(){\r
34         if(instance == null){\r
35             instance = new OF10FlowRemovedMessageFactory();\r
36         }\r
37         return instance;\r
38     }\r
39 \r
40     @Override\r
41     public FlowRemovedMessage bufferToMessage(ByteBuf rawMessage, short version) {\r
42         FlowRemovedMessageBuilder builder = new FlowRemovedMessageBuilder();\r
43         builder.setVersion(version);\r
44         builder.setXid(rawMessage.readUnsignedInt());\r
45         builder.setMatchV10(OF10MatchDeserializer.createMatchV10(rawMessage));\r
46         byte[] cookie = new byte[Long.SIZE/Byte.SIZE];\r
47         rawMessage.readBytes(cookie);\r
48         builder.setCookie(new BigInteger(cookie));\r
49         builder.setPriority(rawMessage.readUnsignedShort());\r
50         builder.setReason(FlowRemovedReason.forValue(rawMessage.readUnsignedByte()));\r
51         rawMessage.skipBytes(PADDING_IN_FLOW_REMOVED_MESSAGE);\r
52         builder.setDurationSec(rawMessage.readUnsignedInt());\r
53         builder.setDurationNsec(rawMessage.readUnsignedInt());\r
54         builder.setIdleTimeout(rawMessage.readUnsignedShort());\r
55         rawMessage.skipBytes(PADDING_IN_FLOW_REMOVED_MESSAGE_2);\r
56         byte[] packet_count = new byte[Long.SIZE/Byte.SIZE];\r
57         rawMessage.readBytes(packet_count);\r
58         builder.setPacketCount(new BigInteger(packet_count));\r
59         byte[] byte_count = new byte[Long.SIZE/Byte.SIZE];\r
60         rawMessage.readBytes(byte_count);\r
61         builder.setByteCount(new BigInteger(byte_count));\r
62         return builder.build();\r
63     }\r
64 \r
65     \r
66 }\r