added close callback (http1: when server tells to close; http2: when there are no more streams)

This commit is contained in:
HoneyryderChuck 2017-12-06 14:35:49 +00:00
parent 7cc2f66eed
commit c180f5ba71
2 changed files with 10 additions and 1 deletions

View File

@ -73,9 +73,11 @@ module HTTPX
response = @responses.shift
emit(:response, request, response)
reset
emit(:close) if response.headers["connection"] == "close"
send(@pending.shift) unless @pending.empty?
return unless response.headers["connection"] == "close"
log { "connection closed" }
emit(:close)
end
private

View File

@ -72,6 +72,7 @@ module HTTPX
@connection.on(:promise, &method(:on_promise))
@connection.on(:altsvc, &method(:on_altsvc))
@connection.on(:settings_ack, &method(:on_settings))
@connection.on(:goaway, &method(:on_close))
end
def join_headers(stream, request)
@ -104,6 +105,12 @@ module HTTPX
@max_concurrent_requests = [@max_concurrent_requests, @connection.remote_settings[:settings_max_concurrent_streams]].min
end
def on_close
return unless @server.state == :closed && @server.active_stream_count.zero?
log { "connection closed" }
emit(:close)
end
def on_frame_sent(frame)
log { "frame was sent!" }
log do