Class: EbisuConnection::SlaveGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/ebisu_connection/slave_group.rb

Defined Under Namespace

Classes: AllSlavesHasGoneError

Instance Method Summary collapse

Constructor Details

#initialize(slaves_conf, slave_group) ⇒ SlaveGroup

Returns a new instance of SlaveGroup.



5
6
7
8
9
10
11
# File 'lib/ebisu_connection/slave_group.rb', line 5

def initialize(slaves_conf, slave_group)
  @slaves = slaves_conf.map do |conf|
    Slave.new(conf, slave_group)
  end

  recalc_roulette
end

Instance Method Details

#all_disconnect!Object



33
34
35
36
# File 'lib/ebisu_connection/slave_group.rb', line 33

def all_disconnect!
  @reserve_release = nil
  @slaves.each {|s| s.disconnect!}
end

#recovery_connection?Boolean

Returns:

  • (Boolean)

Raises:



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ebisu_connection/slave_group.rb', line 18

def recovery_connection?
  dead_slaves = @slaves.select{|s| !s.active? }
  return false if dead_slaves.empty?

  dead_slaves.each do |s|
    s.disconnect!
    @slaves.delete(s)
  end

  raise AllSlavesHasGoneError if @slaves.empty?

  recalc_roulette
  true
end

#reserve_release_connection!Object



38
39
40
# File 'lib/ebisu_connection/slave_group.rb', line 38

def reserve_release_connection!
  @reserve_release = true
end

#reserved_release?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/ebisu_connection/slave_group.rb', line 42

def reserved_release?
  !!@reserve_release
end

#sampleObject



13
14
15
16
# File 'lib/ebisu_connection/slave_group.rb', line 13

def sample
  raise AllSlavesHasGoneError if @slaves.empty?
  @slaves[@roulette.sample]
end