Extension support - easy lookup for toOFJava
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / main / java / org / opendaylight / openflowjava / nx / codec / match / AbstractRegCodec.java
diff --git a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/AbstractRegCodec.java b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/AbstractRegCodec.java
new file mode 100644 (file)
index 0000000..73deeb7
--- /dev/null
@@ -0,0 +1,49 @@
+package org.opendaylight.openflowjava.nx.codec.match;
+
+import io.netty.buffer.ByteBuf;
+
+import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmClassBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntriesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxMatch;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxMatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.reg.grouping.RegValuesBuilder;
+
+public abstract class AbstractRegCodec extends AbstractMatchCodec {
+
+    private static final int VALUE_LENGTH = 4;
+
+    @Override
+    public MatchEntries deserialize(ByteBuf message) {
+        MatchEntriesBuilder matchEntriesBuilder = deserializeHeader(message);
+        OfjAugNxMatchBuilder augNxMatchBuilder = new OfjAugNxMatchBuilder();
+        augNxMatchBuilder.setRegValues(new RegValuesBuilder().setValue(message.readUnsignedInt()).build());
+        matchEntriesBuilder.addAugmentation(OfjAugNxMatch.class, augNxMatchBuilder.build());
+        return matchEntriesBuilder.build();
+    }
+
+    @Override
+    public void serialize(MatchEntries input, ByteBuf outBuffer) {
+        serializeHeader(input, outBuffer);
+        Long value = input.getAugmentation(OfjAugNxMatch.class).getRegValues().getValue();
+        outBuffer.writeInt(value.intValue());
+    }
+
+    @Override
+    public int getOxmClassCode() {
+        return OxmMatchConstants.NXM_1_CLASS;
+    }
+
+    @Override
+    public int getValueLength() {
+        return VALUE_LENGTH;
+    }
+
+    @Override
+    public Class<? extends OxmClassBase> getOxmClass() {
+        return Nxm1Class.class;
+    }
+
+}