Do not instantiate key in fast path 04/7604/1
authorRobert Varga <rovarga@cisco.com>
Mon, 2 Jun 2014 16:52:09 +0000 (18:52 +0200)
committerRobert Varga <rovarga@cisco.com>
Mon, 2 Jun 2014 16:54:25 +0000 (18:54 +0200)
This is a constant lookup for each packet -- let's just use a static
key to prevent useless allocations.

Change-Id: I4a81fc04e29607ace710c7a35671420271836066
Signed-off-by: Robert Varga <rovarga@cisco.com>
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/PacketInMessageFactory.java

index 819e1568646a71156371459f47400c4e8558054f..4d8a44afcca39c288616ba24a3b206e8db37c2be 100644 (file)
@@ -32,10 +32,12 @@ public class PacketInMessageFactory implements OFDeserializer<PacketInMessage>,
         DeserializerRegistryInjector {
 
     private static final byte PADDING_IN_PACKET_IN_HEADER = 2;
+    private static final MessageCodeKey MATCH_KEY = new MessageCodeKey(
+            EncodeConstants.OF13_VERSION_ID, EncodeConstants.EMPTY_VALUE, Match.class);
     private DeserializerRegistry registry;
 
     @Override
-    public PacketInMessage deserialize(ByteBuf rawMessage) {
+    public PacketInMessage deserialize(final ByteBuf rawMessage) {
         PacketInMessageBuilder builder = new PacketInMessageBuilder();
         builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
         builder.setXid(rawMessage.readUnsignedInt());
@@ -46,8 +48,7 @@ public class PacketInMessageFactory implements OFDeserializer<PacketInMessage>,
         byte[] cookie = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
         rawMessage.readBytes(cookie);
         builder.setCookie(new BigInteger(1, cookie));
-        OFDeserializer<Match> matchDeserializer = registry.getDeserializer(new MessageCodeKey(
-                EncodeConstants.OF13_VERSION_ID, EncodeConstants.EMPTY_VALUE, Match.class));
+        OFDeserializer<Match> matchDeserializer = registry.getDeserializer(MATCH_KEY);
         builder.setMatch(matchDeserializer.deserialize(rawMessage));
         rawMessage.skipBytes(PADDING_IN_PACKET_IN_HEADER);
         builder.setData(rawMessage.readBytes(rawMessage.readableBytes()).array());
@@ -55,7 +56,7 @@ public class PacketInMessageFactory implements OFDeserializer<PacketInMessage>,
     }
 
     @Override
-    public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
+    public void injectDeserializerRegistry(final DeserializerRegistry deserializerRegistry) {
         registry = deserializerRegistry;
     }
 }