/// <summary> /// Raises the <see cref="FileChanged"/> event. /// </summary> /// <param name="sender">The caller</param> /// <param name="e">The event arguments</param> protected virtual void RespondToArchiveFileEvent(object sender, FileEventRaisedArgs e) { //SrcMLFileLogger.DefaultLogger.Info("AbstractFileMonitor.RespondToArchiveFileEvent() type = " + e.EventType + ", file = " + e.FilePath + ", oldfile = " + e.OldFilePath + ", HasSrcML = " + e.HasSrcML); FileInfo fi = new FileInfo(e.FilePath); OnFileChanged(e); }
protected override void OnFileChanged(FileEventRaisedArgs e) { if (e.EventType != FileEventType.FileDeleted) { e.HasSrcML = true; } base.OnFileChanged(e); }
/// <summary> /// event handler for <see cref="FileChanged"/> /// </summary> /// <param name="e">event arguments</param> protected virtual void OnFileChanged(FileEventRaisedArgs e) { EventHandler <FileEventRaisedArgs> handler = FileChanged; if (handler != null) { handler(this, e); } }
void _archive_SourceFileChanged(object sender, FileEventRaisedArgs e) { textBox1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { ////if (SourceEventType.Renamed == e.EventType) string srcMLAvailableText = (e.HasSrcML ? "(SrcML Available)" : String.Empty); if (FileEventType.FileRenamed== e.EventType) textBox1.AppendText(String.Format("{0} {1} to {2}\n", e.EventType, e.OldFilePath, e.FilePath, srcMLAvailableText)); else textBox1.AppendText(String.Format("{0} {1} {2}\n", e.EventType, e.FilePath, srcMLAvailableText)); })); }
/// <summary> /// This is the method that is called whenever the <see cref="AbstractArchive.FileChanged"/> event from the <see cref="MonitoredArchive"/> is fired. /// </summary> /// <param name="sender">The sender (should be <see cref="MonitoredArchive"/>)</param> /// <param name="e">The file that has been changed</param> protected void MonitoredArchive_FileChanged(object sender, FileEventRaisedArgs e) { Task task = null; switch (e.EventType) { case FileEventType.FileAdded: task = AddFileAsync(e.FilePath); break; case FileEventType.FileChanged: task = UpdateFileAsync(e.FilePath); break; case FileEventType.FileDeleted: task = DeleteFileAsync(e.FilePath); break; case FileEventType.FileRenamed: task = RenameFileAsync(e.OldFilePath, e.FilePath); break; } task.ContinueWith((t) => OnFileChanged(e)); }
/// <summary> /// Raise the FileChanged event. /// </summary> /// <param name="e"></param> protected virtual void OnFileChanged(FileEventRaisedArgs e) { EventHandler<FileEventRaisedArgs> handler = FileChanged; if(handler != null) { handler(this, e); } }
/// <summary> /// Respond to the FileChanged event from Solution Monitor. /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void RespondToFileChangedEvent(object sender, FileEventRaisedArgs eventArgs) { //SrcMLFileLogger.DefaultLogger.Info("SrcMLService: RespondToFileChangedEvent(), File = " + eventArgs.FilePath + ", EventType = " + eventArgs.EventType + ", HasSrcML = " + eventArgs.HasSrcML); // Show progress on the status bar. if(duringStartup) { amountCompleted++; ShowProgressOnStatusBar("SrcML Service is processing " + eventArgs.FilePath); } OnFileChanged(eventArgs); }
public void SourceFileChanged(object sender, FileEventRaisedArgs args, bool commitImmediately = false) { var cancelTokenSource = new CancellationTokenSource(); var cancelToken = cancelTokenSource.Token; Action action = () => { if (cancelToken.IsCancellationRequested) { cancelToken.ThrowIfCancellationRequested(); } var documentIndexer = ServiceLocator.Resolve<DocumentIndexer>(); if (CanBeIndexed(args.FilePath)) { string sourceFilePath = args.FilePath; string oldSourceFilePath = args.OldFilePath; ProcessFileEvent(sender as ISrcMLGlobalService, args, commitImmediately, documentIndexer); } else { documentIndexer.DeleteDocuments(args.FilePath, commitImmediately); } }; StartNew(action, cancelTokenSource); }
public void SourceFileChanged(object sender, FileEventRaisedArgs args) { var currentIndexer = ServiceLocator.ResolveOptional<DocumentIndexer>(); if (currentIndexer != null && !currentIndexer.IsDisposingOrDisposed()) SourceFileChanged(sender, args, false); }
private static void ProcessFileEvent(ISrcMLGlobalService srcMLService, FileEventRaisedArgs args, bool commitImmediately, DocumentIndexer documentIndexer) { string sourceFilePath = args.FilePath; var fileExtension = Path.GetExtension(sourceFilePath); var parsableToXml = (ExtensionPointsRepository.Instance.GetParserImplementation(fileExtension) != null); if (ConcurrentIndexingMonitor.TryToLock(sourceFilePath)) return; XElement xelement = null; if (parsableToXml) { xelement = GetXElement(args, srcMLService); if (xelement == null && args.EventType != FileEventType.FileDeleted) return; } var indexUpdateManager = ServiceLocator.Resolve<IndexUpdateManager>(); try { switch (args.EventType) { case FileEventType.FileAdded: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); //"just to be safe!" indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); if (parsableToXml) { SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement); } break; case FileEventType.FileChanged: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); if (parsableToXml) { SwumManager.Instance.UpdateSourceFile(sourceFilePath.ToLowerInvariant(), xelement); } break; case FileEventType.FileDeleted: documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant(), commitImmediately); if (parsableToXml) { SwumManager.Instance.RemoveSourceFile(sourceFilePath.ToLowerInvariant()); } break; case FileEventType.FileRenamed: // FileRenamed is repurposed. Now means you may already know about it, so // check and only parse if not existing if (!SwumManager.Instance.ContainsFile(sourceFilePath.ToLowerInvariant())) { documentIndexer.DeleteDocuments(sourceFilePath.ToLowerInvariant()); //"just to be safe!" indexUpdateManager.Update(sourceFilePath.ToLowerInvariant(), xelement); if (parsableToXml) { SwumManager.Instance.AddSourceFile(sourceFilePath.ToLowerInvariant(), xelement); } } break; default: // if we get here, a new event was probably added. for now, no-op break; } } catch (AlreadyClosedException ace) { //ignore, index closed } ConcurrentIndexingMonitor.ReleaseLock(sourceFilePath); }
private static XElement GetXElement(FileEventRaisedArgs args, ISrcMLGlobalService srcMLService) { try { return srcMLService.GetXElementForSourceFile(args.FilePath); } catch (ArgumentException e) { return XElement.Load(args.FilePath); } }
internal void OnFileChanged(object sender, FileEventRaisedArgs e) { FileEventType fileEvent = e.EventType; string oldFilePath = e.OldFilePath; string newFilePath = e.FilePath; //bool hasSrcML = e.HasSrcML; switch (fileEvent) { case FileEventType.FileAdded: return; case FileEventType.FileChanged: ChangeMethodsInChangedFile(oldFilePath); break; case FileEventType.FileDeleted: DeleteMethodsInDeletedFile(oldFilePath); break; case FileEventType.FileRenamed: ChangeMethodsInRenamedFile(oldFilePath, newFilePath); break; } }