public void TimerTrigger(TimerDetails td) { string jobName = td.JobName; if (jobWrappers.ContainsKey(jobName)) { log.InfoFormat("Launching job {0} from timer", jobName); ((JobExeWrapper)jobWrappers[jobName]).ChangeMode(State.ExecutionModeEnum.Execution); LaunchJob(jobName, String.Empty); } else log.ErrorFormat("Job wrapper collection does not contain job {0}", jobName); }
private DateTime ResetInterval(TimerDetails details, DateTime runTimeStamp) { DateTime resetTime = DateTime.MinValue; if (details.LastRunTime.CompareTo(DateTime.MinValue) == 0) resetTime = runTimeStamp.AddMinutes(details.ResetInterval); else resetTime = details.LastRunTime.AddMinutes(details.ResetInterval); return resetTime; }
public override StateEnums.Status Initialize(IJob _job) { job = _job; TimerDetails details = new TimerDetails(); details.JobName = jobName; details.AdapterType = "TimeManagerAdapter"; details.ResetInterval = resetInterval; details.IfAutoReset = ifAutoReset; details.IfEnabled = ifEnabled; details.RunTime = startTime; details.SkipTodayIfPassed = job.JobDetails.SkipTodayIfPassed; details.WeeklySchedule = weeklySchedule; details.EarliestRunTime = earliestRunTime; details.LatestRunTime = latestRunTime; details.IsJamsEnabled = isJamsEnabled; this.timeManager.AddTimer(details); log.Info(_job.KeyHash, "JobScheduler initialized."); return StateEnums.Status.WaitingForFile; }
public void TimerTrigger(TimerDetails td) { string jobName = td.JobName; if (jobWrappers.ContainsKey(jobName)) { int numSecs = 1; while(jobWrappers[jobName].IsInititalized == false) { log.WarnFormat("Waiting for job {0} to initialize before allowing it to execute...Wait time={1} secs", jobName, numSecs++); Thread.Sleep(1000); } log.InfoFormat("Launching job {0} from timer", jobName); //((JobExeWrapper)jobWrappers[jobName]).ChangeMode(State.ExecutionMode.Execution); LaunchJob(jobName, String.Empty, StateEnums.ExecutionMode.Execution); } else log.ErrorFormat("Job wrapper collection does not contain job {0}", jobName); }
private static void GetInitialRunDateTime(TimerDetails details, ref DateTime runDate, ref DateTime earliestDate, ref DateTime latestDate) { ConvertTimestringToDateTime(ref earliestDate, ref details.EarliestRunTime); ConvertTimestringToDateTime(ref latestDate, ref details.LatestRunTime); string runTimeString = ParseRuntimeString(details); ConvertTimestringToDateTime(ref runDate, ref runTimeString); if (DateTime.Now.CompareTo(runDate) > 0 && details.SkipTodayIfPassed && !details.RunTime.Equals("*IMMEDIATELY*")) { runDate = runDate.AddDays(1); } }
private static string ParseRuntimeString(TimerDetails details) { string runTimeString = ""; if (details.RunTime.Equals("*IMMEDIATELY*")) runTimeString = DateTime.Now.ToString("hh:mm:ss tt"); else if (TimeManager.InstanceOf().timerNamedSchedules.ContainsKey(details.RunTime)) runTimeString = TimeManager.InstanceOf().timerNamedSchedules[details.RunTime]; else runTimeString = details.RunTime; return runTimeString; }
private static bool IsDayOfWeekScheduled(TimerDetails details) { int dayOfWeek = (int)DateTime.Today.DayOfWeek; if (details.WeeklySchedule[dayOfWeek].Equals('-')) return false; else { int weekOfMonth = int.MinValue; bool testweekOfMonth = int.TryParse(details.WeeklySchedule[dayOfWeek].ToString(), out weekOfMonth); if (!testweekOfMonth) return true; else { if (DateTime.Today.Equals(FindDayOfMonth(dayOfWeek, weekOfMonth))) return true; else return false; } } }
private bool EnsureValidTimer(BitsTimer timer, out TimerDetails details) { if (timerDetailsDictionary.ContainsKey(timer.Name) && timerDetailsDictionary[timer.Name] != null) { details = timerDetailsDictionary[timer.Name]; } else { log.WarnFormat("Timer details are not found ({0}). Removing timer from collection.", timer.Name); TryRemoveTimer(timer); details = null; return false; } return true; }
public void AddTimer(IJob job, TimerDetails detail, bool autoStart) { ElapsedEventHandler elapsedEventHandler = new ElapsedEventHandler(EventReceivedHandler); //define timer BitsTimer timer = null; if (!timerDictionary.ContainsKey(detail.Key)) { timer = new BitsTimer(); timer.BeginInit(); timer.AutoReset = detail.IfAutoReset; timer.Enabled = detail.IfEnabled && !detail.IsJamsEnabled; timer.Interval = detail.Interval; timer.Name = detail.JobName; timer.ScheduledTime = GetUniqueTime(timerDictionary, detail.RunTime); timer.WeeklySchedule = detail.WeeklySchedule; timer.Elapsed += elapsedEventHandler; timer.EndInit(); lock (s_lock) { timerDictionary[detail.Key] = timer; timerDictionary[detail.Key] = timer; timerDetailsDictionary[detail.JobName] = detail; } timerDictionary[detail.Key].Start(); } else timer = timerDictionary[detail.Key]; if (detail.JobName == null) detail.JobName = "GenericTimer"; if (job != null) TimeManager.InstanceOf().timerJobs[timer.ToString()] = job.JobName; log.InfoFormat(@"Timer {0} created", timer.ToString()); }
public void AddTimer(TimerDetails detail, bool autoStart) { AddTimer(null, detail, autoStart); }
public void AddTimer(TimerDetails detail) { AddTimer(detail, true); }