Class: LoadBalancedRestClient::Cluster

Inherits:
Object
  • Object
show all
Defined in:
lib/cluster.rb

Defined Under Namespace

Classes: NoServers

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(servers, opts = {}) ⇒ Cluster

Returns a new instance of Cluster.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cluster.rb', line 6

def initialize(servers, opts={})
  server_klass = opts[:server_klass] || Server

  if servers.first.class.to_s != "LoadBalancedRestClient::Server"
    @servers = servers.map {|server| server_klass.new(server, opts)}
  else
    @servers = servers
  end

  if servers.empty?
    raise NoServers.new("No servers in cluster") 
  end
end

Instance Attribute Details

#serversObject

Returns the value of attribute servers.



4
5
6
# File 'lib/cluster.rb', line 4

def servers
  @servers
end

Instance Method Details

#balance!Object



20
21
22
# File 'lib/cluster.rb', line 20

def balance!
  @servers.push(@servers.delete(next_server))
end

#next_serverObject



24
25
26
# File 'lib/cluster.rb', line 24

def next_server
  servers_to_try.first || @servers.first
end

#servers_to_tryObject



28
29
30
# File 'lib/cluster.rb', line 28

def servers_to_try
  @servers.select {|server| server.should_try? }
end