コード例 #1
0
        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)
                });
            };
        }
コード例 #2
0
 public Watcher(
     IChecker checker, IDirectories directoriesService, ISettings settings, FileSystemWatcherBase watcher)
 {
     this.checker            = checker;
     this.directoriesService = directoriesService;
     this.settings           = settings;
     this.watcher            = watcher;
 }
コード例 #3
0
ファイル: Nlog.cs プロジェクト: CreativeCodersTeam/Core
        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;
        }
コード例 #4
0
        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();
        }