Exemplo n.º 1
0
        public void Put(ContactNode node)
        {
            lock (__rwlock) {
                if (IsFull())
                {
                    throw new Exception("Bucket is full");
                }

                var newNode = new BucketContactNode(node)
                {
                    LastUsed = DateTime.UtcNow
                };
                LastUpdated = DateTime.UtcNow;

                _nodesMap.Add(node.Id, newNode);
            }
        }
Exemplo n.º 2
0
        public void Replace(Id oldId, ContactNode newNode)
        {
            var added = new BucketContactNode(newNode)
            {
                LastUsed = DateTime.UtcNow
            };

            lock ( __rwlock ) {
                if (!_nodesMap.ContainsKey(oldId))
                {
                    return;
                }

                var replaced = _nodesMap[oldId];
                _nodesMap.Remove(oldId);
                _nodesMap[added.Node.Id] = added;
            }
        }
Exemplo n.º 3
0
        public void Replace(KadId oldId, KadContactNode newNode)
        {
            var added = new BucketContactNode(newNode)
            {
                LastUsed = DateTime.UtcNow
            };

            lock ( __rwlock ) {
                if (!_nodesMap.ContainsKey(oldId))
                {
                    throw new Exception($"Node {oldId} not found");
                }

                var replaced = _nodesMap[oldId];
                _sortedNodes.Remove(replaced);
                _nodesMap.Remove(oldId);

                _sortedNodes.Add(added);
                _nodesMap[added.Node.Id] = added;
            }
        }