cleanupLSDB method
Map<T, List<LinkStateAdvertisement<T> > >
cleanupLSDB(
- Map<
T, List< lsdb,LinkStateAdvertisement< >T> > - DateTime currentTime
Performs link-state database maintenance and cleanup
lsdb - Current link-state database
currentTime - Current time for comparison
Returns cleaned link-state database
Implementation
Map<T, List<LinkStateAdvertisement<T>>> cleanupLSDB(
Map<T, List<LinkStateAdvertisement<T>>> lsdb,
DateTime currentTime,
) {
final cleanedLSDB = <T, List<LinkStateAdvertisement<T>>>{};
for (final entry in lsdb.entries) {
final router = entry.key;
final lsas = entry.value;
final validLSAs = <LinkStateAdvertisement<T>>[];
for (final lsa in lsas) {
if (currentTime.difference(lsa.timestamp) < lsaExpiry) {
validLSAs.add(lsa.incrementAge());
}
}
if (validLSAs.isNotEmpty) {
cleanedLSDB[router] = validLSAs;
}
}
return cleanedLSDB;
}