Class: Elasticsearch::Transport::Transport::Connections::Selector::RoundRobin

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/elasticsearch/transport/transport/connections/selector.rb

Overview

“Round-robin” selector strategy (default).

Instance Attribute Summary

Attributes included from Base

#connections

Instance Method Summary collapse

Constructor Details

#initialize(arguments = {}) ⇒ RoundRobin

Returns a new instance of RoundRobin.

Parameters:

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

    a customizable set of options

Options Hash (arguments):


66
67
68
69
70
# File 'lib/elasticsearch/transport/transport/connections/selector.rb', line 66

def initialize(arguments = {})
  super
  @mutex = Mutex.new
  @current = nil
end

Instance Method Details

#select(options = {}) ⇒ Connections::Connection

Returns the next connection from the collection, rotating them in round-robin fashion.


76
77
78
79
80
81
82
83
84
85
86
# File 'lib/elasticsearch/transport/transport/connections/selector.rb', line 76

def select(options={})
  @mutex.synchronize do
    conns = connections
    if @current && (@current < conns.size-1)
      @current += 1
    else
      @current = 0
    end
    conns[@current]
  end
end