Exemple #1
0
 public DeadPathDetector(
     PathWatchersCollection watchers,
     PathRemover pathRemover)
 {
     _watchers    = watchers;
     _pathRemover = pathRemover;
 }
Exemple #2
0
 public RenameEventHandler(
     IEventReactor eventReactor,
     IFilePathActualizer filePathActualizer,
     PathWatchersCollection watchers)
 {
     _eventReactor       = eventReactor;
     _filePathActualizer = filePathActualizer;
     _watchers           = watchers;
 }
Exemple #3
0
 public DeleteEventHandler(
     IEventReactor eventReactor,
     IIndexEjector indexEjector,
     PathWatchersCollection watchers)
 {
     _eventReactor = eventReactor;
     _watchers     = watchers;
     _indexEjector = indexEjector;
 }
Exemple #4
0
 public PathRemover(
     IEventReactor eventReactor,
     PathWatchersCollection watchers,
     IIndexEjector indexEjector)
 {
     _eventReactor = eventReactor;
     _watchers     = watchers;
     _indexEjector = indexEjector;
 }
 public FileSupervisor(
     IEventReactor eventReactor,
     FileSystemEventsProcessor eventsProcessor,
     PathWatchersCollection watchers,
     PathPoller pathPoller)
 {
     _eventReactor    = eventReactor;
     _eventsProcessor = eventsProcessor;
     _watchers        = watchers;
     _pathPoller      = pathPoller;
 }
Exemple #6
0
 public PathPoller(
     DeadPathDetector deadPathCleaner,
     PathWatchersCollection watchers)
 {
     _deadPathCleaner = deadPathCleaner;
     _watchers        = watchers;
     _timer           = new Timer
     {
         Enabled  = false,
         Interval = PoolingIntervalMs
     };
     _timer.Elapsed += Check;
 }
Exemple #7
0
        /// <summary>
        /// Creates new search engine instance
        /// </summary>
        /// <param name="settings">Engine settings object</param>
        /// <returns>New search engine instance</returns>
        public static ISearchEngine New(SearchEngineSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var eventReactor          = new EventReactor();
            var fileParserProvider    = new FileParserProvider(settings);
            var filesVersionsRegistry = new FilesVersionsRegistry();
            var index              = new Index.Index();
            var indexer            = new FileIndexer(eventReactor, fileParserProvider, index, filesVersionsRegistry, settings);
            var indexEjector       = new IndexEjector(eventReactor, filesVersionsRegistry);
            var indexUpdater       = new IndexUpdater(eventReactor, indexer, filesVersionsRegistry);
            var watchersCollection = new PathWatchersCollection();
            var fileSupervisor     = new FileSupervisor(
                eventReactor,
                new FileSystemEventsProcessor(
                    new FileSystemEventHandler(
                        new CreateEventHandler(indexer),
                        new ChangeEventHandler(indexUpdater),
                        new DeleteEventHandler(eventReactor, indexEjector, watchersCollection),
                        new RenameEventHandler(
                            eventReactor,
                            new FilePathActualizer(filesVersionsRegistry),
                            watchersCollection
                            )
                        )
                    ),
                watchersCollection,
                new PathPoller(
                    new DeadPathDetector(
                        watchersCollection,
                        new PathRemover(eventReactor, watchersCollection, indexEjector)
                        ),
                    watchersCollection
                    )
                );
            var searcher     = new Searcher(index);
            var indexCleaner = new IndexCleaner(eventReactor, index, filesVersionsRegistry, settings);
            var scheduler    = new Scheduler(indexCleaner, settings);

            return(new SearchEngine(eventReactor, indexer, indexEjector, fileSupervisor, searcher, scheduler));
        }