*/
package org.opendaylight.protocol.pcep.ietf.stateful07;
-import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil;
+import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeUnsignedInt;
+
+import com.google.common.base.Preconditions;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.TlvParser;
import org.opendaylight.protocol.pcep.spi.TlvSerializer;
-import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.error.code.tlv.LspErrorCode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.error.code.tlv.LspErrorCodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
+import org.opendaylight.protocol.pcep.spi.TlvUtil;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.error.code.tlv.LspErrorCodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Tlv;
+import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
/**
- * Parser for {@link LspErrorCode}
+ * Parser for {@link LspErrorCode}.
*/
public final class Stateful07LspUpdateErrorTlvParser implements TlvParser, TlvSerializer {
+ public static final int TYPE = 20;
- public static final int TYPE = 20;
-
- private static final int UPDATE_ERR_CODE_LENGTH = 4;
+ private static final int CONTENT_LENGTH = Integer.SIZE / Byte.SIZE;
- @Override
- public LspErrorCode parseTlv(final byte[] buffer) throws PCEPDeserializerException {
- return new LspErrorCodeBuilder().setErrorCode(ByteArray.bytesToLong(buffer)).build();
- }
+ @Override
+ public LspErrorCode parseTlv(final ByteBuf buffer) throws PCEPDeserializerException {
+ if (buffer == null) {
+ return null;
+ }
+ return new LspErrorCodeBuilder().setErrorCode(ByteBufUtils.readUint32(buffer)).build();
+ }
- @Override
- public byte[] serializeTlv(final Tlv tlv) {
- if (tlv == null) {
- throw new IllegalArgumentException("LspErrorCodeTlv is mandatory.");
- }
- final LspErrorCode lsp = (LspErrorCode) tlv;
- return TlvUtil.formatTlv(TYPE, ByteArray.longToBytes(lsp.getErrorCode(), UPDATE_ERR_CODE_LENGTH));
- }
+ @Override
+ public void serializeTlv(final Tlv tlv, final ByteBuf buffer) {
+ Preconditions.checkArgument(tlv instanceof LspErrorCode, "LspErrorCodeTlv is mandatory.");
+ final ByteBuf body = Unpooled.buffer(CONTENT_LENGTH);
+ writeUnsignedInt(((LspErrorCode) tlv).getErrorCode(), body);
+ TlvUtil.formatTlv(TYPE, body, buffer);
+ }
}