Esempio n. 1
0
 public void RefreshNode(Node node)
 {
     lock (_nodeBucketLock)
     {
         var item       = new NodeBucketItem(node);
         var bucketItem = _items.FirstOrDefault(x => x.Equals(item));
         bucketItem?.OnContactReceived();
     }
 }
Esempio n. 2
0
 public void RemoveNode(Node node)
 {
     lock (_nodeBucketLock)
     {
         var item = new NodeBucketItem(node);
         if (_items.Contains(item))
         {
             _items.Remove(item);
         }
     }
 }
Esempio n. 3
0
 public void RefreshNode(Node node)
 {
     lock (_nodeBucketLock)
     {
         NodeBucketItem item       = new NodeBucketItem(node, DateTime.UtcNow);
         var            bucketItem = _items.Find(item);
         if (bucketItem != null)
         {
             bucketItem.Value.OnContactReceived();
             _items.Remove(item);
             _items.AddFirst(item);
         }
     }
 }
Esempio n. 4
0
 public void ReplaceNode(Node nodeToRemove, Node nodeToAdd)
 {
     lock (_nodeBucketLock)
     {
         var item = new NodeBucketItem(nodeToRemove);
         if (_items.Contains(item))
         {
             _items.Remove(item);
         }
         item = new NodeBucketItem(nodeToAdd);
         if (!_items.Contains(item))
         {
             _items.Add(item);
         }
     }
 }
Esempio n. 5
0
 public void ReplaceNode(Node nodeToRemove, Node nodeToAdd)
 {
     lock (_nodeBucketLock)
     {
         NodeBucketItem item = new NodeBucketItem(nodeToRemove, DateTime.Now);
         if (_items.Contains(item))
         {
             _items.Remove(item);
             AddNode(nodeToAdd);
         }
         else
         {
             throw new InvalidOperationException(
                       "Cannot replace non-existing node in the node table bucket");
         }
     }
 }
Esempio n. 6
0
        public NodeAddResult AddNode(Node node)
        {
            lock (_nodeBucketLock)
            {
                if (_items.Count < BucketSize)
                {
                    var item = new NodeBucketItem(node);
                    if (!_items.Contains(item))
                    {
                        _items.Add(item);
                    }
                    return(NodeAddResult.Added());
                }

                var evictionCandidate = GetEvictionCandidate();
                return(NodeAddResult.Full(evictionCandidate));
            }
        }
Esempio n. 7
0
        public NodeAddResult AddNode(Node node)
        {
            lock (_nodeBucketLock)
            {
                if (_items.Count < BucketSize)
                {
                    NodeBucketItem item = new NodeBucketItem(node, DateTime.UtcNow);
                    if (!_items.Contains(item))
                    {
                        _items.AddFirst(item);
                    }

                    return(NodeAddResult.Added());
                }

                NodeBucketItem evictionCandidate = GetEvictionCandidate();
                return(NodeAddResult.Full(evictionCandidate));
            }
        }