Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        /// <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();
        }
Esempio n. 3
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;
        }
Esempio n. 4
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);
        }