From f8ba20423edbe23acb772a9e908d9695ebd92d56 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 4 Dec 2009 00:58:45 -0800 Subject: rev: do not initialize a Rev::Loop in master process It may make it harder to switch between concurrency models with SIGHUP this way... --- lib/rainbows/rev/core.rb | 3 +-- lib/rainbows/rev/deferred_response.rb | 8 +++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/rainbows/rev/core.rb b/lib/rainbows/rev/core.rb index 1d667cc..90857a2 100644 --- a/lib/rainbows/rev/core.rb +++ b/lib/rainbows/rev/core.rb @@ -7,7 +7,6 @@ module Rainbows module Rev class Server < ::Rev::IO G = Rainbows::G - LOOP = ::Rev::Loop.default # CL and MAX will be defined in the corresponding worker loop def on_readable @@ -25,10 +24,10 @@ module Rainbows def worker_loop(worker) init_worker_process(worker) mod = self.class.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.setup(EvCore) - rloop = ::Rev::Loop.default Heartbeat.new(1, true).attach(rloop) LISTENERS.map! { |s| Server.new(s).attach(rloop) } rloop.run diff --git a/lib/rainbows/rev/deferred_response.rb b/lib/rainbows/rev/deferred_response.rb index 9c3c27f..b69c7be 100644 --- a/lib/rainbows/rev/deferred_response.rb +++ b/lib/rainbows/rev/deferred_response.rb @@ -10,10 +10,6 @@ module Rainbows G = Rainbows::G HH = Rack::Utils::HeaderHash - # we only want to attach to the Rev::Loop belonging to the - # main thread in Ruby 1.9 - LOOP = ::Rev::Loop.default - def self.defer!(client, response, out) body = response.last headers = HH.new(response[1]) @@ -36,7 +32,9 @@ module Rainbows out[0] = CONN_CLOSE end - io = new(io, client, do_chunk, body).attach(LOOP) + # we only want to attach to the Rev::Loop belonging to the + # main thread in Ruby 1.9 + io = new(io, client, do_chunk, body).attach(Server::LOOP) elsif st.file? headers.delete('Transfer-Encoding') headers['Content-Length'] ||= st.size.to_s -- cgit v1.2.3-24-ge0c7