Bump upstreams
[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 864636d..9896ba8
@@ -7,27 +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.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.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.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-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 {
+public interface RIB extends RibReference, RibOutRefresh {
+    /**
+     * RIB AS.
+     *
+     * @return AS
+     */
     AsNumber getLocalAs();
 
     BgpId getBgpIdentifier();
@@ -38,19 +40,16 @@ public interface RIB  extends RibReference {
      *
      * @return A set of identifiers.
      */
-    @Nonnull Set<? extends BgpTableType> getLocalTables();
+    @NonNull Set<? extends BgpTableType> getLocalTables();
 
     BGPDispatcher getDispatcher();
 
-    long getRoutesCount(TablesKey key);
-
     /**
      * 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.
@@ -78,25 +77,34 @@ public interface RIB  extends RibReference {
     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.
+     * Return instance of DOMDataTreeChangeService, where consumer can register to
+     * listen on DOM data changes.
+     *
+     * @return DOMDataTreeChangeService
+     */
+    DataTreeChangeExtension getService();
+
+    /**
+     * Returns true if RIB supports table.
+     *
+     * @param tableKey table
+     * @return true if supported
      */
-    Optional<BGPOpenConfigProvider> getOpenConfigProvider();
+    boolean supportsTable(TablesKey tableKey);
+
+    Set<TablesKey> getLocalTablesKeys();
 
     /**
-     * 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
+     * Return Policies Container.
+     *
+     * @return policies
      */
-    CacheDisconnectedPeers getCacheDisconnectedPeers();
+    BGPRibRoutingPolicy getRibPolicies();
 
     /**
-     * Return instance of DOMDataTreeChangeService, where consumer can register to
-     * listen on DOM data changes.
-     * @return DOMDataTreeChangeService
+     * Returns peer tracker for the rib.
+     *
+     * @return peer tracker
      */
-    DOMDataTreeChangeService getService();
+    BGPPeerTracker getPeerTracker();
 }