Exemplo n.º 1
0
 /// <summary>
 /// Iterate the execution task attempt.
 /// </summary>
 /// <param name="task"></param>
 private void UpExecutionAttempt(QueueTask task)
 {
     if (task == null)
     {
         throw new ArgumentNullException(nameof(task));
     }
     task.Attempt++;
     WorkerTaskStore.Update(task);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Check executeble queueTask and return boolean value and queueTask workerId.
        /// </summary>
        /// <param name="isCan"></param>
        /// <param name="index"></param>
        private bool IsCanExecuteTask()
        {
            var tasks = WorkerTaskStore.Where(each => each.QueueName == queueName && each.QueueTaskStatus == QueueTaskStatus.Created || each.QueueTaskStatus == QueueTaskStatus.Failed);
            var task  = tasks.ToList().FirstOrDefault(each => CheckStatus(each) && each.QueueName == queueName);

            Func <bool> freeTask = delegate {
                currentTask = null;
                SetStatusFree();
                return(false);
            };

            if (task == null)
            {
                return(freeTask());
            }
            if (!CheckStatus(task) || !CheckOnAttemptLimit(task))
            {
                return(freeTask());
            }
            currentTask = task;
            currentTask.TaskIndexInQueue = this.Id;
            WorkerTaskStore.Update(currentTask);
            return(true);
        }