Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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.");
        }