Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
                }
            }
        }