class Net::BufferedIO

def rbuf_consume(len = nil)

def rbuf_consume(len = nil)
  if @rbuf_offset == 0 && (len.nil? || len == @rbuf.bytesize)
    s = @rbuf
    @rbuf = ''.b
    @rbuf_offset = 0
    @rbuf_empty = true
  elsif len.nil?
    s = @rbuf.byteslice(@rbuf_offset..-1)
    @rbuf = ''.b
    @rbuf_offset = 0
    @rbuf_empty = true
  else
    s = @rbuf.byteslice(@rbuf_offset, len)
    @rbuf_offset += len
    @rbuf_empty = @rbuf_offset == @rbuf.bytesize
    rbuf_flush
  end
  @debug_output << %Q[-> #{s.dump}\n] if @debug_output
  s
end