internal void UpdateConfig(Dictionary <string, Schedule> configSchedules) { // for each config schedule: // copy from inherited config schedules // create a new weekly schedule // for each config schedule element: // for each day in the config schedule element, add a new weekly schedule element schedules = new Dictionary <string, WeeklySchedule>(); foreach (string name in configSchedules.Keys) { Schedule s; if (string.IsNullOrEmpty(configSchedules[name].Inherit)) { s = configSchedules[name]; } else { s = new Schedule(configSchedules[configSchedules[name].Inherit]); foreach (ScheduleElement e in configSchedules[name].Elements) { s.AddElement(e); } } schedules[name] = new WeeklySchedule(); foreach (ScheduleElement e in s.Elements) { schedules[name].Elements.AddRange(ConfigScheduleElementToWeeklyScheduleElement(e)); } schedules[name].Elements.Sort(); } }
internal WeeklySchedule(WeeklySchedule source) { Name = source.Name; Elements = new List <WeeklyScheduleElement>(); foreach (WeeklyScheduleElement e in source.Elements) { Elements.Add(new WeeklyScheduleElement(e)); } }
internal void RunSchedule(string scheduleName) { if (!schedules.ContainsKey(scheduleName)) { // error log.ErrorFormat("Couldn't find schedule {0}.", scheduleName); return; } log.Info(string.Format("Starting schedule '{0}'.", scheduleName)); activeSchedule = schedules[scheduleName]; TriggerEvent(SecondsUntilNextRun()); }