/// <summary> /// Initializes a new instance of the Scheduler class. /// </summary> /// <param name="schedules">The schedules collection this instance should manage.</param> public Scheduler(ScheduleConfigurationElementCollection schedules) { this.inProgress = new Dictionary <string, DateTime>(); this.pending = new Dictionary <string, DateTime>(); foreach (ScheduleConfigurationElement schedule in schedules) { this.pending.Add(schedule.Name, GetNextExecuteDate(schedule)); } this.god = new Thread(new ThreadStart(this.OnGodStart)); this.god.Start(); }
/// <summary> /// Initializes a new instance of the Scheduler class. /// </summary> /// <param name="schedules">The schedules collection this instance should manage.</param> public Scheduler(ScheduleConfigurationElementCollection schedules) { this.inProgress = new Dictionary<string, DateTime>(); this.pending = new Dictionary<string, DateTime>(); foreach (ScheduleConfigurationElement schedule in schedules) { this.pending.Add(schedule.Name, GetNextExecuteDate(schedule)); } this.god = new Thread(new ThreadStart(this.OnGodStart)); this.god.Start(); }
/// <summary> /// Application entry point. /// </summary> /// <param name="args">The execution arguments.</param> /// <returns>The application's exit code.</returns> public static int Main(string[] args) { int all = 0, backup = 0, man = 0, schedules = 0, restore = 0; string target = null; var options = new OptionSet() { { "a|all", "execute all backup and restore targets in the configuration.", v => { ++all; } }, { "b|backup", "execute backup targets.", v => { ++backup; } }, { "r|restore", "execute restore targets.", v => { ++restore; } }, { "s|schedules", "execute schedules.", v => { ++schedules; } }, { "t|target=", "the name of the specific backup/restore/schedule to execute.", v => target = v }, { "m|man", "show this message", v => { ++man; } } }; try { options.Parse(args); } catch (OptionException ex) { ParseError(options, ex); return 1; } if (man > 0) { Help(options); return 0; } if (all > 0) { ExecuteBackup(String.Empty); ExecuteRestore(String.Empty); } else if (backup > 0) { if (!ExecuteBackup(target)) { return 1; } } else if (restore > 0) { if (!ExecuteRestore(target)) { return 1; } } else if (schedules > 0) { ScheduleConfigurationElementCollection schd = new ScheduleConfigurationElementCollection(); if (!String.IsNullOrEmpty(target)) { var schedule = SThreeQLConfiguration.Section.Schedules[target]; if (schedule != null) { schd.Add(schedule); } else { WriteError("There is no schedule defined for \"{0}\".", target); return 1; } } else { foreach (var schedule in SThreeQLConfiguration.Section.Schedules) { schd.Add(schedule); } } Scheduler scheduler = new Scheduler(schd); scheduler.BackupComplete += new EventHandler<DatabaseTargetEventArgs>(BackupComplete); scheduler.BackupCompressComplete += new EventHandler<DatabaseTargetEventArgs>(BackupCompressComplete); scheduler.BackupCompressStart += new EventHandler<DatabaseTargetEventArgs>(BackupCompressStart); scheduler.BackupStart += new EventHandler<DatabaseTargetEventArgs>(BackupStart); scheduler.BackupTransferComplete += new EventHandler<DatabaseTargetEventArgs>(BackupTransferComplete); scheduler.BackupTransferProgress += new EventHandler<DatabaseTargetEventArgs>(BackupTransferProgress); scheduler.BackupTransferStart += new EventHandler<DatabaseTargetEventArgs>(BackupTransferStart); scheduler.RestoreComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreComplete); scheduler.RestoreDecompressComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreDecompressComplete); scheduler.RestoreDecompressStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreDecompressStart); scheduler.RestoreStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreStart); scheduler.RestoreTransferComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferComplete); scheduler.RestoreTransferProgress += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferProgress); scheduler.RestoreTransferStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferStart); scheduler.ScheduleComplete += new EventHandler<ScheduleEventArgs>(ScheduleComplete); scheduler.ScheduleError += new EventHandler<ScheduleEventArgs>(ScheduleError); scheduler.ScheduleStart += new EventHandler<ScheduleEventArgs>(ScheduleStart); scheduler.Start(); } else { Help(options); return 0; } return 0; }
/// <summary> /// Application entry point. /// </summary> /// <param name="args">The execution arguments.</param> /// <returns>The application's exit code.</returns> public static int Main(string[] args) { int all = 0, backup = 0, man = 0, schedules = 0, restore = 0; string target = null; var options = new OptionSet() { { "a|all", "execute all backup and restore targets in the configuration.", v => { ++all; } }, { "b|backup", "execute backup targets.", v => { ++backup; } }, { "r|restore", "execute restore targets.", v => { ++restore; } }, { "s|schedules", "execute schedules.", v => { ++schedules; } }, { "t|target=", "the name of the specific backup/restore/schedule to execute.", v => target = v }, { "m|man", "show this message", v => { ++man; } } }; try { options.Parse(args); } catch (OptionException ex) { ParseError(options, ex); return(1); } if (man > 0) { Help(options); return(0); } if (all > 0) { ExecuteBackup(String.Empty); ExecuteRestore(String.Empty); } else if (backup > 0) { if (!ExecuteBackup(target)) { return(1); } } else if (restore > 0) { if (!ExecuteRestore(target)) { return(1); } } else if (schedules > 0) { ScheduleConfigurationElementCollection schd = new ScheduleConfigurationElementCollection(); if (!String.IsNullOrEmpty(target)) { var schedule = SThreeQLConfiguration.Section.Schedules[target]; if (schedule != null) { schd.Add(schedule); } else { WriteError("There is no schedule defined for \"{0}\".", target); return(1); } } else { foreach (var schedule in SThreeQLConfiguration.Section.Schedules) { schd.Add(schedule); } } Scheduler scheduler = new Scheduler(schd); scheduler.BackupComplete += new EventHandler <DatabaseTargetEventArgs>(BackupComplete); scheduler.BackupCompressComplete += new EventHandler <DatabaseTargetEventArgs>(BackupCompressComplete); scheduler.BackupCompressStart += new EventHandler <DatabaseTargetEventArgs>(BackupCompressStart); scheduler.BackupStart += new EventHandler <DatabaseTargetEventArgs>(BackupStart); scheduler.BackupTransferComplete += new EventHandler <DatabaseTargetEventArgs>(BackupTransferComplete); scheduler.BackupTransferProgress += new EventHandler <DatabaseTargetEventArgs>(BackupTransferProgress); scheduler.BackupTransferStart += new EventHandler <DatabaseTargetEventArgs>(BackupTransferStart); scheduler.RestoreComplete += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreComplete); scheduler.RestoreDecompressComplete += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreDecompressComplete); scheduler.RestoreDecompressStart += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreDecompressStart); scheduler.RestoreStart += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreStart); scheduler.RestoreTransferComplete += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferComplete); scheduler.RestoreTransferProgress += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferProgress); scheduler.RestoreTransferStart += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferStart); scheduler.ScheduleComplete += new EventHandler <ScheduleEventArgs>(ScheduleComplete); scheduler.ScheduleError += new EventHandler <ScheduleEventArgs>(ScheduleError); scheduler.ScheduleStart += new EventHandler <ScheduleEventArgs>(ScheduleStart); scheduler.Start(); } else { Help(options); return(0); } return(0); }