Ejemplo n.º 1
0
 public void RefreshNode(Node node)
 {
     lock (_nodeBucketLock)
     {
         var item       = new NodeBucketItem(node);
         var bucketItem = _items.FirstOrDefault(x => x.Equals(item));
         bucketItem?.OnContactReveived();
     }
 }
Ejemplo n.º 2
0
 public void RemoveNode(Node node)
 {
     lock (_nodeBucketLock)
     {
         var item = new NodeBucketItem(node);
         if (_items.Contains(item))
         {
             _items.Remove(item);
         }
     }
 }
Ejemplo n.º 3
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);
         }
     }
 }
Ejemplo n.º 4
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));
            }
        }