Esempio n. 1
0
        public void StoreJob(IScheduledJob job, bool replaceExisting)
        {
            JobWrapper jobWrapper = new JobWrapper(job);
            bool       replace    = false;

            lock (_jobLock)
            {
                if (_jobsDictionary[jobWrapper.Name] != null)
                {
                    if (!replaceExisting)
                    {
                        throw new ArgumentException("job");
                    }
                    replace = true;
                }
                if (!replace)
                {
                    _jobsDictionary[jobWrapper.Name] = jobWrapper;
                }
                else
                {
                    // update job detail
                    JobWrapper orig = _jobsDictionary[jobWrapper.Name] as JobWrapper;
                    orig.Job = jobWrapper.Job;
                }
            }
        }
Esempio n. 2
0
 public IScheduledJob RetrieveJob(string jobName)
 {
     lock (_jobsDictionary)
     {
         JobWrapper jw = _jobsDictionary[jobName] as JobWrapper;
         return((jw != null) ? jw.Job : null);
     }
 }
Esempio n. 3
0
        public void TriggeredJobComplete(Trigger trigger, IScheduledJob job, SchedulerInstruction triggerInstCode)
        {
            lock (_triggerLock)
            {
                JobWrapper     jw = _jobsDictionary[job.Name] as JobWrapper;
                TriggerWrapper tw = _triggersDictionary[trigger.Name] as TriggerWrapper;

                // even if it was deleted, there may be cleanup to do
                _blockedJobs.Remove(job.Name);

                // check for trigger deleted during execution...
                if (tw != null)
                {
                    if (triggerInstCode == SchedulerInstruction.DeleteTrigger)
                    {
                        //log.Debug("Deleting trigger");
                        NullableDateTime d = trigger.GetNextFireTimeUtc();
                        if (!d.HasValue)
                        {
                            // double check for possible reschedule within job
                            // execution, which would cancel the need to delete...
                            d = tw.Trigger.GetNextFireTimeUtc();
                            if (!d.HasValue)
                            {
                                RemoveTrigger(trigger.Name);
                            }
                            else
                            {
                                log.Debug("Deleting cancelled - trigger still active");
                            }
                        }
                        else
                        {
                            RemoveTrigger(trigger.Name);
                        }
                    }
                    else if (triggerInstCode == SchedulerInstruction.SetTriggerComplete)
                    {
                        tw.State = InternalTriggerState.Complete;
                        _timeTriggers.Remove(tw);
                    }
                    else if (triggerInstCode == SchedulerInstruction.SetTriggerError)
                    {
                        log.Info(string.Format(CultureInfo.InvariantCulture, "Trigger {0} set to ERROR state.", trigger.Name));
                        tw.State = InternalTriggerState.Error;
                    }
                    else if (triggerInstCode == SchedulerInstruction.SetAllJobTriggersError)
                    {
                        log.Info(string.Format(CultureInfo.InvariantCulture, "All triggers of Job {0} set to ERROR state.", trigger.Name));
                        SetAllTriggersOfJobToState(trigger.Name, InternalTriggerState.Error);
                    }
                    else if (triggerInstCode == SchedulerInstruction.SetAllJobTriggersComplete)
                    {
                        SetAllTriggersOfJobToState(trigger.Name, InternalTriggerState.Complete);
                    }
                }
            }
        }
Esempio n. 4
0
 public override bool Equals(object obj)
 {
     if (obj is JobWrapper)
     {
         JobWrapper jw = (JobWrapper)obj;
         if (jw._job.Equals(_job))
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 5
0
        public bool RemoveTrigger(string triggerName, bool deleteOrphanedJob)
        {
            bool found;

            lock (_triggerLock)
            {
                // remove from triggers
                object tempObject;
                tempObject = _triggersDictionary[triggerName];
                _triggersDictionary.Remove(triggerName);
                found = (tempObject == null) ? false : true;
                if (found)
                {
                    TriggerWrapper tw = null;
                    // remove from triggers array
                    for (int i = 0; i < _triggers.Count; ++i)
                    {
                        tw = _triggers[i] as TriggerWrapper;
                        if (triggerName.Equals(tw.Name))
                        {
                            _triggers.RemoveAt(i);
                            break;
                        }
                    }
                    _timeTriggers.Remove(tw);

                    JobWrapper jw       = _jobsDictionary[tw.Trigger.JobName] as JobWrapper;
                    Trigger[]  triggers = GetTriggersForJob(tw.Trigger.JobName);
                    if ((triggers == null || triggers.Length == 0) && deleteOrphanedJob)
                    {
                        RemoveJob(tw.Trigger.JobName);
                    }
                }
            }
            return(found);
        }
Esempio n. 6
0
 public void StoreJob(IScheduledJob job, bool replaceExisting)
 {
     JobWrapper jobWrapper = new JobWrapper(job);
     bool replace = false;
     lock (_jobLock)
     {
         if (_jobsDictionary[jobWrapper.Name] != null)
         {
             if (!replaceExisting)
             {
                 throw new ArgumentException("job");
             }
             replace = true;
         }
         if (!replace)
         {
             _jobsDictionary[jobWrapper.Name] = jobWrapper;
         }
         else
         {
             // update job detail
             JobWrapper orig = _jobsDictionary[jobWrapper.Name] as JobWrapper;
             orig.Job = jobWrapper.Job;
         }
     }
 }