code: def ParseRow(self, parser_mediator, row_offset, row):
      
      timestamp = self._ParseTimestamp(parser_mediator, row)
      if timestamp is None:
        return
  
      try:
        action = int(row['action'], 10)
      except (ValueError, TypeError):
        action = None
  
      try:
        scan_type = int(row['scan_type'], 10)
      except (ValueError, TypeError):
        scan_type = None
  
      event_data = TrendMicroAVEventData()
      event_data.action = action
      event_data.filename = row['filename']
      event_data.offset = row_offset
      event_data.path = row['path']
      event_data.scan_type = scan_type
      event_data.threat = row['threat']
  
      event = time_events.DateTimeValuesEvent(
          timestamp, definitions.TIME_DESCRIPTION_WRITTEN)
      parser_mediator.ProduceEventWithEventData(event, event_data)
docs: Parses a line of the log file and produces events.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        row_offset (int): line number of the row.
        row (dict[str, str]): fields of a single row, as specified in COLUMNS.