use of org.opendaylight.protocol.bgp.mode.impl.add.RouteKey in project bgpcep by opendaylight.
the class ComplexRouteEntry method addRoute.
@Override
public int addRoute(final UnsignedInteger routerId, final long remotePathId, final Route route) {
final OffsetMap oldMap = getOffsets();
final int offset = addRoute(new RouteKey(routerId, remotePathId), route.getAttributes());
final OffsetMap newMap = getOffsets();
if (!newMap.equals(oldMap)) {
this.values = newMap.expand(oldMap, this.values, offset);
}
newMap.setValue(this.values, offset, route);
return offset;
}
use of org.opendaylight.protocol.bgp.mode.impl.add.RouteKey in project bgpcep by opendaylight.
the class AbstractAllPathsRouteEntry method selectBest.
@Override
public final boolean selectBest(final long localAs) {
final List<AddPathBestPath> newBestPathList = new ArrayList<>();
final List<RouteKey> keyList = this.offsets.getRouteKeysList();
if (!keyList.isEmpty()) {
/* we set the best path first on List for not supported Add path cases*/
final AddPathBestPath newBest = selectBest(localAs, keyList);
newBestPathList.add(newBest);
keyList.remove(newBest.getRouteKey());
/*we add the rest of path, regardless in what order they are, since this is all path case */
for (final RouteKey key : keyList) {
final int offset = this.offsets.offsetOf(key);
final Attributes attributes = this.offsets.getValue(this.values, offset);
requireNonNull(key.getRouteId(), "Router ID may not be null");
if (attributes != null) {
final BestPathState state = new BestPathStateImpl(attributes);
final AddPathBestPath bestPath = new AddPathBestPath(state, key, offset, this.offsets.getValue(this.pathsId, offset));
newBestPathList.add(bestPath);
}
}
}
return isBestPathNew(ImmutableList.copyOf(newBestPathList));
}
use of org.opendaylight.protocol.bgp.mode.impl.add.RouteKey in project bgpcep by opendaylight.
the class ComplexRouteEntry method removeRoute.
@Override
public boolean removeRoute(final UnsignedInteger routerId, final long remotePathId) {
final RouteKey key = new RouteKey(routerId, remotePathId);
final OffsetMap map = getOffsets();
final int offset = map.offsetOf(key);
this.values = map.removeValue(this.values, offset);
return removeRoute(key, offset);
}
use of org.opendaylight.protocol.bgp.mode.impl.add.RouteKey in project bgpcep by opendaylight.
the class AbstractNPathsRouteEntry method selectBest.
@Override
public final boolean selectBest(final long localAs) {
final List<AddPathBestPath> newBestPathList = new ArrayList<>();
final List<RouteKey> keyList = this.offsets.getRouteKeysList();
final long maxSearch = this.npaths < this.offsets.size() && this.npaths != 0 ? this.npaths : this.offsets.size();
for (long i = 0; i < maxSearch; ++i) {
final AddPathBestPath newBest = selectBest(localAs, keyList);
newBestPathList.add(newBest);
keyList.remove(newBest.getRouteKey());
}
return isBestPathNew(ImmutableList.copyOf(newBestPathList));
}
use of org.opendaylight.protocol.bgp.mode.impl.add.RouteKey in project bgpcep by opendaylight.
the class ComplexRouteEntry method addRoute.
@Override
public int addRoute(final UnsignedInteger routerId, final long remotePathId, final Route route) {
final OffsetMap oldMap = getOffsets();
final int offset = addRoute(new RouteKey(routerId, remotePathId), route.getAttributes());
final OffsetMap newMap = getOffsets();
if (!newMap.equals(oldMap)) {
this.values = newMap.expand(oldMap, this.values, offset);
}
newMap.setValue(this.values, offset, route);
return offset;
}
Aggregations