public void AddAddresses(PeerId p, IEnumerable <Multiaddress> addrs, TimeSpan ttl) { if (ttl < TimeSpan.Zero) { return; } var amap = _addrs.GetOrAdd(p, _ => new Dictionary <string, ExpiringAddress>()); var exp = DateTime.Now.Add(ttl); foreach (var addr in addrs) { if (addr == null) { continue; } var addrstr = Encoding.UTF8.GetString(addr.ToBytes()); ExpiringAddress a; if (!amap.TryGetValue(addrstr, out a) || exp > a.TTL) { amap[addrstr] = new ExpiringAddress(addr, exp); } } }
public void SetAddresses(PeerId p, IEnumerable <Multiaddress> addrs, TimeSpan ttl) { var amap = _addrs.GetOrAdd(p, _ => new Dictionary <string, ExpiringAddress>()); var exp = DateTime.Now.Add(ttl); foreach (var addr in addrs) { if (addr == null) { continue; } var addrstr = Encoding.UTF8.GetString(addr.ToBytes()); if (ttl > TimeSpan.Zero) { amap[addrstr] = new ExpiringAddress(addr, exp); } else { amap.Remove(addrstr); } } }