code: def ProcessStorage(self):
      self._CheckStorageFile(self._storage_file_path)
      self._status_view.SetMode(self._status_view_mode)
      self._status_view.SetStorageFileInformation(self._storage_file_path)
      status_update_callback = (
          self._status_view.GetAnalysisStatusUpdateCallback())
      session = engine.BaseEngine.CreateSession(
          command_line_arguments=self._command_line_arguments,
          preferred_encoding=self.preferred_encoding)
      storage_reader = storage_factory.StorageFactory.CreateStorageReaderForFile(
          self._storage_file_path)
      if not storage_reader:
        logger.error('Format of storage file: {0:s} not supported'.format(
            self._storage_file_path))
        return
      self._number_of_analysis_reports = (
          storage_reader.GetNumberOfAnalysisReports())
      storage_reader.Close()
      configuration = configurations.ProcessingConfiguration()
      configuration.data_location = self._data_location
      configuration.profiling.directory = self._profiling_directory
      configuration.profiling.sample_rate = self._profiling_sample_rate
      configuration.profiling.profilers = self._profilers
      analysis_counter = None
      if self._analysis_plugins:
        storage_writer = (
            storage_factory.StorageFactory.CreateStorageWriterForFile(
                session, self._storage_file_path))
        analysis_engine = psort.PsortMultiProcessEngine(
            use_zeromq=self._use_zeromq)
        analysis_engine.AnalyzeEvents(
            self._knowledge_base, storage_writer, self._data_location,
            self._analysis_plugins, configuration,
            event_filter=self._event_filter,
            event_filter_expression=self._event_filter_expression,
            status_update_callback=status_update_callback,
            worker_memory_limit=self._worker_memory_limit)
        analysis_counter = collections.Counter()
        for item, value in iter(session.analysis_reports_counter.items()):
          analysis_counter[item] = value
      if self._output_format != 'null':
        storage_reader = (
            storage_factory.StorageFactory.CreateStorageReaderForFile(
                self._storage_file_path))
        analysis_engine = psort.PsortMultiProcessEngine(
            use_zeromq=self._use_zeromq)
        analysis_engine.ExportEvents(
            self._knowledge_base, storage_reader, self._output_module,
            configuration, deduplicate_events=self._deduplicate_events,
            event_filter=self._event_filter,
            status_update_callback=status_update_callback,
            time_slice=self._time_slice, use_time_slicer=self._use_time_slicer)
      if self._quiet_mode:
        return
      self._output_writer.Write('Processing completed.\n')
      if analysis_counter:
        table_view = views.ViewsFactory.GetTableView(
            self._views_format_type, title='Analysis reports generated')
        for element, count in analysis_counter.most_common():
          if element != 'total':
            table_view.AddRow([element, count])
        table_view.AddRow(['Total', analysis_counter['total']])
        table_view.Write(self._output_writer)
      storage_reader = storage_factory.StorageFactory.CreateStorageReaderForFile(
          self._storage_file_path)
      self._PrintAnalysisReportsDetails(storage_reader)