Module: LeelaClient::LoadBalancer

Extended by:
LoadBalancer
Included in:
LoadBalancer
Defined in:
lib/leela_client/lb.rb

Instance Method Summary collapse

Instance Method Details

#group(ring, values) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/leela_client/lb.rb', line 21

def group(ring, values)
  g = Hash[ ring.values.map {|x| [x, []]} ]
  values.each do |v|
    node = ring.select(v.key)
    g[node] << v
  end
  return(g)
end

#group_limit(ring, values, maxsize) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/leela_client/lb.rb', line 30

def group_limit(ring, values, maxsize)
  g = {}
  c = 0
  group(ring, values).each do |k, vs|
    tmp = [[]]
    vs.each do |v|
      c += v.size
      if (c >= maxsize)
        c = v.size
        tmp << []
      end
      tmp[-1] << v
    end
    g[k] = tmp.select {|vs| vs.size > 0}
  end
  return(g)
end