module Tipi::Configuration

Public Class Methods

forked_supervise(config) click to toggle source
# File lib/tipi/configuration.rb, line 33
def forked_supervise(config)
  config[:forked].times do
    spin { Polyphony.watch_process { simple_supervise(config) } }
  end
  suspend
end
run(config) click to toggle source
# File lib/tipi/configuration.rb, line 16
def run(config)
  start_listeners(config)
  config[:forked] ? forked_supervise(config) : simple_supervise(config)
end
setup_virtual_hosts(config) click to toggle source
# File lib/tipi/configuration.rb, line 40
def setup_virtual_hosts(config)
  {
    '*': Tipi::DefaultHandler.new(config)
  }
end
simple_supervise(config) click to toggle source
# File lib/tipi/configuration.rb, line 26
def simple_supervise(config)
  virtual_hosts = setup_virtual_hosts(config)
  start_acceptors(config, virtual_hosts)
  suspend
  # supervise(restart: true)
end
start_acceptors(config, virtual_hosts) click to toggle source
# File lib/tipi/configuration.rb, line 46
def start_acceptors(config, virtual_hosts)
  spin do
    puts "pid: #{Process.pid}"
    while (connection = @server.accept)
      spin { virtual_hosts[:'*'].call(connection) }
    end
  end
end
start_listeners(config) click to toggle source
# File lib/tipi/configuration.rb, line 21
def start_listeners(config)
  puts "Listening on port 1234"
  @server = Polyphony::Net.tcp_listen('0.0.0.0', 1234, { reuse_addr: true, dont_linger: true })
end
supervise_config() click to toggle source
# File lib/tipi/configuration.rb, line 8
def supervise_config
  current_runner = nil
  while (config = receive)
    old_runner, current_runner = current_runner, spin { run(config) }
    old_runner&.stop
  end
end