Beispiel #1
0
        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;
 }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        // 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;
        }
Beispiel #6
0
        // 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;
 }