Пример #1
0
        public static void UpdatePortToUI()
        {
            foreach (Node each in NodeList.Values.ToList())
            {
                if (each.Type.Equals("LoadPort"))
                {
                    List <Job> tmp = new List <Job>();
                    for (int i = 0; i < 25; i++)
                    {
                        if (each.JobList.ContainsKey((i + 1).ToString()))
                        {
                            Job j;
                            if (each.JobList.TryGetValue((i + 1).ToString(), out j))
                            {
                                tmp.Add(j);
                            }
                        }
                        else
                        {
                            Job j = new Job();
                            j.Slot = (i + 1).ToString();
                            tmp.Add(j);
                        }
                    }

                    JobStateUpdate.UpdatePort(each.Name, tmp);
                }
                else if (each.Type.Equals("Aligner") || each.Type.Equals("Robot"))
                {
                    JobStateUpdate.UpdatePort(each.Name, each.JobList.Values.ToList());
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Updates the state.
        /// </summary>
        /// <param name="stateUpdate">The state update.</param>
        /// <exception cref="ArgumentNullException">stateUpdate</exception>
        public async Task UpdateAsync(JobStateUpdate stateUpdate)
        {
            _ = stateUpdate ?? throw new ArgumentNullException(nameof(stateUpdate));
            await stateStore.UpdateAsync(stateUpdate).ConfigureAwait(true);

            var state = await stateStore.FindByIdAsync(stateUpdate.Id).ConfigureAwait(true);

            await stateCommunication.SendUpdateAsync(state).ConfigureAwait(true);
        }
Пример #3
0
        /// <summary>
        /// Updates the state.
        /// </summary>
        /// <param name="update">The update.</param>
        /// <returns>
        /// True if the job should be aborted; otherwise false.
        /// </returns>
        protected async Task <bool> UpdateStateAsync(JobStateUpdate update)
        {
            _ = update ?? throw new ArgumentNullException(nameof(update));
            var jobState = await GetStateAsync(update.Id).ConfigureAwait(true);

            await stateManager.UpdateAsync(update).ConfigureAwait(true);

            var abortJob = jobState.Status != Status.Running && jobState.Status != Status.Resuming && jobState.Status != Status.Queued;

            return(abortJob);
        }
Пример #4
0
        private async Task <bool> UpdateProgressAsync(long jobStateId, int total, int results, int error)
        {
            Logger.LogDebug($"Updating job progress with job state id {jobStateId}");

            var update = new JobStateUpdate
            {
                Id       = jobStateId,
                Results  = results,
                Errors   = error,
                Total    = total,
                Progress = $"{results}/{total}",
            };

            return(await UpdateStateAsync(update).ConfigureAwait(true));
        }
Пример #5
0
        /// <summary>
        /// Updates the asynchronous.
        /// </summary>
        /// <param name="stateUpdate">The state update.</param>
        public async Task UpdateAsync(JobStateUpdate stateUpdate)
        {
            _ = stateUpdate ?? throw new ArgumentNullException(nameof(stateUpdate));

            var jobState = await FindByIdAsync(stateUpdate.Id).ConfigureAwait(true);

            if (stateUpdate.JobId != null)
            {
                jobState.JobId = stateUpdate.JobId;
            }
            if (stateUpdate.Results != null)
            {
                jobState.Results = stateUpdate.Results.Value;
            }
            if (stateUpdate.Errors != null)
            {
                jobState.Errors = stateUpdate.Errors.Value;
            }
            if (stateUpdate.Details != null)
            {
                jobState.Details = stateUpdate.Details;
            }
            if (stateUpdate.Progress != null)
            {
                jobState.Progress = stateUpdate.Progress;
            }
            if (stateUpdate.Total != null)
            {
                jobState.Total = stateUpdate.Total.Value;
            }
            if (stateUpdate.Status != null && stateUpdate.Status != jobState.Status)
            {
                jobState.Status = stateUpdate.Status.Value;
                switch (stateUpdate.Status)
                {
                case Status.Canceled:
                case Status.Failed:
                case Status.Succeeded:
                    jobState.CompletionTime = DateTime.UtcNow;
                    break;
                }
            }
            jobState.ModificationTime = DateTime.UtcNow;

            context.Entry(jobState).State = EntityState.Modified;
            context.SaveChanges();
        }