package org.opendaylight.protocol.bgp.parser.spi;
import io.netty.buffer.ByteBuf;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
+import org.opendaylight.protocol.bgp.parser.BGPError;
import org.opendaylight.protocol.bgp.parser.BGPParsingException;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes;
/**
- *
+ * Attribute serializer/deserializer registry, exposing the capability to parse BGP attributes as a whole.
*/
+@NonNullByDefault
public interface AttributeRegistry {
-
- /**
- * @deprecated Use {@link #parseAttributes(ByteBuf, PeerSpecificParserConstraint)}
- */
- @Deprecated
- Attributes parseAttributes(ByteBuf buffer) throws BGPDocumentedException, BGPParsingException;
-
/**
* Parse BGP Attribute from buffer.
+ *
* @param buffer Input buffer.
* @param constraints Peer specific constraint.
* @return Decoded BGP Attribute.
- * @throws BGPDocumentedException
- * @throws BGPParsingException
+ * @throws BGPDocumentedException when an unrecoverable error occurs, which is documented via {@link BGPError}
+ * @throws BGPParsingException when a general unrecoverable parsing error occurs
*/
- @Nonnull Attributes parseAttributes(@Nonnull ByteBuf buffer, @Nullable PeerSpecificParserConstraint constraints)
+ ParsedAttributes parseAttributes(ByteBuf buffer, @Nullable PeerSpecificParserConstraint constraints)
throws BGPDocumentedException, BGPParsingException;
/**
* Serialize BGP Attribute to buffer.
+ *
* @param attribute Input BGP Attribute.
* @param byteAggregator Output buffer.
*/
- void serializeAttribute(@Nonnull DataObject attribute, @Nonnull ByteBuf byteAggregator);
+ void serializeAttribute(Attributes attribute, ByteBuf byteAggregator);
}