public DirectoryMonitor(IConfiguration configuration, IChannel channel, IFileSystem fileSystem) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (channel == null) { throw new ArgumentNullException(nameof(channel)); } if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } _channel = channel; _fileSystem = fileSystem; _directoryPath = configuration["directory-path"]; _watcher = _fileSystem.FileSystemWatcher.FromPath(_directoryPath); _watcher.IncludeSubdirectories = true; _watcher.Created += GetEventAction(FileAction.Create); _watcher.Changed += GetEventAction(FileAction.Change); _watcher.Deleted += GetEventAction(FileAction.Delete); _watcher.Renamed += (sender, args) => { _channel.AddFile(new RenameFileModel { FileAction = FileAction.Rename, RelativePath = GetRelativePath(args.OldFullPath, _directoryPath), NewFileName = GetRelativePath(args.FullPath, _directoryPath) }); }; }
public Watcher( IChecker checker, IDirectories directoriesService, ISettings settings, FileSystemWatcherBase watcher) { this.checker = checker; this.directoriesService = directoriesService; this.settings = settings; this.watcher = watcher; }
private static void SetupFileWatcher(string configFileName) { ConfigFileSystemWatcher?.Dispose(); if (!FileSys.File.Exists(configFileName)) { return; } ConfigFileSystemWatcher = FileSys.CreateFileSystemWatcher(FileSys.Path.GetDirectoryName(configFileName)); ConfigFileSystemWatcher.Filter = FileSys.Path.GetFileName(configFileName); ConfigFileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite; ConfigFileSystemWatcher.Changed += (_, _) => ConfigFileSystemWatcherOnChanged(configFileName); ConfigFileSystemWatcher.EnableRaisingEvents = true; }
public void Start() { _log.WatcherStarting(); Enqueue(new DirectoryCreated(_entries, _directory, _fileSystem, _fileSystemFilter, _directory)); _fileWatcher = CreateFileSystemWatcher(NotifyFilters.FileName); _fileWatcher.Created += (sender, e) => Enqueue(new FileCreated(_entries, _directory, _fileSystem, _fileSystemFilter, e.FullPath)); _fileWatcher.Deleted += (sender, e) => Enqueue(new FileDeleted(_entries, _directory, e.FullPath)); _fileWatcher.Renamed += (sender, e) => Enqueue(new FileRenamed(_entries, _directory, _fileSystem, _fileSystemFilter, e.OldFullPath, e.FullPath)); _fileWatcher.Error += (sender, e) => FileSystemWatcherError("File Watcher", e); _directoryWatcher = CreateFileSystemWatcher(NotifyFilters.DirectoryName); _directoryWatcher.Created += (sender, e) => Enqueue(new DirectoryCreated(_entries, _directory, _fileSystem, _fileSystemFilter, e.FullPath)); _directoryWatcher.Deleted += (sender, e) => Enqueue(new DirectoryDeleted(_entries, _directory, e.FullPath)); _directoryWatcher.Renamed += (sender, e) => Enqueue(new DirectoryRenamed(_entries, _directory, _fileSystem, _fileSystemFilter, e.OldFullPath, e.FullPath)); _directoryWatcher.Error += (sender, e) => FileSystemWatcherError("Directory Watcher", e); _attributesWatcher = CreateFileSystemWatcher(NotifyFilters.Attributes); _attributesWatcher.Changed += (sender, e) => Enqueue(new AttributesChanged(_entries, e.Name, e.FullPath)); _attributesWatcher.Error += (sender, e) => FileSystemWatcherError("Attributes Watcher", e); _log.WatcherStarted(); }