\r
import io.netty.buffer.ByteBuf;\r
\r
-import org.opendaylight.openflowjava.protocol.impl.core.OFFrameDecoder;\r
import org.opendaylight.openflowjava.protocol.impl.serialization.OFSerializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
\r
/**\r
+ * Translates Experimenter messages\r
* @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
*/\r
public class ExperimenterInputMessageFactory implements OFSerializer<ExperimenterInput>{\r
\r
/** Code type of Experimenter message */\r
public static final byte MESSAGE_TYPE = 4;\r
+ private static final byte MESSAGE_LENGTH = 8;\r
private static ExperimenterInputMessageFactory instance;\r
\r
private ExperimenterInputMessageFactory() {\r
/**\r
* @return singleton factory\r
*/\r
- public static ExperimenterInputMessageFactory getInstance() {\r
+ public static synchronized ExperimenterInputMessageFactory getInstance() {\r
if (instance == null) {\r
instance = new ExperimenterInputMessageFactory();\r
}\r
@Override\r
public void messageToBuffer(short version, ByteBuf out,\r
ExperimenterInput message) {\r
- out.writeByte(message.getVersion());\r
- out.writeByte(MESSAGE_TYPE);\r
- out.writeShort(OFFrameDecoder.LENGTH_OF_HEADER + (Integer.SIZE/Byte.SIZE)*2);\r
- out.writeInt(message.getXid().intValue());\r
+ ByteBufUtils.writeOFHeader(instance, message, out);\r
out.writeInt(message.getExperimenter().intValue());\r
out.writeInt(message.getExpType().intValue());\r
+ byte[] data = message.getData();\r
+ if (data != null) {\r
+ out.writeBytes(data);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public int computeLength(ExperimenterInput message) {\r
+ int length = MESSAGE_LENGTH + 2 * (Integer.SIZE / Byte.SIZE);\r
+ byte[] data = message.getData();\r
+ if (data != null) {\r
+ length += data.length;\r
+ }\r
+ return length;\r
}\r
\r
+ @Override\r
+ public byte getMessageType() {\r
+ return MESSAGE_TYPE;\r
+ }\r
+ \r
}\r