Class: Q3Servers::MassiveHelper
- Inherits:
-
Object
- Object
- Q3Servers::MassiveHelper
- Defined in:
- lib/q3_servers/massive_helper.rb
Instance Attribute Summary collapse
-
#servers ⇒ Object
Returns the value of attribute servers.
-
#sockets ⇒ Object
readonly
Returns the value of attribute sockets.
Instance Method Summary collapse
- #calculate_index(socket) ⇒ Object
-
#initialize(servers, logger) ⇒ MassiveHelper
constructor
A new instance of MassiveHelper.
- #read_info(sockets, max_retries, timeout, &block) ⇒ Object
- #read_info_servers(max_retries, timeout, &block) ⇒ Object
- #read_status_servers(max_retries, timeout, &block) ⇒ Object
Constructor Details
#initialize(servers, logger) ⇒ MassiveHelper
Returns a new instance of MassiveHelper.
7 8 9 10 |
# File 'lib/q3_servers/massive_helper.rb', line 7 def initialize(servers, logger) @logger = logger self.servers = servers end |
Instance Attribute Details
#servers ⇒ Object
Returns the value of attribute servers.
5 6 7 |
# File 'lib/q3_servers/massive_helper.rb', line 5 def servers @servers end |
#sockets ⇒ Object (readonly)
Returns the value of attribute sockets.
5 6 7 |
# File 'lib/q3_servers/massive_helper.rb', line 5 def sockets @sockets end |
Instance Method Details
#calculate_index(socket) ⇒ Object
46 47 48 49 50 |
# File 'lib/q3_servers/massive_helper.rb', line 46 def calculate_index(socket) # to determine which socket answered addr = socket.peeraddr(false) ServerConnection.new(addr.last, addr[1]).unique_index end |
#read_info(sockets, max_retries, timeout, &block) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/q3_servers/massive_helper.rb', line 22 def read_info(sockets, max_retries, timeout, &block) servers_with_info = [] sockets_completed = 0 retries = 0 sockets.size.times do |_i| break if (sockets_completed >= sockets.size) || (retries >= max_retries) ready_sockets = IO.select(sockets, nil, nil, timeout) if ready_sockets && (ready_sockets = ready_sockets[0]) retries = 0 ready_sockets.each do |socket| sockets_completed += 1 server = servers[calculate_index(socket)] block.call(server) servers_with_info << server end else retries += 1 @logger&.info "Retry n #{retries}" end end servers_with_info end |
#read_info_servers(max_retries, timeout, &block) ⇒ Object
12 13 14 15 |
# File 'lib/q3_servers/massive_helper.rb', line 12 def read_info_servers(max_retries, timeout, &block) @logger&.info '======== Read Info servers ========' read_info(servers.map { |_unique_index, server| server.socket }, max_retries, timeout, &block) end |
#read_status_servers(max_retries, timeout, &block) ⇒ Object
17 18 19 20 |
# File 'lib/q3_servers/massive_helper.rb', line 17 def read_status_servers(max_retries, timeout, &block) @logger&.info '======== Read Status servers ========' read_info(servers.map { |_unique_index, server| server.socket }, max_retries, timeout, &block) end |