Class: Elasticsearch::Transport::Transport::Connections::Collection
- Inherits:
-
Object
- Object
- Elasticsearch::Transport::Transport::Connections::Collection
- Includes:
- Enumerable
- Defined in:
- lib/elasticsearch/transport/transport/connections/collection.rb
Overview
Wraps the collection of connections for the transport object as an Enumerable object.
Constant Summary collapse
- DEFAULT_SELECTOR =
Selector::RoundRobin
Instance Attribute Summary collapse
-
#selector ⇒ Object
readonly
Returns the value of attribute selector.
Instance Method Summary collapse
-
#add(connections) ⇒ self
Add connection(s) to the collection.
-
#all ⇒ Array
Returns an Array of all connections, both dead and alive.
-
#connections ⇒ Array
(also: #alive)
Returns an Array of alive connections.
-
#dead ⇒ Array
Returns an Array of dead connections.
- #each(&block) ⇒ Object
-
#get_connection(options = {}) ⇒ Connection
Returns a connection.
-
#hosts ⇒ Array
Returns an Array of hosts information in this collection as Hashes.
-
#initialize(arguments = {}) ⇒ Collection
constructor
A new instance of Collection.
-
#remove(connections) ⇒ self
Remove connection(s) from the collection.
- #size ⇒ Object
- #slice(*args) ⇒ Object (also: #[])
Constructor Details
#initialize(arguments = {}) ⇒ Collection
Returns a new instance of Collection.
40 41 42 43 44 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 40 def initialize(arguments={}) selector_class = arguments[:selector_class] || DEFAULT_SELECTOR @connections = arguments[:connections] || [] @selector = arguments[:selector] || selector_class.new(arguments.merge(:connections => self)) end |
Instance Attribute Details
#selector ⇒ Object (readonly)
Returns the value of attribute selector.
34 35 36 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 34 def selector @selector end |
Instance Method Details
#add(connections) ⇒ self
Add connection(s) to the collection
108 109 110 111 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 108 def add(connections) @connections += Array(connections).to_a self end |
#all ⇒ Array
Returns an Array of all connections, both dead and alive
75 76 77 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 75 def all @connections end |
#connections ⇒ Array Also known as: alive
Returns an Array of alive connections.
58 59 60 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 58 def connections @connections.reject { |c| c.dead? } end |
#dead ⇒ Array
Returns an Array of dead connections.
67 68 69 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 67 def dead @connections.select { |c| c.dead? } end |
#each(&block) ⇒ Object
90 91 92 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 90 def each(&block) connections.each(&block) end |
#get_connection(options = {}) ⇒ Connection
Returns a connection.
If there are no alive connections, returns a connection with least failures. Delegates to selector’s ‘#select` method to get the connection.
86 87 88 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 86 def get_connection(={}) selector.select() || @connections.min_by(&:failures) end |
#hosts ⇒ Array
Returns an Array of hosts information in this collection as Hashes.
50 51 52 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 50 def hosts @connections.to_a.map { |c| c.host } end |
#remove(connections) ⇒ self
Remove connection(s) from the collection
118 119 120 121 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 118 def remove(connections) @connections -= Array(connections).to_a self end |
#size ⇒ Object
99 100 101 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 99 def size connections.size end |
#slice(*args) ⇒ Object Also known as: []
94 95 96 |
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 94 def slice(*args) connections.slice(*args) end |