Pre-cache key makers 35/7635/1
authorRobert Varga <rovarga@cisco.com>
Tue, 3 Jun 2014 10:48:56 +0000 (12:48 +0200)
committerRobert Varga <rovarga@cisco.com>
Tue, 3 Jun 2014 11:01:33 +0000 (13:01 +0200)
These are essentially constants, so there is no need to allocate them
over and over again -- just create a single instance and reuse it. Save
CPU and GC cycles.

Change-Id: I77670f4465d8139c6f218bd6f7dab13b66a5b8fc
Signed-off-by: Robert Varga <rovarga@cisco.com>
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/instruction/AbstractActionInstructionSerializer.java

index ddb5ccd81c5dca0346e92bfe7c7cf111e2128011..93b65e984c35ab43e8c513e5f84495d251a030da 100644 (file)
@@ -19,8 +19,10 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 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;
@@ -33,10 +35,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 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());
@@ -52,17 +56,16 @@ public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, S
         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());
@@ -70,7 +73,7 @@ public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, S
         flowModFlagsMap.put(2, flags.isOFPFFRESETCOUNTS());
         flowModFlagsMap.put(3, flags.isOFPFFNOPKTCOUNTS());
         flowModFlagsMap.put(4, flags.isOFPFFNOBYTCOUNTS());
-        
+
         flowModFlagBitmask = ByteBufUtils.fillBitMaskFromMap(flowModFlagsMap);
         return flowModFlagBitmask;
     }
index a85842c3777d8e95b286ae4aa84240acc3d24173..466c3c7cdfec06d828f6914f245abbe92ed4bd59 100644 (file)
@@ -19,8 +19,10 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 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;
@@ -32,10 +34,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 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));
@@ -48,12 +52,11 @@ public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput
         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());
@@ -64,7 +67,7 @@ public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput
     }
 
     @Override
-    public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {
+    public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
         this.registry = serializerRegistry;
     }
 }
index d696d24ec442b5bb34ee747340caa07eab0ed905..5e4489f5219d7dacc4871ae4f7b7eabbef7301a2 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 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
@@ -30,10 +31,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
 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
@@ -41,8 +45,7 @@ public abstract class AbstractActionInstructionSerializer extends AbstractInstru
             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
@@ -56,7 +59,7 @@ public abstract class AbstractActionInstructionSerializer extends AbstractInstru
     }\r
 \r
     @Override\r
-    public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {\r
+    public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {\r
         registry = serializerRegistry;\r
     }\r
 }\r