aboutsummaryrefslogtreecommitdiffstats
path: root/lib/plum/rack/session.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plum/rack/session.rb')
-rw-r--r--lib/plum/rack/session.rb28
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)