コード例 #1
0
        public bool ContactExists(IPEndPoint contactEP)
        {
            _lock.TryEnterReadLock(LOCK_TIMEOUT);
            try
            {
                if (_contacts == null)
                {
                    if (_leftBucket.ContactExists(contactEP))
                    {
                        return(true);
                    }
                    else
                    {
                        return(_rightBucket.ContactExists(contactEP));
                    }
                }
                else
                {
                    foreach (NodeContact contact in _contacts.Values)
                    {
                        if (contact.NodeEP.Equals(contactEP))
                        {
                            return(true);
                        }
                    }

                    foreach (NodeContact contact in _replacementContacts.Values)
                    {
                        if (contact.NodeEP.Equals(contactEP))
                        {
                            return(true);
                        }
                    }

                    return(false);
                }
            }
            finally
            {
                _lock.ExitReadLock();
            }
        }