Пример #1
0
        /// <summary>
        /// Starts the fault location engine.
        /// </summary>
        public void Start()
        {
            // Get system settings from the database
            ReloadSystemSettings();

            // Make sure watch directories exist
            foreach (string path in m_systemSettings.WatchDirectoryList)
            {
                TryCreateDirectory(path);
            }

            // Create the lookup table used to track which files are being processed
            if ((object)m_activeFiles == null)
            {
                m_activeFiles = new ConcurrentDictionary <string, string>();
            }

            // Setup new file processor to monitor the watch directories
            if ((object)m_fileProcessor == null)
            {
                m_fileProcessor = new FileProcessor(m_systemSettings.FileProcessorID);
                m_fileProcessor.FolderExclusion     = m_systemSettings.FolderExclusion;
                m_fileProcessor.InternalBufferSize  = m_systemSettings.FileWatcherBufferSize;
                m_fileProcessor.EnumerationStrategy = m_systemSettings.FileWatcherEnumerationStrategy;
                m_fileProcessor.MaxThreadCount      = m_systemSettings.FileWatcherInternalThreadCount;
                m_fileProcessor.MaxFragmentation    = m_systemSettings.FileWatcherMaxFragmentation;
                m_fileProcessor.FilterMethod        = PrevalidateFile;
                m_fileProcessor.Processing         += FileProcessor_Processing;
                m_fileProcessor.Error += FileProcessor_Error;

                UpdateFileProcessorFilter(m_systemSettings);
            }

            m_stopped = false;

            foreach (string path in m_systemSettings.WatchDirectoryList)
            {
                m_fileProcessor.AddTrackedDirectory(path);
            }
        }