diff options
Diffstat (limited to 'lib/rainbows/rev/thread_client.rb')
-rw-r--r-- | lib/rainbows/rev/thread_client.rb | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/lib/rainbows/rev/thread_client.rb b/lib/rainbows/rev/thread_client.rb deleted file mode 100644 index d6e6655..0000000 --- a/lib/rainbows/rev/thread_client.rb +++ /dev/null @@ -1,36 +0,0 @@ -# -*- encoding: binary -*- -# :enddoc: - -RUBY_VERSION =~ %r{\A1\.8} and - warn "Rev and Threads do not mix well under Ruby 1.8" - -class Rainbows::Rev::ThreadClient < Rainbows::Rev::Client - def app_call - KATO.delete(self) - disable if enabled? - @env[RACK_INPUT] = @input - app_dispatch # must be implemented by subclass - end - - # this is only called in the master thread - def response_write(response) - alive = @hp.next? && G.alive - rev_write_response(response, alive) - return quit unless alive && :close != @state - - @state = :headers - end - - # fails-safe application dispatch, we absolutely cannot - # afford to fail or raise an exception (killing the thread) - # here because that could cause a deadlock and we'd leak FDs - def app_response - begin - @env[REMOTE_ADDR] = @_io.kgio_addr - APP.call(@env.update(RACK_DEFAULTS)) - rescue => e - Rainbows::Error.app(e) # we guarantee this does not raise - [ 500, {}, [] ] - end - end -end |