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.ClusterIdentifier;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeFactory;
import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy;
private final RIBExtensionConsumerContext extensions;
private final YangInstanceIdentifier yangRibId;
private final RIBSupportContextRegistryImpl ribContextRegistry;
+ private final EffectiveRibInWriter efWriter;
+
private final Runnable scheduler = new Runnable() {
@Override
public void run() {
final WriteTransaction trans = this.chain.newWriteOnlyTransaction();
- final PolicyDatabase pd = new PolicyDatabase(localAs.getValue(), localBgpId, this.clusterId);
-
- final DOMDataBrokerExtension service = this.domDataBroker.getSupportedExtensions().get(DOMDataTreeChangeService.class);
- final DOMTransactionChain domChain = this.createPeerChain(this);
- EffectiveRibInWriter.create((DOMDataTreeChangeService) service, domChain, getYangRibId(), pd, this.ribContextRegistry);
- LOG.debug("Effective RIB created.");
-
// put empty BgpRib if not exists
trans.put(LogicalDatastoreType.OPERATIONAL, getInstanceIdentifier(),
new RibBuilder().setKey(new RibKey(ribId)).setPeer(Collections.<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.rib.Peer> emptyList()).setId(ribId).setLocRib(
if (this.tables.create(trans, this, key) == null) {
LOG.debug("Did not create local table for unhandled table type {}", t);
}
-
- // reusing the for cycle
- // create locRibWriter for each table
- // FIXME: temporary create writer only for Ipv4
- if (key.getAfi().equals(Ipv4AddressFamily.class)) {
- LocRibWriter.create(this.ribContextRegistry.getRIBSupportContext(key).getRibSupport(), domChain, getYangRibId(), localAs, (DOMDataTreeChangeService) service, pd);
- }
}
Futures.addCallback(trans.submit(), new FutureCallback<Void>() {
}
});
+
+ final PolicyDatabase pd = new PolicyDatabase(localAs.getValue(), localBgpId, this.clusterId);
+
+ final DOMDataBrokerExtension service = this.domDataBroker.getSupportedExtensions().get(DOMDataTreeChangeService.class);
+ final DOMTransactionChain domChain = this.createPeerChain(this);
+ this.efWriter = EffectiveRibInWriter.create((DOMDataTreeChangeService) service, this.createPeerChain(this), getYangRibId(), pd, this.ribContextRegistry);
+ LOG.debug("Effective RIB created.");
+
+ for (final BgpTableType t : localTables) {
+ final TablesKey key = new TablesKey(t.getAfi(), t.getSafi());
+ // create locRibWriter for each table
+ // FIXME: temporary create writer only for Ipv4
+ if (key.getAfi().equals(Ipv4AddressFamily.class) || key.getAfi().equals(Ipv6AddressFamily.class)) {
+ LocRibWriter.create(this.ribContextRegistry, key, this.createPeerChain(this), getYangRibId(), localAs, (DOMDataTreeChangeService) service, pd);
+ }
+ }
}
+ @Deprecated
synchronized void initTables(final byte[] remoteBgpId) {
}
@Override
+ @Deprecated
public synchronized void updateTables(final Peer peer, final Update message) {
final AdjRIBsTransactionImpl trans = new AdjRIBsTransactionImpl(this.ribOuts, this.comparator, this.chain.newWriteOnlyTransaction());
});
}
+ @Deprecated
@Override
public synchronized void clearTable(final Peer peer, final TablesKey key) {
final AdjRIBsIn<?, ?> ari = this.tables.get(key);
}
@SuppressWarnings("unchecked")
+ @Deprecated
protected <K, V extends Route> AdjRIBsIn<K, V> getTable(final TablesKey key) {
return (AdjRIBsIn<K, V>) this.tables.get(key);
}
return this.dispatcher;
}
+ @Deprecated
@Override
public void initTable(final Peer bgpPeer, final TablesKey key) {
// FIXME: BUG-196: support graceful restart