Bug 2756 - Instruction model update
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / instruction / ApplyActionsInstructionSerializer.java
index 2aaae19ba71ca4442d7fe9811d29286b5278d4b8..4d6f1f53ec2e4d54b7aee5cb9a42f0c1cb3c2cfd 100644 (file)
@@ -8,7 +8,14 @@
 
 package org.opendaylight.openflowjava.protocol.impl.serialization.instruction;
 
+import io.netty.buffer.ByteBuf;
+
+import java.util.List;
+
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ApplyActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
 
 /**
  * @author michal.polkorab
@@ -16,6 +23,20 @@ import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;
  */
 public class ApplyActionsInstructionSerializer extends AbstractActionInstructionSerializer {
 
+    @Override
+    public void serialize(final Instruction instruction, final ByteBuf outBuffer) {
+        int startIndex = outBuffer.writerIndex();
+        outBuffer.writeShort(getType());
+        ApplyActionsCase actionsCase = (ApplyActionsCase) instruction.getInstructionChoice();
+        if (actionsCase != null) {
+            List<Action> actions = actionsCase.getApplyActions().getAction();
+            writeActions(actions, outBuffer, startIndex);
+        } else {
+            outBuffer.writeShort(InstructionConstants.STANDARD_INSTRUCTION_LENGTH);
+            outBuffer.writeZero(InstructionConstants.PADDING_IN_ACTIONS_INSTRUCTION);
+        }
+    }
+
     @Override
     protected int getType() {
         return InstructionConstants.APPLY_ACTIONS_TYPE;