1 # -*- encoding: binary -*-
3 module Rainbows::Rev::Core
6 # runs inside each forked worker, this sits around and waits
7 # for connections and doesn't die until the parent dies (or is
8 # given a INT, QUIT, or TERM signal)
9 def worker_loop(worker)
10 Rainbows::Response.setup(Rainbows::Rev::Client)
11 require 'rainbows/rev/sendfile'
12 Rainbows::Rev::Client.__send__(:include, Rainbows::Rev::Sendfile)
13 init_worker_process(worker)
14 mod = Rainbows.const_get(@use)
15 rloop = Rainbows::Rev::Server.const_set(:LOOP, Rev::Loop.default)
16 Rainbows::Rev::Client.const_set(:LOOP, rloop)
17 Rainbows::Rev::Server.const_set(:MAX, @worker_connections)
18 Rainbows::Rev::Server.const_set(:CL, mod.const_get(:Client))
19 Rainbows::EvCore.const_set(:APP, G.server.app)
20 Rainbows::EvCore.setup
21 Rainbows::Rev::Heartbeat.new(1, true).attach(rloop)
22 LISTENERS.map! { |s| Rainbows::Rev::Server.new(s).attach(rloop) }