Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }