public IndexRevisions(ApplicationDbContext db, IFileIndexer fileIndexer) { _db = db ?? throw new ArgumentNullException(nameof(db)); _fileIndexer = fileIndexer ?? throw new ArgumentNullException(nameof(fileIndexer)); Run(); }
public SearchEngine( EventReactor eventReactor, IFileIndexer indexer, IIndexEjector indexEjector, IFileSupervisor supervisor, ISearcher searcher, IScheduler scheduler) { _indexer = indexer; _indexEjector = indexEjector; _supervisor = supervisor; _searcher = searcher; _scheduler = scheduler; eventReactor.Register(EngineEvent.PathWatchingStarted, a => PathWatchingStarted?.Invoke(a)); eventReactor.Register(EngineEvent.PathWatchingEnded, a => PathWatchingEnded?.Invoke(a)); eventReactor.Register(EngineEvent.FileIndexingStarted, a => FileIndexingStarted?.Invoke(a)); eventReactor.Register(EngineEvent.FileIndexingEnded, a => FileIndexingEnded?.Invoke(a)); eventReactor.Register(EngineEvent.FileRemovingStarted, a => FileRemovingStarted?.Invoke(a)); eventReactor.Register(EngineEvent.FileRemovingEnded, a => FileRemovingEnded?.Invoke(a)); eventReactor.Register(EngineEvent.FileUpdateInitiated, a => FileUpdateInitiated?.Invoke(a)); eventReactor.Register(EngineEvent.FileUpdateFailed, a => FileUpdateFailed?.Invoke(a)); eventReactor.Register(EngineEvent.PathChanged, a => FilePathChanged?.Invoke(a)); eventReactor.Register(EngineEvent.IndexCleanUpFailed, a => IndexCleanUpFailed?.Invoke(a)); _scheduler.Start(); }
public IndexUpdater( IEventReactor eventReactor, IFileIndexer fileIndexer, FilesVersionsRegistry filesVersionsRegistry) { _eventReactor = eventReactor; _fileIndexer = fileIndexer; _filesVersionsRegistry = filesVersionsRegistry; }
public static void Main(String[] args) { Console.OutputEncoding = Encoding.Unicode; // At first idea was to pass folder like "./Indexers" and "./Parsers" // Load all assemblies from that folders and find implementation of interfaces // After that we could load another implementations in runtime // And choose required implementation per request // But this produced several problems that are not required to solve // But would take more to implement IQueryParser parser = null; IFileIndexer indexer = null; var port = 1234; var options = new Options(); if (Parser.Default.ParseArguments(args, options)) { // -l "../../../AdvancedQueryParser/bin/{Debug/Release}/AdvancedQueryParser.dll" -p "TextIndexing.AdvancedQueryParser.IntersectionParser" parser = LoadImplementation <IQueryParser>(options.ParserLibrary, options.ParserType); indexer = LoadImplementation <IFileIndexer>(options.IndexerLibrary, options.IndexerType); port = options.Port; } if (parser == null) { parser = new SimpleParser(); } if (indexer == null) { indexer = new SimpleIndexer(); } Console.WriteLine("IFileIndexer implementation loaded: {0}", indexer.GetType()); Console.WriteLine("IQueryParser implementation loaded: {0}", parser.GetType()); Index.Instance.Init(parser, indexer); using (var server = new RESTServer(port: port.ToString())) { server.Start(); if (server.IsListening) { Console.WriteLine("Service started on port: {0}", server.Port); } else { Console.WriteLine("Failed to start service"); } Console.ReadKey(true); } }
// Not best solution but done for simplicity // Read first idea in Service project that would allow to avoid this hack public void Init(IQueryParser parser, IFileIndexer indexer) { if (parser == null) throw new ArgumentNullException("parser"); if (indexer == null) throw new ArgumentNullException("indexer"); if (_parser != null || _indexer != null) throw new InvalidOperationException("Cannot initialize index more than one time."); _parser = parser; _indexer = indexer; }
// Not best solution but done for simplicity // Read first idea in Service project that would allow to avoid this hack public void Init(IQueryParser parser, IFileIndexer indexer) { if (parser == null) { throw new ArgumentNullException("parser"); } if (indexer == null) { throw new ArgumentNullException("indexer"); } if (_parser != null || _indexer != null) { throw new InvalidOperationException("Cannot initialize index more than one time."); } _parser = parser; _indexer = indexer; }
public CreateEventHandler(IFileIndexer indexer) { _indexer = indexer; }