1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
\r
4 import io.netty.buffer.ByteBuf;
\r
6 import java.util.HashMap;
\r
7 import java.util.Map;
\r
9 import org.opendaylight.openflowjava.protocol.impl.serialization.OFSerializer;
\r
10 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
\r
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestMessage;
\r
15 * @author timotej.kubas
\r
18 public class MultipartRequestMessageFactory implements OFSerializer<MultipartRequestMessage> {
\r
19 private static final byte MESSAGE_TYPE = 18;
\r
20 private static final int MESSAGE_LENGTH = 16;
\r
21 private static MultipartRequestMessageFactory instance;
\r
22 private static final byte PADDING_IN_MULTIPART_REQUEST_MESSAGE = 4;
\r
23 private MultipartRequestMessageFactory() {
\r
28 * @return singleton factory
\r
30 public static MultipartRequestMessageFactory getInstance() {
\r
31 if (instance == null) {
\r
32 instance = new MultipartRequestMessageFactory();
\r
38 public void messageToBuffer(short version, ByteBuf out,
\r
39 MultipartRequestMessage message) {
\r
40 ByteBufUtils.writeOFHeader(instance, message, out);
\r
41 out.writeShort(message.getType().getIntValue());
\r
42 out.writeShort(createMultipartRequestFlagsBitmask(message.getFlags()));
\r
43 // TODO multipart body (message.getMultipartRequestBody())
\r
44 ByteBufUtils.padBuffer(PADDING_IN_MULTIPART_REQUEST_MESSAGE, out);
\r
48 public int computeLength() {
\r
49 return MESSAGE_LENGTH;
\r
52 public byte getMessageType() {
\r
53 return MESSAGE_TYPE;
\r
56 private static int createMultipartRequestFlagsBitmask(MultipartRequestFlags flags) {
\r
57 int multipartRequestFlagsBitmask = 0;
\r
58 Map<Integer, Boolean> multipartRequestFlagsMap = new HashMap<>();
\r
59 multipartRequestFlagsMap.put(0, flags.isOFPMPFREQMORE());
\r
61 multipartRequestFlagsBitmask = ByteBufUtils.fillBitMaskFromMap(multipartRequestFlagsMap);
\r
62 return multipartRequestFlagsBitmask;
\r