Bug #6436 » protocol.patch
/after/lib/ruby/1.9.1/net/protocol.rb 2012-05-15 13:19:09.000000000 -0700 | ||
---|---|---|
def read(len, dest = '', ignore_eof = false)
|
||
LOG "reading #{len} bytes..."
|
||
read_bytes = 0
|
||
begin
|
||
while read_bytes + @rbuf.size < len
|
||
dest << (s = rbuf_consume(@rbuf.size))
|
||
read_bytes += s.size
|
||
while read_bytes + @rbuf.bytesize < len
|
||
dest << (s = rbuf_consume(@rbuf.bytesize))
|
||
read_bytes += s.bytesize
|
||
rbuf_fill
|
||
end
|
||
dest << (s = rbuf_consume(len - read_bytes))
|
||
read_bytes += s.size
|
||
read_bytes += s.bytesize
|
||
rescue EOFError
|
||
raise unless ignore_eof
|
||
end
|
||
LOG "read #{read_bytes} bytes"
|
||
dest
|
||
... | ... | |
def read_all(dest = '')
|
||
LOG 'reading all...'
|
||
read_bytes = 0
|
||
begin
|
||
while true
|
||
dest << (s = rbuf_consume(@rbuf.size))
|
||
read_bytes += s.size
|
||
dest << (s = rbuf_consume(@rbuf.bytesize))
|
||
read_bytes += s.bytesize
|
||
rbuf_fill
|
||
end
|
||
rescue EOFError
|
||
;
|
||
end
|
||
... | ... | |
def readuntil(terminator, ignore_eof = false)
|
||
begin
|
||
until idx = @rbuf.index(terminator)
|
||
rbuf_fill
|
||
end
|
||
return rbuf_consume(idx + terminator.size)
|
||
return rbuf_consume(idx + terminator.bytesize)
|
||
rescue EOFError
|
||
raise unless ignore_eof
|
||
return rbuf_consume(@rbuf.size)
|
||
return rbuf_consume(@rbuf.bytesize)
|
||
end
|
||
end
|
||
def readline
|
||
readuntil("\n").chop
|
||
... | ... | |
def each_message_chunk
|
||
LOG 'reading message...'
|
||
LOG_off()
|
||
read_bytes = 0
|
||
while (line = readuntil("\r\n")) != ".\r\n"
|
||
read_bytes += line.size
|
||
read_bytes += line.bytesize
|
||
yield line.sub(/\A\./, '')
|
||
end
|
||
LOG_on()
|
||
LOG "read message (#{read_bytes} bytes)"
|
||
end
|
||
... | ... | |
end
|
||
def buffer_filling(buf, src)
|
||
case src
|
||
when String # for speeding up.
|
||
0.step(src.size - 1, 1024) do |i|
|
||
0.step(src.bytesize - 1, 1024) do |i|
|
||
buf << src[i, 1024]
|
||
yield
|
||
end
|
||
when File # for speeding up.
|
||
while s = src.read(1024)
|
||
... | ... | |
yield
|
||
end
|
||
else # generic reader
|
||
src.each do |str|
|
||
buf << str
|
||
yield if buf.size > 1024
|
||
yield if buf.bytesize > 1024
|
||
end
|
||
yield unless buf.empty?
|
||
end
|
||
end
|
||
end
|
- « Previous
- 1
- 2
- Next »