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 92128f9..9896ba8
@@ -7,29 +7,29 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl.spi;
 
-import com.google.common.base.Optional;
 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.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigProvider;
+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.impl.stats.rib.impl.BGPRenderStats;
-import org.opendaylight.protocol.bgp.rib.spi.CacheDisconnectedPeers;
+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();
@@ -40,17 +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.
@@ -77,38 +76,35 @@ public interface RIB  extends RibReference, ClusterSingletonServiceProvider {
 
     CodecsRegistry getCodecsRegistry();
 
-    /**
-     * Optionally returns OpenConfigProvider, which brings an access to
-     * BGP OpenConfig mappers.
-     * @return An Optional of BGPOpenConfigProvider or Absent if provider is
-     * not available.
-     */
-    Optional<BGPOpenConfigProvider> getOpenConfigProvider();
-
-    /**
-     * Return cache disconnected peers which allows us to avoid update
-     * DS from a peer already disconnected, when multiple peers are disconnected
-     * at the same time and their own exportPolicy has not been updated yet.
-     * @return
-     */
-    CacheDisconnectedPeers getCacheDisconnectedPeers();
-
     /**
      * Return instance of DOMDataTreeChangeService, where consumer can register to
      * listen on DOM data changes.
+     *
      * @return DOMDataTreeChangeService
      */
-    DOMDataTreeChangeService getService();
+    DataTreeChangeExtension getService();
 
-    BGPRenderStats getRenderStats();
-
-    ImportPolicyPeerTracker getImportPolicyPeerTracker();
+    /**
+     * Returns true if RIB supports table.
+     *
+     * @param tableKey table
+     * @return true if supported
+     */
+    boolean supportsTable(TablesKey tableKey);
 
     Set<TablesKey> getLocalTablesKeys();
 
     /**
-     * Return common ServiceGroupIdentifier to be used between same group cluster service
-     * @return ServiceGroupIdentifier
+     * Return Policies Container.
+     *
+     * @return policies
+     */
+    BGPRibRoutingPolicy getRibPolicies();
+
+    /**
+     * Returns peer tracker for the rib.
+     *
+     * @return peer tracker
      */
-    ServiceGroupIdentifier getRibIServiceGroupIdentifier();
+    BGPPeerTracker getPeerTracker();
 }