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