Split out RIBEntry
[bgpcep.git] / bgp / rib-spi / src / main / java / org / opendaylight / protocol / bgp / rib / spi / AdjRIBsIn.java
index 01a262cd63bd04c8d833090d74c663781ff720a3..72f1e03edccde7217a1f89490121683ef8ff6239 100644 (file)
@@ -7,13 +7,56 @@
  */
 package org.opendaylight.protocol.bgp.rib.spi;
 
-import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpReachNlri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpReachNlriBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpUnreachNlri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Route;
 
-public interface AdjRIBsIn {
-       public void addRoutes(DataModificationTransaction trans, Peer peer, MpReachNlri nlri, PathAttributes attributes);
-       public void removeRoutes(DataModificationTransaction trans, Peer peer, MpUnreachNlri nlri);
-       public void clear(DataModificationTransaction trans, Peer peer);
+public interface AdjRIBsIn<K, V extends Route> {
+
+    /**
+     * Adds routes to this adjacency rib.
+     * @param trans data-store transaction
+     * @param peer advertising peer
+     * @param nlri routes
+     * @param attributes route attributes
+     */
+    void addRoutes(final AdjRIBsTransaction trans, final Peer peer, final MpReachNlri nlri, final PathAttributes attributes);
+
+    /**
+     * Removes routes from this adjacency rib.
+     * @param trans data-store transaction
+     * @param peer advertising peer
+     * @param nlri routes
+     */
+    void removeRoutes(final AdjRIBsTransaction trans, final Peer peer, final MpUnreachNlri nlri);
+
+    /**
+     * Clears adjacency rib tables.
+     * @param trans data-store transaction
+     * @param peer advertising peer
+     */
+    void clear(final AdjRIBsTransaction trans, final Peer peer);
+
+    /**
+     * Marks true or false the state of this adjacency rib.
+     * @param trans data-store transaction
+     * @param peer advertising peer
+     */
+    void markUptodate(final AdjRIBsTransaction trans, final Peer peer);
+
+    /**
+     * Transform an advertised data object into the corresponding NLRI in MP_REACH attribute.
+     * @param builder MP_REACH attribute builder
+     * @param data Data object
+     */
+    void addAdvertisement(final MpReachNlriBuilder builder, final V data);
+
+    /**
+     * Creates end-of-rib message for this adjacency rib.
+     * @return BGP Update message
+     */
+    Update endOfRib();
 }