1 package org.opendaylight.protocol.bgp.rib.impl;
3 import java.util.Comparator;
4 import java.util.HashMap;
7 import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn;
8 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.PathAttributes;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
12 import com.google.common.base.Preconditions;
14 final class RIBTables {
15 private final Map<TablesKey, AdjRIBsIn> tables = new HashMap<>();
16 private final Comparator<PathAttributes> comparator;
17 private final RIBExtensionConsumerContext registry;
19 RIBTables(final Comparator<PathAttributes> comparator, final RIBExtensionConsumerContext extensions) {
20 this.comparator = Preconditions.checkNotNull(comparator);
21 this.registry = Preconditions.checkNotNull(extensions);
24 public synchronized AdjRIBsIn get(final TablesKey key) {
25 return tables.get(key);
28 public synchronized AdjRIBsIn getOrCreate(final TablesKey key) {
29 final AdjRIBsIn table;
31 if (!tables.containsKey(key)) {
32 table = registry.getAdjRIBsInFactory(key.getAfi(), key.getSafi()).createAdjRIBsIn(comparator, key);
33 tables.put(key, table);
35 table = tables.get(key);