Add ByteBufUtils
[bgpcep.git] / bgp / parser-impl / src / main / java / org / opendaylight / protocol / bgp / parser / impl / message / open / As4CapabilityHandler.java
index 660c10063a8b67bb16613c343f95f6784a5f3aab..6fe4e7668e05a5e5f24c72d9244cf538ba08a2f0 100644 (file)
@@ -7,34 +7,36 @@
  */
 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