mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-08-13 00:02:57 -04:00
making WRITE/READ more accurate by emitting them at the socket (UDP/TCP) level
This commit is contained in:
parent
24088decf3
commit
777ab21050
@ -291,8 +291,6 @@ module HTTPX
|
||||
break
|
||||
end
|
||||
|
||||
log { "READ: #{siz} bytes..." }
|
||||
|
||||
parser << @read_buffer.to_s
|
||||
|
||||
break if @state == :closing || @state == :closed
|
||||
@ -315,7 +313,6 @@ module HTTPX
|
||||
on_error(ex)
|
||||
return
|
||||
end
|
||||
log { "WRITE: #{siz} bytes..." }
|
||||
|
||||
if siz.zero?
|
||||
write_drained = !@write_buffer.empty?
|
||||
|
@ -82,6 +82,7 @@ module HTTPX
|
||||
# :nocov:
|
||||
def read(size, buffer)
|
||||
@io.read_nonblock(size, buffer)
|
||||
log { "READ: #{buffer.bytesize} bytes..." }
|
||||
buffer.bytesize
|
||||
rescue ::IO::WaitReadable
|
||||
buffer.clear
|
||||
@ -92,6 +93,7 @@ module HTTPX
|
||||
|
||||
def write(buffer)
|
||||
siz = @io.write_nonblock(buffer)
|
||||
log { "WRITE: #{siz} bytes..." }
|
||||
buffer.shift!(siz)
|
||||
siz
|
||||
rescue ::IO::WaitWritable
|
||||
@ -109,6 +111,7 @@ module HTTPX
|
||||
end
|
||||
return if ret.nil?
|
||||
|
||||
log { "READ: #{buffer.bytesize} bytes..." }
|
||||
buffer.bytesize
|
||||
end
|
||||
|
||||
@ -117,6 +120,8 @@ module HTTPX
|
||||
return 0 if siz == :wait_writable
|
||||
return if siz.nil?
|
||||
|
||||
log { "WRITE: #{siz} bytes..." }
|
||||
|
||||
buffer.shift!(siz)
|
||||
siz
|
||||
end
|
||||
|
@ -7,11 +7,12 @@ module HTTPX
|
||||
class UDP
|
||||
include Loggable
|
||||
|
||||
def initialize(uri, _, _)
|
||||
def initialize(uri, _, options)
|
||||
ip = IPAddr.new(uri.host)
|
||||
@host = ip.to_s
|
||||
@port = uri.port
|
||||
@io = UDPSocket.new(ip.family)
|
||||
@options = options
|
||||
end
|
||||
|
||||
def to_io
|
||||
@ -40,6 +41,7 @@ module HTTPX
|
||||
|
||||
def write(buffer)
|
||||
siz = @io.send(buffer, 0, @host, @port)
|
||||
log { "WRITE: #{siz} bytes..." }
|
||||
buffer.shift!(siz)
|
||||
siz
|
||||
end
|
||||
@ -49,6 +51,7 @@ module HTTPX
|
||||
def read(size, buffer)
|
||||
data, _ = @io.recvfrom_nonblock(size)
|
||||
buffer.replace(data)
|
||||
log { "READ: #{buffer.bytesize} bytes..." }
|
||||
buffer.bytesize
|
||||
rescue ::IO::WaitReadable
|
||||
0
|
||||
|
@ -169,7 +169,6 @@ module HTTPX
|
||||
siz = @io.read(wsize, @read_buffer)
|
||||
return unless siz && siz.positive?
|
||||
|
||||
log { "resolver: READ: #{siz} bytes..." }
|
||||
parse(@read_buffer)
|
||||
return if @state == :closed
|
||||
end
|
||||
@ -182,7 +181,6 @@ module HTTPX
|
||||
siz = @io.write(@write_buffer)
|
||||
return unless siz && siz.positive?
|
||||
|
||||
log { "resolver: WRITE: #{siz} bytes..." }
|
||||
return if @state == :closed
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user