void ev_SubdirectoryChanged(FsEventsWatcher sender, string dirpath) { if (_watchcontents) { FireSubdirectoryChanged(dirpath); } }
void StopWatcher() { Trace("Stopping FileSystemWatcher"); if (_fswatcher != null) { _fswatcher.Dispose(); } _fswatcher = null; }
void ev_RootChanged(FsEventsWatcher sender, string rootpath, bool exists) { if (!Exists && Directory.Exists(_fullpath)) { Exists = true; FireAvailabilityChanged(); } else if (Exists && !Directory.Exists(_fullpath)) { Exists = false; FireAvailabilityChanged(); } }
void StartWatcher() { Trace("Starting FileSystemWatcher"); if (_fswatcher != null) { _fswatcher.Dispose(); } #if SYSTEM_MACOSX _fswatcher = new FsEventsWatcher(_fullpath); _fswatcher.RootChanged += ev_RootChanged; _fswatcher.SubdirectoryChanged += ev_SubdirectoryChanged; #else _fswatcher = new FileSystemWatcher(); _fswatcher.Path = _fullpath; _fswatcher.IncludeSubdirectories = true; _fswatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Attributes | NotifyFilters.Size | NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.Security; _fswatcher.Changed += new FileSystemEventHandler(ev_FileChanged); _fswatcher.Created += new FileSystemEventHandler(ev_FileChanged); _fswatcher.Deleted += new FileSystemEventHandler(ev_FileChanged); _fswatcher.Renamed += new RenamedEventHandler(ev_FileRenamed); try { // this can throw if, e.g. dir went away between when we // checked for existence and now. don't bring down process. _fswatcher.EnableRaisingEvents = true; } catch { Trace("Failed to start FileSystemWatcher: directory is inaccessible"); Exists = false; } #endif }