Method: Peasant::NodeManager#select

Defined in:
lib/peasant/node_manager.rb

#select {|node| ... } ⇒ Object

Yields:

  • (node)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/peasant/node_manager.rb', line 14

def select
  @pool = @nodes.clone if @pool.empty?

  case @strategy
  when :balanced
    node = @nodes.sort_by{ |b| b.load }.first
  when :roundrobin
    node = @pool.shift
  when :random
    node = @nodes.sample
  when :manual
    node = @pool.first
  else
    raise ArgumentError, "Unknown strategy: #{@strategy}"
  end

  node.on_select_cb.call
  yield node if block_given?
  node
end