/// <summary> /// Processes changes to files since the last checkpoint. /// </summary> public ScanningJournalResult TryProcessChanges( TimeSpan?timeLimit = null, JournalProcessingStatistics.LogMessage logMessage = null, JournalProcessingStatistics.LogStats logStats = null) { if (m_scanningJournalResult != null) { return(m_scanningJournalResult); } // Initialize observers. foreach (var unsubscriber in m_unsubscribers) { unsubscriber.Observer.OnInit(); } m_scanningJournalResult = m_fileChangeTracker.TryProcessChanges(timeLimit); // Unsubscribe observers. foreach (var unsubscriber in m_unsubscribers) { unsubscriber.Dispose(); } var journalStatistics = new JournalProcessingStatistics(m_scanningJournalResult); journalStatistics.Log(m_loggingContext, logMessage, logStats); return(m_scanningJournalResult); }
/// <summary> /// Processes changes to files since the last checkpoint. /// </summary> public ScanningJournalResult TryProcessChanges( TimeSpan?timeLimit = null, JournalProcessingStatistics.LogMessage logMessage = null, JournalProcessingStatistics.LogStats logStats = null) { InitObservers(); // Input change list needs to be processed first because file change tracker // makes a completion for the observers currently. // TODO: Make a better design for many-to-many observable-observer relations. m_inputChangeList?.ProcessChanges(); var scanningJournalResult = m_fileChangeTracker.TryProcessChanges(timeLimit); UnsubscribeObservers(); var journalStatistics = new JournalProcessingStatistics(scanningJournalResult); journalStatistics.Log(m_loggingContext, logMessage, logStats); return(scanningJournalResult); }