popIfExpired method
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;
});
}