diff options
Diffstat (limited to 'lib/plum/rack/session.rb')
-rw-r--r-- | lib/plum/rack/session.rb | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/plum/rack/session.rb b/lib/plum/rack/session.rb index c40f609..3a27248 100644 --- a/lib/plum/rack/session.rb +++ b/lib/plum/rack/session.rb @@ -8,15 +8,15 @@ module Plum class Session attr_reader :app, :plum - def initialize(app:, plum:, sock:, logger:, config:, remote_addr:, threadpool:) - @app = app - @plum = plum + def initialize(svc, sock, plum) + @svc = svc + @app = svc.app @sock = sock - @logger = logger - @config = config - @remote_addr = remote_addr - @threadpool = threadpool - @request_tokens = Set.new + @plum = plum + @logger = svc.logger + @config = svc.config + @remote_addr = sock.peeraddr.last + @threadpool = svc.threadpool setup_plum end @@ -25,12 +25,15 @@ module Plum @plum.close end + def to_io + @sock.to_io + end + def run while !@sock.closed? && !@sock.eof? @plum << @sock.readpartial(1024) end ensure - @request_tokens.each { |token| @threadpool.cancel(token) } if @threadpool stop end @@ -64,9 +67,8 @@ module Plum @logger.error(err) } if @threadpool - headers = req[:headers] - @request_tokens << @threadpool.acquire(headers, err) { - handle_request(stream, headers, req[:data]) + @threadpool.acquire(err) { + handle_request(stream, req[:headers], req[:data]) } else begin @@ -149,8 +151,6 @@ module Plum send_body(st, p_body) unless pno_body } end - - @request_tokens.delete(headers) # headers is tag end def new_env(h, data) |