/*
* Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.impl.protocol.serialization.util;
import io.netty.buffer.ByteBuf;
import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction;
/**
* Utility class for instruction serialization
*/
public class InstructionUtil {
/**
* Serialize instruction
* @param instruction OpenFlow instruction
* @param version OpenFlow version
* @param registry OpenFlowJava serializer registry
* @param outBuffer output buffer
*/
@SuppressWarnings("unchecked")
public static void writeInstruction(final Instruction instruction,
final short version,
final SerializerRegistry registry,
final ByteBuf outBuffer) {
registry.<Instruction, OFSerializer<Instruction>>getSerializer(
new MessageTypeKey<>(
EncodeConstants.OF13_VERSION_ID,
(Class<Instruction>) instruction.getImplementedInterface()))
.serialize(instruction, outBuffer);
}
/**
* Serialize instruction header
* @param instruction OpenFlow instruction
* @param version OpenFlow version
* @param registry OpenFlowJava serializer registry
* @param outBuffer output buffer
*/
@SuppressWarnings("unchecked")
public static void writeInstructionHeader(final Instruction instruction,
final short version,
final SerializerRegistry registry,
final ByteBuf outBuffer) {
registry.<Instruction, HeaderSerializer<Instruction>>getSerializer(
new MessageTypeKey<>(
EncodeConstants.OF13_VERSION_ID,
(Class<Instruction>) instruction.getImplementedInterface()))
.serializeHeader(instruction, outBuffer);
}
}