use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.Aigp in project bgpcep by opendaylight.
the class AigpAttributeParser method serializeAttribute.
@Override
public void serializeAttribute(final DataObject attribute, final ByteBuf byteAggregator) {
Preconditions.checkArgument(attribute instanceof Attributes, "Attribute parameter is not a PathAttribute object.");
final Aigp aigpAttribute = ((Attributes) attribute).getAigp();
if (aigpAttribute == null) {
return;
}
AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, TYPE, serializeAigpTLV(aigpAttribute), byteAggregator);
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.Aigp in project bgpcep by opendaylight.
the class PathAttributeParserTest method testParsingAigpAttributeWithCorrectTLV.
@Test
public void testParsingAigpAttributeWithCorrectTLV() throws BGPDocumentedException, BGPParsingException {
final byte[] value = new byte[] { 1, 0, 11, 0, 0, 0, 0, 0, 0, 0, 8 };
final ByteBuf buffer = Unpooled.buffer();
AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, AigpAttributeParser.TYPE, Unpooled.copiedBuffer(value), buffer);
final Attributes pathAttributes = ctx.getAttributeRegistry().parseAttributes(buffer, null).getAttributes();
final Aigp aigp = pathAttributes.getAigp();
final AigpTlv tlv = aigp.getAigpTlv();
assertNotNull("Tlv should not be null.", tlv);
assertEquals("Aigp tlv should have metric with value 8.", 8, tlv.getMetric().getValue().intValue());
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.Aigp in project bgpcep by opendaylight.
the class AigpAttributeParser method serializeAigpTLV.
/**
* Transform AIGP attribute data from instance of Aigp class into byte buffer representation.
*
* @param aigp
* instance of Aigp class
* @return
* byte buffer representation or empty buffer if AIGP TLV is null
*/
private static ByteBuf serializeAigpTLV(final Aigp aigp) {
final AigpTlv tlv = aigp.getAigpTlv();
if (tlv == null) {
return Unpooled.EMPTY_BUFFER;
}
final ByteBuf value = Unpooled.buffer(AIGP_TLV_SIZE);
value.writeByte(AIGP_TLV_TYPE);
value.writeShort(AIGP_TLV_SIZE);
value.writeLong(tlv.getMetric().getValue().longValue());
return value;
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.Aigp in project bgpcep by opendaylight.
the class AigpAttributeParser method parseAigpTLV.
/**
* Reads data from buffer until reaches TLV of type AIGP TLV.
*
* @param buffer TLVs in ByteBuf format
* @return instance of AigpTlv class or null if buffer contains unknown TLV type
*/
private static AigpTlv parseAigpTLV(final ByteBuf buffer) {
final int tlvType = buffer.readByte();
buffer.skipBytes(TLV_SIZE_IN_BYTES);
if (tlvType != AIGP_TLV_TYPE) {
LOG.warn("AIGP attribute contains unknown TLV type {}.", tlvType);
return null;
}
return new AigpTlvBuilder().setMetric(new AccumulatedIgpMetric(ByteBufUtils.readUint64(buffer))).build();
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.Aigp in project bgpcep by opendaylight.
the class PathAttributeParserTest method testSerializingAigpAttribute.
@Test
public void testSerializingAigpAttribute() throws BGPDocumentedException, BGPParsingException {
final byte[] value = new byte[] { 1, 0, 11, 0, 0, 0, 0, 0, 0, 0, 8 };
final ByteBuf inputData = Unpooled.buffer();
final ByteBuf testBuffer = Unpooled.buffer();
AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, AigpAttributeParser.TYPE, Unpooled.copiedBuffer(value), inputData);
final Attributes pathAttributes = ctx.getAttributeRegistry().parseAttributes(inputData, null).getAttributes();
final Aigp aigp = pathAttributes.getAigp();
final AttributesBuilder pathAttributesBuilder = new AttributesBuilder();
pathAttributesBuilder.setAigp(aigp);
final AigpAttributeParser parser = new AigpAttributeParser();
parser.serializeAttribute(pathAttributesBuilder.build(), testBuffer);
final byte[] unparserData = inputData.copy(0, inputData.writerIndex()).array();
final byte[] serializedData = testBuffer.copy(0, inputData.writerIndex()).array();
assertArrayEquals(unparserData, serializedData);
}
Aggregations