*/
package org.opendaylight.protocol.bgp.parser.impl.message.open;
-import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
-import org.opendaylight.protocol.bgp.parser.BGPParsingException;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
import org.opendaylight.protocol.bgp.parser.spi.CapabilityUtil;
-import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.CParameters;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.c.parameters.CAs4Bytes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.c.parameters.CAs4BytesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.open.bgp.parameters.c.parameters.c.as4.bytes.As4BytesCapabilityBuilder;
+import org.opendaylight.protocol.util.ByteBufUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder;
-final class As4CapabilityHandler implements CapabilityParser, CapabilitySerializer {
- static final int CODE = 65;
+public final class As4CapabilityHandler implements CapabilityParser, CapabilitySerializer {
+ public static final int CODE = 65;
- @Override
- public CParameters parseCapability(final byte[] bytes) throws BGPDocumentedException, BGPParsingException {
- return new CAs4BytesBuilder().setAs4BytesCapability(
- new As4BytesCapabilityBuilder().setAsNumber(new AsNumber(ByteArray.bytesToLong(bytes))).build()).build();
+ @Override
+ public CParameters parseCapability(final ByteBuf buffer) {
+ return new CParametersBuilder().setAs4BytesCapability(new As4BytesCapabilityBuilder()
+ .setAsNumber(new AsNumber(ByteBufUtils.readUint32(buffer))).build()).build();
+ }
- }
+ @Override
+ public void serializeCapability(final CParameters capability, final ByteBuf byteAggregator) {
+ final As4BytesCapability as4 = capability.getAs4BytesCapability();
+ if (as4 != null) {
+ CapabilityUtil.formatCapability(CODE, putAS4BytesParameterValue(as4), byteAggregator);
+ }
+ }
- @Override
- public byte[] serializeCapability(final CParameters capability) {
- return CapabilityUtil.formatCapability(CODE, putAS4BytesParameterValue((CAs4Bytes) capability));
- }
-
- private static byte[] putAS4BytesParameterValue(final CAs4Bytes param) {
- return ByteArray.subByte(ByteArray.longToBytes(param.getAs4BytesCapability().getAsNumber().getValue()), 4, 4);
- }
+ private static ByteBuf putAS4BytesParameterValue(final As4BytesCapability param) {
+ return Unpooled.copyInt(param.getAsNumber().getValue().intValue());
+ }
}
\ No newline at end of file