popIfExpired method

Future<ExpiringAddr?> popIfExpired(
  1. DateTime now
)

Implementation

Future<ExpiringAddr?> popIfExpired(DateTime now) async {

  return await _lock.synchronized(() async {
    if (_expiringHeap.isNotEmpty && !now.isBefore(nextExpiry())) {
      final ea = await pop();
      final peerKey = ea.peer.toString();
      final addrKey = ea.addr.toString();

      if (_addrs.containsKey(peerKey)) {
        _addrs[peerKey]!.remove(addrKey);
        if (_addrs[peerKey]!.isEmpty) {
          _addrs.remove(peerKey);
        }
      }

      return ea;
    }
    return null;
  });
}