class ClamAV::Commands::InstreamCommand

Public Class Methods

new(io, max_chunk_size = 1024) click to toggle source
# File lib/clamav/commands/instream_command.rb, line 23
def initialize(io, max_chunk_size = 1024)
  @io = begin io rescue raise ArgumentError, 'io is required', caller; end
  @max_chunk_size = max_chunk_size
end

Public Instance Methods

call(conn) click to toggle source
# File lib/clamav/commands/instream_command.rb, line 28
def call(conn)
  conn.write_request("INSTREAM")

  while(packet = @io.read(@max_chunk_size))
    packet_size = [packet.size].pack("N")
    conn.raw_write("#{packet_size}#{packet}")
  end
  conn.raw_write("\x00\x00\x00\x00")
  get_status_from_response(conn.read_response)
end