Class: Elasticsearch::Transport::Transport::Connections::Collection

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(arguments = {}) ⇒ Collection

Returns a new instance of Collection.

Parameters:

  • arguments (Hash) (defaults to: {})

    a customizable set of options

Options Hash (arguments):


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

#selectorObject (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

Parameters:

  • connections (Connection, Array)

    A connection or an array of connections to add

Returns:

  • (self)

108
109
110
111
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 108

def add(connections)
  @connections += Array(connections).to_a
  self
end

#allArray

Returns an Array of all connections, both dead and alive

Returns:

  • (Array)

75
76
77
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 75

def all
  @connections
end

#connectionsArray Also known as: alive

Returns an Array of alive connections.

Returns:

  • (Array)

58
59
60
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 58

def connections
  @connections.reject { |c| c.dead? }
end

#deadArray

Returns an Array of dead connections.

Returns:

  • (Array)

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.

Returns:


86
87
88
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 86

def get_connection(options={})
  selector.select(options) || @connections.min_by(&:failures)
end

#hostsArray

Returns an Array of hosts information in this collection as Hashes.

Returns:

  • (Array)

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

Parameters:

  • connections (Connection, Array)

    A connection or an array of connections to remove

Returns:

  • (self)

118
119
120
121
# File 'lib/elasticsearch/transport/transport/connections/collection.rb', line 118

def remove(connections)
  @connections -= Array(connections).to_a
  self
end

#sizeObject


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