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