package org.opendaylight.protocol.pcep.impl.tlv;
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.pcep.spi.TlvUtil;
-import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.vs.tlv.VsTlv;
final ByteBuf body = Unpooled.buffer();
if (vsTlv.getEnterpriseNumber().getValue() == getEnterpriseNumber()) {
body.writeInt(vsTlv.getEnterpriseNumber().getValue().intValue());
- body.writeBytes(serializeVendorPayload(vsTlv.getVendorPayload()));
+ serializeVendorPayload(vsTlv.getVendorPayload(), body);
TlvUtil.formatTlv(TYPE, body, buffer);
}
}
if (buffer == null) {
return null;
}
- VsTlvBuilder vsTlvBuider = new VsTlvBuilder();
- long en = buffer.readUnsignedInt();
+ final VsTlvBuilder vsTlvBuider = new VsTlvBuilder();
+ final long en = buffer.readUnsignedInt();
if (en == getEnterpriseNumber()) {
vsTlvBuider.setEnterpriseNumber(new EnterpriseNumber(getEnterpriseNumber()));
VendorPayload vendorPayload = null;
if (buffer.isReadable()) {
- ByteBuf payloadBytes = buffer.slice();
- // FIXME: change this to ByteBuf
- vendorPayload = parseVendorPayload(ByteArray.getAllBytes(payloadBytes));
+ final ByteBuf payloadBytes = buffer.slice();
+ vendorPayload = parseVendorPayload(payloadBytes);
if (vendorPayload != null) {
vsTlvBuider.setVendorPayload(vendorPayload);
}
return vsTlvBuider.build();
}
- protected abstract byte[] serializeVendorPayload(VendorPayload payload);
+ protected abstract void serializeVendorPayload(final VendorPayload payload, final ByteBuf buffer);
protected abstract long getEnterpriseNumber();
- protected abstract VendorPayload parseVendorPayload(byte[] payloadBytes) throws PCEPDeserializerException;
-
- protected static int getPadding(final int length, final int padding) {
- return (padding - (length % padding)) % padding;
- }
+ protected abstract VendorPayload parseVendorPayload(final ByteBuf payloadBytes) throws PCEPDeserializerException;
}
import static org.junit.Assert.assertEquals;
import com.google.common.collect.Lists;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-
import java.util.List;
-
import org.junit.Test;
import org.opendaylight.protocol.pcep.impl.tlv.AbstractVendorSpecificTlvParser;
import org.opendaylight.protocol.pcep.impl.tlv.NoPathVectorTlvParser;
private final AbstractVendorSpecificTlvParser vsParser = new AbstractVendorSpecificTlvParser() {
@Override
- protected byte[] serializeVendorPayload(VendorPayload payload) {
- return new byte[] { 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05 };
+ protected void serializeVendorPayload(final VendorPayload payload, final ByteBuf buffer) {
+ buffer.writeBytes(new byte[] { 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05 });
}
@Override
- protected VendorPayload parseVendorPayload(byte[] payloadBytes) throws PCEPDeserializerException {
+ protected VendorPayload parseVendorPayload(final ByteBuf payloadBytes) throws PCEPDeserializerException {
return PCEPTlvParserTest.this.vp;
}