Пример #1
0
 public IndexEjector(
     IEventReactor eventReactor,
     FilesVersionsRegistry filesVersionsRegistry)
 {
     _eventReactor          = eventReactor;
     _filesVersionsRegistry = filesVersionsRegistry;
 }
 public IndexUpdater(
     IEventReactor eventReactor,
     IFileIndexer fileIndexer,
     FilesVersionsRegistry filesVersionsRegistry)
 {
     _eventReactor          = eventReactor;
     _fileIndexer           = fileIndexer;
     _filesVersionsRegistry = filesVersionsRegistry;
 }
 public IndexCleaner(
     IEventReactor eventReactor,
     IIndex index,
     FilesVersionsRegistry filesVersionsRegistry,
     SearchEngineSettings settings)
 {
     _eventReactor          = eventReactor;
     _index                 = index;
     _filesVersionsRegistry = filesVersionsRegistry;
     _settings              = settings;
 }
Пример #4
0
 public FileIndexer(
     IEventReactor eventReactor,
     FileParserProvider parserProvider,
     IIndex index,
     FilesVersionsRegistry filesVersionsRegistry,
     SearchEngineSettings settings)
 {
     _eventReactor          = eventReactor;
     _parserProvider        = parserProvider;
     _index                 = index;
     _filesVersionsRegistry = filesVersionsRegistry;
     _settings              = settings;
 }
Пример #5
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));
        }
Пример #6
0
 public FilePathActualizer(FilesVersionsRegistry registry)
 {
     _registry = registry;
 }