Beispiel #1
0
 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;
 }
Beispiel #2
0
        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;
 }
Beispiel #4
0
 // Token: 0x06000427 RID: 1063 RVA: 0x00014EB9 File Offset: 0x000130B9
 internal TimeBasedAssistantTask(SystemWorkloadBase workload, TimeBasedDatabaseDriver driver, ResourceReservation reservation) : base(workload, reservation)
 {
     this.driver = driver;
 }
Beispiel #5
0
        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);
        }
Beispiel #6
0
 MrsSystemTask IJob.GetTask(SystemWorkloadBase systemWorkload, ResourceReservationContext context)
 {
     return(this.GetTask(systemWorkload, context));
 }