/// <inheritdoc/> public IJobState GetJobState(IJob job) { var jobState = this.m_jobStates.FirstOrDefault(o => o.JobId == job.Id); if (jobState == null) { jobState = new XmlJobState() { JobId = job.Id, CurrentState = JobStateType.NotRun }; this.m_jobStates.Add(jobState); } return(jobState); }
/// <inheritdoc/> public void SetState(IJob job, JobStateType state) { var jobData = this.m_jobStates.FirstOrDefault(o => o.JobId == job.Id); if (jobData == null) { jobData = new XmlJobState() { JobId = job.Id, CurrentState = state, LastStartTime = DateTime.Now }; this.m_jobStates.Add(jobData); } // Determine state transition switch (state) { case JobStateType.Running: if (!jobData.IsRunning()) { jobData.LastStartTime = DateTime.Now; jobData.LastStopTime = null; } break; case JobStateType.Starting: jobData.LastStartTime = DateTime.Now; jobData.LastStopTime = null; break; case JobStateType.Completed: jobData.LastStopTime = DateTime.Now; break; } jobData.CurrentState = state; this.SaveState(); }