mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-08-10 00:01:27 -04:00
channels: abstracted request buffering into #handle method
This commit is contained in:
parent
aa26a0f063
commit
031d25fd02
@ -41,14 +41,7 @@ module HTTPX
|
||||
return
|
||||
end
|
||||
@requests << request unless @requests.include?(request)
|
||||
catch(:buffer_full) do
|
||||
request.headers["connection"] ||= "keep-alive"
|
||||
request.transition(:headers)
|
||||
join_headers(request) if request.state == :headers
|
||||
request.transition(:body)
|
||||
join_body(request) if request.state == :body
|
||||
request.transition(:done)
|
||||
end
|
||||
handle(request)
|
||||
end
|
||||
|
||||
def reenqueue!
|
||||
@ -96,6 +89,17 @@ module HTTPX
|
||||
|
||||
private
|
||||
|
||||
def handle(request)
|
||||
catch(:buffer_full) do
|
||||
request.headers["connection"] ||= "keep-alive"
|
||||
request.transition(:headers)
|
||||
join_headers(request) if request.state == :headers
|
||||
request.transition(:body)
|
||||
join_body(request) if request.state == :body
|
||||
request.transition(:done)
|
||||
end
|
||||
end
|
||||
|
||||
def join_headers(request)
|
||||
request.headers["host"] ||= request.authority
|
||||
buffer = +""
|
||||
|
@ -57,13 +57,7 @@ module HTTPX
|
||||
end
|
||||
@streams[request] = stream
|
||||
end
|
||||
catch(:buffer_full) do
|
||||
request.transition(:headers)
|
||||
join_headers(stream, request) if request.state == :headers
|
||||
request.transition(:body)
|
||||
join_body(stream, request) if request.state == :body
|
||||
request.transition(:done)
|
||||
end
|
||||
handle(request, stream)
|
||||
end
|
||||
|
||||
def reenqueue!
|
||||
@ -77,6 +71,16 @@ module HTTPX
|
||||
|
||||
private
|
||||
|
||||
def handle(request, stream)
|
||||
catch(:buffer_full) do
|
||||
request.transition(:headers)
|
||||
join_headers(stream, request) if request.state == :headers
|
||||
request.transition(:body)
|
||||
join_body(stream, request) if request.state == :body
|
||||
request.transition(:done)
|
||||
end
|
||||
end
|
||||
|
||||
def init_connection
|
||||
@connection = HTTP2::Client.new
|
||||
@connection.on(:frame, &method(:on_frame))
|
||||
|
Loading…
x
Reference in New Issue
Block a user