def read_into_buffer(buffer, size)
      i = 0
      while i < size
        # If the read buffer is exhausted, try to read up to DEFAULT_BUFFER more bytes into it.
        if @index >= @rbuf.size
          @rbuf = @transport.read(DEFAULT_BUFFER)
          @index = 0
        end

        # The read buffer has some data now, so copy bytes over to the output buffer.
        byte = Bytes.get_string_byte(@rbuf, @index)
        Bytes.set_string_byte(buffer, i, byte)
        @index += 1
        i += 1
      end
      i
    end
def read_into_buffer(buffer, size)
      i = 0
      while i < size
        # If the read buffer is exhausted, try to read up to DEFAULT_BUFFER more bytes into it.
        if @index >= @rbuf.size
          @rbuf = @transport.read(DEFAULT_BUFFER)
          @index = 0
        end

        # The read buffer has some data now, so copy bytes over to the output buffer.
        byte = Bytes.get_string_byte(@rbuf, @index)
        Bytes.set_string_byte(buffer, i, byte)
        @index += 1
        i += 1
      end
      i
    end
Reads a number of bytes from the transport into the buffer passed.

 buffer - The String (byte buffer) to write data to; this is assumed to have a BINARY encoding.
 size   - The number of bytes to read from the transport and write to the buffer.

 Returns the number of bytes read.