Bump versions to 0.21.8-SNAPSHOT
[bgpcep.git] / bgp / rib-impl / src / main / java / org / opendaylight / protocol / bgp / rib / impl / spi / RIB.java
old mode 100755 (executable)
new mode 100644 (file)
index 3fe8ce3..9896ba8
@@ -8,25 +8,28 @@
 package org.opendaylight.protocol.bgp.rib.impl.spi;
 
 import java.util.Set;
-import javax.annotation.Nonnull;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService;
-import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker.DataTreeChangeExtension;
+import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.protocol.bgp.rib.RibReference;
-import org.opendaylight.protocol.bgp.rib.spi.ExportPolicyPeerTracker;
+import org.opendaylight.protocol.bgp.rib.spi.BGPPeerTracker;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
+import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRibRoutingPolicy;
 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.multiprotocol.rev130919.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpId;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
 /**
  * Internal reference to a RIB instance.
  */
-public interface RIB extends RibReference, ClusterSingletonServiceProvider {
+public interface RIB extends RibReference, RibOutRefresh {
+    /**
+     * RIB AS.
+     *
+     * @return AS
+     */
     AsNumber getLocalAs();
 
     BgpId getBgpIdentifier();
@@ -37,18 +40,16 @@ public interface RIB extends RibReference, ClusterSingletonServiceProvider {
      *
      * @return A set of identifiers.
      */
-    @Nonnull
-    Set<? extends BgpTableType> getLocalTables();
+    @NonNull Set<? extends BgpTableType> getLocalTables();
 
     BGPDispatcher getDispatcher();
 
     /**
      * Allocate a new transaction chain for use with a peer.
      *
-     * @param listener {@link TransactionChainListener} handling recovery
      * @return A new transaction chain.
      */
-    DOMTransactionChain createPeerChain(TransactionChainListener listener);
+    DOMTransactionChain createPeerDOMChain();
 
     /**
      * Return the RIB extensions available to the RIB instance.
@@ -81,26 +82,29 @@ public interface RIB extends RibReference, ClusterSingletonServiceProvider {
      *
      * @return DOMDataTreeChangeService
      */
-    DOMDataTreeChangeService getService();
-
-    ImportPolicyPeerTracker getImportPolicyPeerTracker();
+    DataTreeChangeExtension getService();
 
     /**
-     * Returns ExportPolicyPeerTracker for specific tableKey, where peer can register himself
-     * as supporting the table. Same export policy can be used to check which peers support respective
-     * table and announce then routes if required.
+     * Returns true if RIB supports table.
      *
-     * @param tablesKey supported table
-     * @return ExportPolicyPeerTracker
+     * @param tableKey table
+     * @return true if supported
      */
-    ExportPolicyPeerTracker getExportPolicyPeerTracker(TablesKey tablesKey);
+    boolean supportsTable(TablesKey tableKey);
 
     Set<TablesKey> getLocalTablesKeys();
 
     /**
-     * Return common ServiceGroupIdentifier to be used between same group cluster service
+     * Return Policies Container.
+     *
+     * @return policies
+     */
+    BGPRibRoutingPolicy getRibPolicies();
+
+    /**
+     * Returns peer tracker for the rib.
      *
-     * @return ServiceGroupIdentifier
+     * @return peer tracker
      */
-    ServiceGroupIdentifier getRibIServiceGroupIdentifier();
+    BGPPeerTracker getPeerTracker();
 }