Javadoc update
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / ExperimenterMessageFactory.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
2 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
3
4 import io.netty.buffer.ByteBuf;
5
6 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessageBuilder;
9
10 /**
11  * Translates Experimenter messages
12  * @author michal.polkorab, 
13  * @author timotej.kubas
14  */
15 public class ExperimenterMessageFactory implements OFDeserializer<ExperimenterMessage>{
16
17     private static ExperimenterMessageFactory instance;
18     
19     private ExperimenterMessageFactory() {
20         //singleton
21     }
22     
23     
24     /**
25      * @return singleton factory
26      */
27     public static synchronized ExperimenterMessageFactory getInstance(){
28         if (instance == null){
29            instance = new ExperimenterMessageFactory(); 
30         }
31         return instance;
32     }
33
34     @Override
35     public ExperimenterMessage bufferToMessage(ByteBuf rawMessage, short version) {
36         ExperimenterMessageBuilder builder = new ExperimenterMessageBuilder();
37         builder.setVersion(version);
38         builder.setXid(rawMessage.readUnsignedInt());
39         builder.setExperimenter(rawMessage.readUnsignedInt());
40         builder.setExpType(rawMessage.readUnsignedInt());
41         int remainingBytes = rawMessage.readableBytes();
42         if (remainingBytes > 0) {
43             builder.setData(rawMessage.readBytes(remainingBytes).array());
44         }
45         return builder.build();
46     }
47 }