# File lib/net/sftp/operations/read.rb, line 51
    def do_data( data )
      @log.debug "[#{@id}] got #{data.length} bytes" if @log.debug?

      @data << data
      @progress_callback[@data] if @progress_callback

      if @length < 0 || @data.length < @length
        if @length < 0
          length = @chunk_size
        else
          length = @length - @data.length
          length = length > @chunk_size ? @chunk_size : length
        end

        @log.debug "[#{@id}] requesting #{length} more bytes" if @log.debug?
        @driver.read @id, @handle, @offset + @data.length, length
        @session.register( @id, self )
      else
        @callback[ OK, @data ]
      end
    end