public MrsSystemTask(Job job, Action callback, SystemWorkloadBase systemWorkload, ResourceReservation reservation, bool ignoreTaskSuccessfulExecutionTime = false) : base(systemWorkload) { this.Job = job; base.ResourceReservation = reservation; this.Callback = callback; this.IgnoreTaskSuccessfulExecutionTime = ignoreTaskSuccessfulExecutionTime; }
private ResourceReservation GetReservation(WorkItem workItem, SystemWorkloadBase systemWorkload, ResourceReservationContext context, IEnumerable <ResourceKey> resources, out ResourceKey throttledResource) { throttledResource = null; ResourceReservation result; if (CommonUtils.ServiceIsStopping || this.IsInFinalization || workItem is UnthrottledWorkItem) { result = context.GetUnthrottledReservation(systemWorkload); } else { result = context.GetReservation(systemWorkload, resources, out throttledResource); } return(result); }
public LoadBalanceTask(SystemWorkloadBase workload, ResourceReservation reservation, IRequest request) : base(workload, reservation) { this.request = request; }
// Token: 0x06000427 RID: 1063 RVA: 0x00014EB9 File Offset: 0x000130B9 internal TimeBasedAssistantTask(SystemWorkloadBase workload, TimeBasedDatabaseDriver driver, ResourceReservation reservation) : base(workload, reservation) { this.driver = driver; }
private MrsSystemTask GetTask(SystemWorkloadBase systemWorkload, ResourceReservationContext context) { MrsTracer.ActivityID = this.traceActivityID; base.CheckDisposed(); MrsSystemTask result; using (SettingsContextBase.ActivateContext(this as ISettingsContextProvider)) { lock (this.jobLock) { if (this.IsFinished) { MrsTracer.Service.Debug("Job({0}) is finished.", new object[] { base.GetType().Name }); this.state = JobState.Finished; this.jobDoneEvent.Set(); result = null; } else { WorkItem workItem = null; bool flag2 = true; foreach (WorkItem workItem2 in this.workItemQueue.GetCandidateWorkItems()) { if (workItem2.ScheduledRunTime <= ExDateTime.UtcNow || CommonUtils.ServiceIsStopping) { flag2 = false; if (this.GetWorkloadType(workItem2.WorkloadType) == systemWorkload.WorkloadType) { workItem = workItem2; break; } } } if (workItem == null) { if (flag2) { this.state = JobState.Waiting; } result = null; } else { this.RevertToPreviousUnthrottledState(); IEnumerable <ResourceKey> enumerable = this.ResourceDependencies; if (enumerable == null) { enumerable = Array <ResourceKey> .Empty; } ResourceKey resource = null; ResourceReservation reservation = this.GetReservation(workItem, systemWorkload, context, enumerable, out resource); if (reservation != null) { if (reservation.DelayFactor > 0.0) { this.MoveToThrottledState(resource, true); } this.TraceWorkItem(workItem); this.workItemQueue.Remove(workItem); result = new MrsSystemTask(this, workItem.Callback, systemWorkload, reservation, workItem is JobCheck); } else { this.MoveToThrottledState(resource, false); result = null; } } } } } return(result); }
MrsSystemTask IJob.GetTask(SystemWorkloadBase systemWorkload, ResourceReservationContext context) { return(this.GetTask(systemWorkload, context)); }