class Redis::HashRing

def self.binary_search(ary, value, &block)

Find the closest index in HashRing with value <= the given value
def self.binary_search(ary, value, &block)
  upper = ary.size - 1
  lower = 0
  idx = 0
  while(lower <= upper) do
    idx = (lower + upper) / 2
    comp = ary[idx] <=> value
    if comp == 0
      return idx
    elsif comp > 0
      upper = idx - 1
    else
      lower = idx + 1
    end
  end
  if upper < 0
    upper = ary.size - 1
  end
  return upper
end