Ejemplo n.º 1
0
        protected AHAddress FindNodeNearestToAddress(AHAddress addr)
        {
            int       index  = _addrs.BinarySearch(addr);
            AHAddress to_use = addr;

            if (index < 0)
            {
                index = ~index;
                if (index == _addrs.Count)
                {
                    index = 0;
                }
                AHAddress right = _addrs[index];
                if (index == 0)
                {
                    index = _addrs.Count - 1;
                }
                AHAddress left = _addrs[index - 1];
                if (right.DistanceTo(addr) < left.DistanceTo(addr))
                {
                    to_use = right;
                }
                else
                {
                    to_use = left;
                }
            }

            return(to_use);
        }