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."));
            }
        }
예제 #2
0
        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)));
            }
        }