cleanupLSDB method

Map<T, List<LinkStateAdvertisement<T>>> cleanupLSDB(
  1. Map<T, List<LinkStateAdvertisement<T>>> lsdb,
  2. 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;
}