import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;
import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;
public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
private static final byte MESSAGE_TYPE = 14;
private static final byte PADDING_IN_FLOW_MOD_MESSAGE = 2;
+ private static final EnhancedTypeKeyMaker<Instruction> INSTRUCTION_KEY_MAKER =
+ EnhancedTypeKeyMakerFactory.createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID);
private SerializerRegistry registry;
@Override
- public void serialize(FlowModInput message, ByteBuf outBuffer) {
+ public void serialize(final FlowModInput message, final ByteBuf outBuffer) {
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeLong(message.getCookie().longValue());
outBuffer.writeLong(message.getCookieMask().longValue());
ByteBufUtils.padBuffer(PADDING_IN_FLOW_MOD_MESSAGE, outBuffer);
registry.<Match, OFSerializer<Match>>getSerializer(new MessageTypeKey<>(message.getVersion(), Match.class))
.serialize(message.getMatch(), outBuffer);
- ListSerializer.serializeList(message.getInstruction(), EnhancedTypeKeyMakerFactory
- .createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID), registry, outBuffer);
+ ListSerializer.serializeList(message.getInstruction(), INSTRUCTION_KEY_MAKER, registry, outBuffer);
ByteBufUtils.updateOFHeaderLength(outBuffer);
}
@Override
- public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {
+ public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
this.registry = serializerRegistry;
}
- private static int createFlowModFlagsBitmask(FlowModFlags flags) {
+ private static int createFlowModFlagsBitmask(final FlowModFlags flags) {
int flowModFlagBitmask = 0;
Map<Integer, Boolean> flowModFlagsMap = new HashMap<>();
flowModFlagsMap.put(0, flags.isOFPFFSENDFLOWREM());
flowModFlagsMap.put(2, flags.isOFPFFRESETCOUNTS());
flowModFlagsMap.put(3, flags.isOFPFFNOPKTCOUNTS());
flowModFlagsMap.put(4, flags.isOFPFFNOBYTCOUNTS());
-
+
flowModFlagBitmask = ByteBufUtils.fillBitMaskFromMap(flowModFlagsMap);
return flowModFlagBitmask;
}
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;
import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.v10.grouping.MatchV10;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;
public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
private static final byte MESSAGE_TYPE = 14;
+ private static final EnhancedTypeKeyMaker<Action> ACTION_KEY_MAKER =
+ EnhancedTypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF10_VERSION_ID);
private SerializerRegistry registry;
@Override
- public void serialize(FlowModInput message, ByteBuf outBuffer) {
+ public void serialize(final FlowModInput message, final ByteBuf outBuffer) {
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
OFSerializer<MatchV10> matchSerializer = registry.getSerializer(new MessageTypeKey<>(
message.getVersion(), MatchV10.class));
outBuffer.writeInt(message.getBufferId().intValue());
outBuffer.writeShort(message.getOutPort().getValue().intValue());
outBuffer.writeShort(createFlowModFlagsBitmask(message.getFlagsV10()));
- ListSerializer.serializeList(message.getAction(), EnhancedTypeKeyMakerFactory
- .createActionKeyMaker(EncodeConstants.OF10_VERSION_ID), registry, outBuffer);
+ ListSerializer.serializeList(message.getAction(), ACTION_KEY_MAKER, registry, outBuffer);
ByteBufUtils.updateOFHeaderLength(outBuffer);
}
- private static int createFlowModFlagsBitmask(FlowModFlagsV10 flags) {
+ private static int createFlowModFlagsBitmask(final FlowModFlagsV10 flags) {
int flowModFlagBitmask = 0;
Map<Integer, Boolean> flowModFlagsMap = new HashMap<>();
flowModFlagsMap.put(0, flags.isOFPFFSENDFLOWREM());
}
@Override
- public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {
+ public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
this.registry = serializerRegistry;
}
}
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;\r
import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;\r
import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;\r
import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;\r
import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;\r
public abstract class AbstractActionInstructionSerializer extends AbstractInstructionSerializer\r
implements SerializerRegistryInjector {\r
\r
+ private static final EnhancedTypeKeyMaker<Action> ACTION_KEY_MAKER =\r
+ EnhancedTypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
+\r
private SerializerRegistry registry;\r
\r
@Override\r
- public void serialize(Instruction instruction, ByteBuf outBuffer) {\r
+ public void serialize(final Instruction instruction, final ByteBuf outBuffer) {\r
int startIndex = outBuffer.writerIndex();\r
outBuffer.writeShort(getType());\r
if (instruction.getAugmentation(ActionsInstruction.class) != null) {\r
int lengthIndex = outBuffer.writerIndex();\r
outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH);\r
ByteBufUtils.padBuffer(InstructionConstants.PADDING_IN_ACTIONS_INSTRUCTION, outBuffer);\r
- ListSerializer.serializeList(actions, EnhancedTypeKeyMakerFactory\r
- .createActionKeyMaker(EncodeConstants.OF13_VERSION_ID), getRegistry(), outBuffer);\r
+ ListSerializer.serializeList(actions, ACTION_KEY_MAKER, getRegistry(), outBuffer);\r
int instructionLength = outBuffer.writerIndex() - startIndex;\r
outBuffer.setShort(lengthIndex, instructionLength);\r
} else {\r
}\r
\r
@Override\r
- public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {\r
+ public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {\r
registry = serializerRegistry;\r
}\r
}\r