/// <summary> /// Process the file system message described by msg /// </summary> /// <param name="msg"> The message. This cannot be null.</param> /// <returns> True if it succeeds, false if it fails</returns> bool ProcessFileSystemMessage([NotNull] FileSystemChangeMessage msg) { WriteLineInColor("Received FileSystemChange Message", ConsoleColor.Yellow); RILogManager.Default?.SendInformation("Received FileSysteChange Message"); Console.WriteLine("*****************************"); Console.WriteLine("Changed Date = {0}", msg.ChangeDate); Console.WriteLine("ChangeType = {0}", msg.ChangeType); Console.WriteLine("FullPath = {0}", msg.FullPath); Console.WriteLine("Old Path = {0}", msg.OldPath); Console.WriteLine("Name = {0}", msg.Name); Console.WriteLine("Old Name = {0}", msg.OldName); Console.WriteLine("FileSystemEventType {0}", msg.EventType); Console.WriteLine("*****************************"); msg.ID = new Random().Next(4000001, 5000000); using (var _db = new LiteDatabase(connectionString)) { Thread.Sleep(5); _db.Shrink(); var collection = _db.GetCollection <FileSystemChangeMessage>(); collection.EnsureIndex(x => x.ID); collection.Insert(msg); } return(true); }
private static void FileSystemRenamedDirectory(TopshelfFileSystemEventArgs topshelfFileSystemEventArgs) { FileSystemChangeMessage m = new FileSystemChangeMessage { ChangeDate = SystemClock.Instance.GetCurrentInstant().ToDateTimeUtc().ToLocalTime(), ChangeType = (int)topshelfFileSystemEventArgs.ChangeType, EventType = (int)topshelfFileSystemEventArgs.FileSystemEventType, FullPath = topshelfFileSystemEventArgs.FullPath, OldPath = topshelfFileSystemEventArgs.OldFullPath, Name = topshelfFileSystemEventArgs.Name, OldName = topshelfFileSystemEventArgs.OldName }; _bus.Publish(m, "FileSystemChanges"); Console.WriteLine("*************************"); Console.WriteLine("ChangeType = {0}", topshelfFileSystemEventArgs.ChangeType); Console.WriteLine("FullPath = {0}", topshelfFileSystemEventArgs.FullPath); Console.WriteLine("Name = {0}", topshelfFileSystemEventArgs.Name); Console.WriteLine("FIleSystemEventType {0}", topshelfFileSystemEventArgs.FileSystemEventType); Console.WriteLine("*************************"); }
/// <summary> Executes the recovering watcher operation. </summary> void RunRecoveringWatcher() { Console.WriteLine("Will auto-detect unavailability of watched directory"); Console.WriteLine(" - Windows timeout accessing network shares: ~110 sec on start, ~45 sec while watching."); using (var watcher = new RecoveringFileSystemWatcher(TestPath)) { watcher.All += (_, e) => { Console.WriteLine($"{e.ChangeType} {e.Name}", ConsoleColor.Yellow); }; watcher.Error += (_, e) => { Console.WriteLine(e.Error.Message, ConsoleColor.Red); }; watcher.Existed += (_, e) => { Console.WriteLine($"Existed {e.Name}", ConsoleColor.Yellow); }; watcher.Created += (_, e) => { Console.WriteLine($"Created {e.Name}", ConsoleColor.Yellow); FileSystemChangeMessage m = new FileSystemChangeMessage { ChangeDate = SystemClock.Instance.GetCurrentInstant().ToDateTimeUtc().ToLocalTime(), ChangeType = (int)e.ChangeType, FullPath = e.FullPath, Name = e.Name }; _bus.Publish(m, "FileSystemChanges"); }; watcher.Deleted += (_, e) => { Console.WriteLine($"Deleted {e.Name}", ConsoleColor.Yellow); FileSystemChangeMessage m = new FileSystemChangeMessage { ChangeDate = SystemClock.Instance.GetCurrentInstant().ToDateTimeUtc().ToLocalTime(), ChangeType = (int)e.ChangeType, FullPath = e.FullPath, Name = e.Name }; _bus.Publish(m, "FileSystemChanges"); }; watcher.Renamed += (_, e) => { Console.WriteLine($"Renamed {e.OldName} to {e.Name}", ConsoleColor.Yellow); FileSystemChangeMessage m = new FileSystemChangeMessage { ChangeDate = SystemClock.Instance.GetCurrentInstant().ToDateTimeUtc().ToLocalTime(), ChangeType = (int)e.ChangeType, FullPath = e.FullPath, OldPath = e.OldFullPath, Name = e.Name, OldName = e.OldName }; _bus.Publish(m, "FileSystemChanges"); }; watcher.Changed += (_, e) => { Console.WriteLine($"Changed {e.Name}", ConsoleColor.Yellow); FileSystemChangeMessage m = new FileSystemChangeMessage { ChangeDate = SystemClock.Instance.GetCurrentInstant().ToDateTimeUtc().ToLocalTime(), ChangeType = (int)e.ChangeType, FullPath = e.FullPath, Name = e.Name }; _bus.Publish(m, "FileSystemChanges"); }; watcher.DirectoryMonitorInterval = TimeSpan.FromSeconds(10); watcher.OrderByOldestFirst = false; watcher.DirectoryRetryInterval = TimeSpan.FromSeconds(5); watcher.IncludeSubdirectories = false; //watcher.EventQueueCapacity = 1; watcher.EnableRaisingEvents = true; PromptUser("Processing..."); Console.WriteLine("Stopping..."); } PromptUser("Stopped."); }