Class: OpenSearch::Transport::Transport::Connections::Collection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/opensearch/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):



49
50
51
52
53
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 49

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.



43
44
45
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 43

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)


117
118
119
120
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 117

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

#allArray

Returns an Array of all connections, both dead and alive

Returns:

  • (Array)


84
85
86
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 84

def all
  @connections
end

#connectionsArray Also known as: alive

Returns an Array of alive connections.

Returns:

  • (Array)


67
68
69
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 67

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

#deadArray

Returns an Array of dead connections.

Returns:

  • (Array)


76
77
78
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 76

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

#each(&block) ⇒ Object



99
100
101
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 99

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:



95
96
97
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 95

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)


59
60
61
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 59

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)


127
128
129
130
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 127

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

#sizeObject



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

def size
  connections.size
end

#slice(*args) ⇒ Object Also known as: []



103
104
105
# File 'lib/opensearch/transport/transport/connections/collection.rb', line 103

def slice(*args)
  connections.slice(*args)
end