79183330362bf6d7cc5794aa9e87d8ceec998b03
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / PortStatusMessageFactory.java
1 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;\r
2 \r
3 import io.netty.buffer.ByteBuf;\r
4 \r
5 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;\r
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;\r
8 \r
9 /**\r
10  * @author michal.polkorab\r
11  * @author timotej.kubas\r
12  */\r
13 public class PortStatusMessageFactory implements OFDeserializer<PortStatusMessage> {\r
14 \r
15     private static PortStatusMessageFactory instance;\r
16     private static final byte PADDING_IN_FEATURES_REPLY_HEADER = 7;\r
17     \r
18     private PortStatusMessageFactory() {\r
19         // Singleton\r
20     }\r
21     \r
22     /**\r
23      * @return singleton factory\r
24      */\r
25     public static PortStatusMessageFactory getInstance(){\r
26         if(instance == null){\r
27             \r
28             instance = new PortStatusMessageFactory();\r
29         }\r
30         \r
31         return instance;\r
32     }\r
33     \r
34     @Override\r
35     public PortStatusMessage bufferToMessage(ByteBuf rawMessage, short version) {\r
36         PortStatusMessageBuilder psmb = new PortStatusMessageBuilder(); \r
37         psmb.setVersion(version);\r
38         psmb.setXid(rawMessage.readUnsignedInt());\r
39    \r
40 //        TODO enum portReason\r
41 //        psmb.setReason(PortReason.values()[rawMessage.readInt()]);\r
42         rawMessage.skipBytes(1); //instead of portReason enum\r
43         \r
44         rawMessage.skipBytes(PADDING_IN_FEATURES_REPLY_HEADER);\r
45         return psmb.build();\r
46     }\r
47 \r
48     \r
49     \r
50 }\r