Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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();
        }