Class: RedisFailover::NodeSnapshot
- Inherits:
-
Object
- Object
- RedisFailover::NodeSnapshot
- Defined in:
- lib/redis_failover/node_snapshot.rb
Overview
Represents a snapshot of a particular redis node as seen by all currently running redis node managers.
Instance Attribute Summary collapse
-
#node ⇒ String
readonly
The redis node.
Instance Method Summary collapse
-
#all_available? ⇒ Boolean
node was viewable.
-
#all_unavailable? ⇒ Boolean
node was unviewable.
-
#available_count ⇒ Integer
this node is available.
-
#avg_latency ⇒ Integer
The average available latency.
-
#initialize(node) ⇒ NodeSnapshot
constructor
Creates a new instance.
-
#node_managers ⇒ Array<String>
All node managers involved in this snapshot.
-
#to_s ⇒ String
A friendly representation of this node snapshot.
-
#unavailable_count ⇒ Integer
this node is unavailable.
-
#unviewable_by(node_manager) ⇒ Object
Declares this node unavailable by the specified node manager.
-
#viewable_by(node_manager, latency) ⇒ Object
Declares this node available by the specified node manager.
-
#viewable_by?(node_manager) ⇒ Boolean
Determines if this node is viewable by a node manager.
Constructor Details
#initialize(node) ⇒ NodeSnapshot
Creates a new instance.
12 13 14 15 16 |
# File 'lib/redis_failover/node_snapshot.rb', line 12 def initialize(node) @node = node @available = {} @unavailable = [] end |
Instance Attribute Details
#node ⇒ String (readonly)
Returns the redis node.
6 7 8 |
# File 'lib/redis_failover/node_snapshot.rb', line 6 def node @node end |
Instance Method Details
#all_available? ⇒ Boolean
node was viewable
65 66 67 |
# File 'lib/redis_failover/node_snapshot.rb', line 65 def all_available? available_count > 0 && unavailable_count == 0 end |
#all_unavailable? ⇒ Boolean
node was unviewable
71 72 73 |
# File 'lib/redis_failover/node_snapshot.rb', line 71 def all_unavailable? unavailable_count > 0 && available_count == 0 end |
#available_count ⇒ Integer
this node is available
42 43 44 |
# File 'lib/redis_failover/node_snapshot.rb', line 42 def available_count @available.size end |
#avg_latency ⇒ Integer
Returns the average available latency.
53 54 55 56 |
# File 'lib/redis_failover/node_snapshot.rb', line 53 def avg_latency return if @available.empty? @available.values.inject(0) { |sum, n| sum + n } / @available.size end |
#node_managers ⇒ Array<String>
Returns all node managers involved in this snapshot.
59 60 61 |
# File 'lib/redis_failover/node_snapshot.rb', line 59 def node_managers (@available.keys + @unavailable).uniq end |
#to_s ⇒ String
Returns a friendly representation of this node snapshot.
76 77 78 79 |
# File 'lib/redis_failover/node_snapshot.rb', line 76 def to_s 'Node %s available by %p, unavailable by %p (%d up, %d down)' % [node, @available, @unavailable, available_count, unavailable_count] end |
#unavailable_count ⇒ Integer
this node is unavailable
48 49 50 |
# File 'lib/redis_failover/node_snapshot.rb', line 48 def unavailable_count @unavailable.size end |
#unviewable_by(node_manager) ⇒ Object
Declares this node unavailable by the specified node manager.
36 37 38 |
# File 'lib/redis_failover/node_snapshot.rb', line 36 def unviewable_by(node_manager) @unavailable << node_manager end |
#viewable_by(node_manager, latency) ⇒ Object
Declares this node available by the specified node manager.
22 23 24 |
# File 'lib/redis_failover/node_snapshot.rb', line 22 def viewable_by(node_manager, latency) @available[node_manager] = latency end |
#viewable_by?(node_manager) ⇒ Boolean
Determines if this node is viewable by a node manager.
29 30 31 |
# File 'lib/redis_failover/node_snapshot.rb', line 29 def viewable_by?(node_manager) @available.key?(node_manager) end |