private bool Add(Node node, bool raiseNodeAdded) { if (node == null) { throw new ArgumentNullException("node"); } Bucket bucket = buckets.Find(delegate(Bucket b) { return(b.CanContain(node)); }); if (bucket != null && bucket.Nodes.Contains(node)) { return(false); } bool added = bucket.Add(node); if (!added && bucket.CanContain(LocalNode)) { if (Split(bucket)) { return(Add(node, raiseNodeAdded)); } } return(added); }
bool Add(Node node, bool raiseNodeAdded) { if (node == null) { throw new ArgumentNullException(nameof(node)); } Bucket bucket = Buckets.Find(b => b.CanContain(node)) !; if (bucket.Nodes.Contains(node)) { return(false); } bool added = bucket.Add(node); if (!added && bucket.CanContain(LocalNode)) { if (Split(bucket)) { return(Add(node, raiseNodeAdded)); } } return(added); }