public void Start(FTService ftService) { Storage = new Storage(ftService); QueueIndexing = new QueueIndexing(); Scheduler = new Scheduler(GetTimeTable(), ScanAndIndex); Scheduler.Start(); }
private void IndexDocuments() { try { IsIndexRunning = true; while (true) { var document = QueueIndexing.DequeDocumentWithContent(); if (document != null) { try { if (!OnBeforeDocumentIndexing(document)) { return; } Storage.IndexDocument(document, Name); } finally { OnAfterDocumentIndexing(document); } } else if (IsScanRunning) { Thread.Sleep(TimeSpan.FromSeconds(1)); //wait documents from scanning } else { break; } } } finally { Storage.SaveIndex(); IsIndexRunning = false; } return; }
private bool ScanFolder(Folder folder) { try { if (!OnBeforeFolderScanning(folder)) { return(false); } var documents = GetDocuments(folder); QueueIndexing.EnqueDocuments(documents); IDictionary <string, string> oldVersions = null; if (documents.Any(x => x.HasVersion)) { oldVersions = Storage.ReadDocumentVersions(documents); } while (true) { var document = QueueIndexing.DequeDocument(); if (document != null) { if (!ScanDocument(oldVersions, document)) { return(false); } } else { break; } } } finally { OnAfterFolderScanning(folder); } return(true); }
private bool ScanDocument(IDictionary <string, string> oldVersions, Document document) { try { if (!OnBeforeDocumentScanning(document)) { return(false); } if (oldVersions == null || ShouldDocumentIndexed(document, oldVersions[document.Name], document.Version)) { try { if (!OnBeforeLoadDocumentContent(document)) { return(false); } if (!document.HasContent) { document.Content = LoadDocumentContent(document.Name, document.Version); } if (document.HasContent) { QueueIndexing.EnqueDocumentWithContent(document); } } finally { OnAfterLoadDocumentContent(document); } } } finally { OnAfterDocumentScanning(document); } return(true); }
private void ScanFolders() { try { IsScanRunning = true; if (!OnBeforeScanning()) { return; } var folders = GetFolders(); QueueIndexing.EnqueFolders(folders); while (true) { var folder = QueueIndexing.DequeFolder(); if (folder != null) { if (!ScanFolder(folder)) { return; } } else { break; } } } finally { OnAfterScanning(); IsScanRunning = false; } return; }