diff options
Diffstat (limited to 'lib/rainbows/rev/core.rb')
-rw-r--r-- | lib/rainbows/rev/core.rb | 58 |
1 files changed, 22 insertions, 36 deletions
diff --git a/lib/rainbows/rev/core.rb b/lib/rainbows/rev/core.rb index 5c5b799..78d9601 100644 --- a/lib/rainbows/rev/core.rb +++ b/lib/rainbows/rev/core.rb @@ -3,40 +3,26 @@ require 'rev' Rev::VERSION >= '0.3.0' or abort 'rev >= 0.3.0 is required' require 'rainbows/rev/heartbeat' +require 'rainbows/rev/server' +module Rainbows::Rev::Core + include Rainbows::Base -module Rainbows - module Rev - class Server < ::Rev::IO - # CL and MAX will be defined in the corresponding worker loop - - def on_readable - return if CONN.size >= MAX - io = @_io.kgio_tryaccept and CL.new(io).attach(LOOP) - end - end # class Server - - module Core - include Base - - # runs inside each forked worker, this sits around and waits - # for connections and doesn't die until the parent dies (or is - # given a INT, QUIT, or TERM signal) - def worker_loop(worker) - Rainbows::Response.setup(Rainbows::Rev::Client) - require 'rainbows/rev/sendfile' - Rainbows::Rev::Client.__send__(:include, Rainbows::Rev::Sendfile) - init_worker_process(worker) - mod = Rainbows.const_get(@use) - rloop = Server.const_set(:LOOP, ::Rev::Loop.default) - Server.const_set(:MAX, @worker_connections) - Server.const_set(:CL, mod.const_get(:Client)) - EvCore.const_set(:APP, G.server.app) - Rainbows::EvCore.setup - Heartbeat.new(1, true).attach(rloop) - LISTENERS.map! { |s| Server.new(s).attach(rloop) } - rloop.run - end - - end # module Core - end # module Rev -end # module Rainbows + # runs inside each forked worker, this sits around and waits + # for connections and doesn't die until the parent dies (or is + # given a INT, QUIT, or TERM signal) + def worker_loop(worker) + Rainbows::Response.setup(Rainbows::Rev::Client) + require 'rainbows/rev/sendfile' + Rainbows::Rev::Client.__send__(:include, Rainbows::Rev::Sendfile) + init_worker_process(worker) + mod = Rainbows.const_get(@use) + rloop = Rainbows::Rev::Server.const_set(:LOOP, ::Rev::Loop.default) + Rainbows::Rev::Server.const_set(:MAX, @worker_connections) + Rainbows::Rev::Server.const_set(:CL, mod.const_get(:Client)) + Rainbows::EvCore.const_set(:APP, G.server.app) + Rainbows::EvCore.setup + Rainbows::Rev::Heartbeat.new(1, true).attach(rloop) + LISTENERS.map! { |s| Rainbows::Rev::Server.new(s).attach(rloop) } + rloop.run + end +end |