class Nonnative::Pool
Attributes
configuration[R]
Public Class Methods
new(configuration)
click to toggle source
# File lib/nonnative/pool.rb, line 5 def initialize(configuration) @configuration = configuration end
Public Instance Methods
process_by_name(name)
click to toggle source
# File lib/nonnative/pool.rb, line 19 def process_by_name(name) processes[runner_index(configuration.processes, name)].first end
server_by_name(name)
click to toggle source
# File lib/nonnative/pool.rb, line 23 def server_by_name(name) servers[runner_index(configuration.servers, name)].first end
service_by_name(name)
click to toggle source
# File lib/nonnative/pool.rb, line 27 def service_by_name(name) services[runner_index(configuration.services, name)] end
start(&block)
click to toggle source
# File lib/nonnative/pool.rb, line 9 def start(&block) services.each(&:start) [servers, processes].each { |t| process(t, :start, :open?, &block) } end
stop(&block)
click to toggle source
# File lib/nonnative/pool.rb, line 14 def stop(&block) [processes, servers].each { |t| process(t, :stop, :closed?, &block) } services.each(&:stop) end
Private Instance Methods
process(all, type_method, port_method, &block)
click to toggle source
# File lib/nonnative/pool.rb, line 58 def process(all, type_method, port_method, &block) types = [] pids = [] threads = [] all.each do |type, port| types << type pids << type.send(type_method) threads << Thread.new { port.send(port_method) } end ports = threads.map(&:value) yield_results(types, pids, ports, &block) end
processes()
click to toggle source
# File lib/nonnative/pool.rb, line 42 def processes @processes ||= configuration.processes.map do |p| [Nonnative::Process.new(p), Nonnative::Port.new(p)] end end
runner_index(runners, name)
click to toggle source
# File lib/nonnative/pool.rb, line 35 def runner_index(runners, name) index = runners.find_index { |s| s.name == name } raise NotFoundError, "Could not find runner with name '#{name}'" if index.nil? index end
servers()
click to toggle source
# File lib/nonnative/pool.rb, line 48 def servers @servers ||= configuration.servers.map do |s| [s.klass.new(s), Nonnative::Port.new(s)] end end
services()
click to toggle source
# File lib/nonnative/pool.rb, line 54 def services @services ||= configuration.services.map { |s| Nonnative::Service.new(s) } end
yield_results(all, pids, ports) { |name, id, result| ... }
click to toggle source
# File lib/nonnative/pool.rb, line 74 def yield_results(all, pids, ports) all.zip(pids, ports).each do |type, id, result| yield type.name, id, result end end