protected override void OnStart(string[] args) { DirectoryWatcherConfiguration configuration = null; string configurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json"); if (File.Exists(configurationPath)) { using (StreamReader r = Helpers.GetStreamReader(configurationPath)) { string json = r.ReadToEnd(); configuration = JsonConvert.DeserializeObject <DirectoryWatcherConfiguration>(json); } if (configuration != null) { _directoryWatcher = new DirectoryWatcher(configuration); _directoryWatcher.Start(); } else { EventLogManager.WriteError(new Exception("No configuration.")); } } else { EventLogManager.WriteError(new Exception("No config.json file found.")); } }
public DirectoryWatcher(DirectoryWatcherConfiguration configuration) { if (!String.IsNullOrWhiteSpace(configuration.WatcherDirectory) && Directory.Exists(configuration.WatcherDirectory)) { this._fileSystemWatcher = new FileSystemWatcher(configuration.WatcherDirectory) { NotifyFilter = NotifyFilters.DirectoryName, IncludeSubdirectories = false, InternalBufferSize = configuration.InternalBufferSize }; this.DoSaveBackups = configuration.DoSaveBackups; this.DoSaveErrors = configuration.DoSaveErrors; this._fileSystemWatcher.Created += DirectoryWatcher_OnCreated; #region Create subdirecories used for processing files this._errorsPath = System.IO.Path.Combine(configuration.WatcherDirectory, "errors"); if (!Directory.Exists(this._errorsPath)) { Directory.CreateDirectory(this._errorsPath, Directory.GetAccessControl(configuration.WatcherDirectory)); EventLogManager.WriteInformation(String.Format("Errors directory created at {0}", this._errorsPath)); } this._backupsPath = System.IO.Path.Combine(configuration.WatcherDirectory, "backups"); if (!Directory.Exists(this._backupsPath)) { Directory.CreateDirectory(this._backupsPath, Directory.GetAccessControl(configuration.WatcherDirectory)); EventLogManager.WriteInformation(String.Format("Backups directory created at {0}", this._backupsPath)); } this._workPath = System.IO.Path.Combine(configuration.WatcherDirectory, "work"); if (!Directory.Exists(this._workPath)) { Directory.CreateDirectory(this._workPath, Directory.GetAccessControl(configuration.WatcherDirectory)); EventLogManager.WriteInformation(String.Format("Work directory created at {0}", this._workPath)); } #endregion } else { EventLogManager.WriteError(new Exception(String.Format("Path {0} does not exist.", configuration.WatcherDirectory))); } }