Allow any hello mesage and extend hello support for v1.4, v1.5
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / HelloMessageFactory.java
index ca0a79c8d2271809a4674da4363188ba030a181c..50cf33c1c3a2a11ef102b738b256890d8e387ed3 100644 (file)
@@ -9,12 +9,11 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import io.netty.buffer.ByteBuf;
-
 import java.util.ArrayList;
 import java.util.List;
-
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.impl.util.VersionAssignableFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessageBuilder;
@@ -22,17 +21,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.ElementsBuilder;
 
 /**
- * Translates Hello messages
+ * Translates Hello messages.
+ * OF protocol versions: 1.3, 1.4, 1.5.
  * @author michal.polkorab
  * @author timotej.kubas
  */
-public class HelloMessageFactory implements OFDeserializer<HelloMessage> {
+public class HelloMessageFactory extends VersionAssignableFactory implements OFDeserializer<HelloMessage> {
 
     private static final byte HELLO_ELEMENT_HEADER_SIZE = 4;
+
     @Override
     public HelloMessage deserialize(ByteBuf rawMessage) {
         HelloMessageBuilder builder = new HelloMessageBuilder();
-        builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
+        builder.setVersion(getVersion());
         builder.setXid(rawMessage.readUnsignedInt());
         if (rawMessage.readableBytes() > 0) {
             builder.setElements(readElement(rawMessage));
@@ -70,7 +71,7 @@ public class HelloMessageFactory implements OFDeserializer<HelloMessage> {
         for (int i = 0; i < input.length; i++) {
             int mask = input[i];
             for (int j = 0; j < Integer.SIZE; j++) {
-                    versionBitmapList.add((mask & (1<<j)) != 0);
+                    versionBitmapList.add((mask & (1 << j)) != 0);
             }
         }
         return versionBitmapList;