# File lib/net/sftp/protocol/driver.rb, line 163
    def do_data( channel, data )
      if @parsed_data
        @parsed_data[:content].append data
        return if @parsed_data[:length] > @parsed_data[:content].length

        type = @parsed_data[:type]
        content = @parsed_data[:content]
        @parsed_data = nil
      else
        reader = @buffers.reader( data )
        length = reader.read_long-1
        type = reader.read_byte
        content = reader.remainder_as_buffer

        if length > content.length
          @parsed_data = { :length => length,
                           :type => type,
                           :content => content }
          return
        end
      end

      if type == FXP_VERSION
        do_version content
      else
        assert_state :open
        @dispatcher.dispatch channel, type, content
      end
    end