public Indexer(IndexerArgs args) { WriteLogo(); WriteArgs(); _args = args; _indexDirectory = FSDirectory.GetDirectory(args.IndexPath); _indexQueueLimit = new Semaphore(args.MaxThreads * 4, args.MaxThreads * 4); ThreadPool.SetMaxThreads(args.MaxThreads, 1000); ThreadPool.SetMinThreads(args.MaxThreads / 2, Environment.ProcessorCount); _contentField = new Field(FieldName.Content, _contentTokenStream); _pathField = new Field(FieldName.Path, _pathTokenStream); _externalsField = new Field(FieldName.Externals, _externalsTokenStream); _messageField = new Field(FieldName.Message, _messageTokenStream); _svn = new SharpSvnApi(args.RepositoryLocalUri, args.Credentials.User, args.Credentials.Password); }
static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; Mutex mutex = null; try { IndexerArgs indexerArgs = new IndexerArgs(args); mutex = new Mutex(false, indexerArgs.IndexPath.ToLowerInvariant().Replace('\\', '_').Replace(':', '_')); try { mutex.WaitOne(); } catch (AbandonedMutexException) { Console.WriteLine("Warning: Mutex was abandoned from another Process"); } Indexer indexer = new Indexer(indexerArgs); indexer.Run(); } catch (IndexerArgsException x) { Console.WriteLine(x.Message); } finally { if (mutex != null) { mutex.ReleaseMutex(); mutex.Close(); } } AppDomain.CurrentDomain.UnhandledException -= OnUnhandledException; #if DEBUG Console.WriteLine("Press any key"); Console.ReadKey(); #endif }
/// <summary> /// This constructor is intended for tests in RAMDirectory only /// </summary> public Indexer(IndexerArgs args, Directory dir) : this(args) { _indexDirectory = dir; }