diff options
Diffstat (limited to 'lib/rainbows/rev/thread.rb')
-rw-r--r-- | lib/rainbows/rev/thread.rb | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/lib/rainbows/rev/thread.rb b/lib/rainbows/rev/thread.rb deleted file mode 100644 index 276b315..0000000 --- a/lib/rainbows/rev/thread.rb +++ /dev/null @@ -1,45 +0,0 @@ -# -*- encoding: binary -*- -# :enddoc: -require 'thread' -require 'rainbows/rev/master' - -RUBY_VERSION =~ %r{\A1\.8} and - warn "Rev and Threads do not mix well under Ruby 1.8" - -module Rainbows - module Rev - - class ThreadClient < 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 - Error.app(e) # we guarantee this does not raise - [ 500, {}, [] ] - end - end - - end - end -end |