Class: Makara::Strategies::PriorityFailover
- Inherits:
-
Abstract
- Object
- Abstract
- Makara::Strategies::PriorityFailover
show all
- Defined in:
- lib/makara/strategies/priority_failover.rb
Instance Attribute Summary
Attributes inherited from Abstract
#pool
Instance Method Summary
collapse
Methods inherited from Abstract
#initialize
Instance Method Details
#connection_added(wrapper) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/makara/strategies/priority_failover.rb', line 9
def connection_added(wrapper)
@weighted_connections.each_with_index do |con, index|
if wrapper._makara_weight > con._makara_weight
@weighted_connections.insert(index, wrapper)
return
end
end
@weighted_connections << wrapper
end
|
#current ⇒ Object
22
23
24
|
# File 'lib/makara/strategies/priority_failover.rb', line 22
def current
safe_value(@current_idx)
end
|
#init ⇒ Object
4
5
6
7
|
# File 'lib/makara/strategies/priority_failover.rb', line 4
def init
@current_idx = 0
@weighted_connections = []
end
|
#next ⇒ Object
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/makara/strategies/priority_failover.rb', line 26
def next
@weighted_connections.each_with_index do |con, index|
check = safe_value(index)
next unless check
@current_idx = index
return check
end
nil
end
|
#safe_value(idx) ⇒ Object
return the connection if it’s not blacklisted otherwise return nil optionally, store the position and context we’re returning
40
41
42
43
44
45
|
# File 'lib/makara/strategies/priority_failover.rb', line 40
def safe_value(idx)
con = @weighted_connections[idx]
return nil unless con
return nil if con._makara_blacklisted?
con
end
|