コード例 #1
0
ファイル: InMemoryQueueStore.cs プロジェクト: sigcms/Seeger
        public void Append(Type taskType, string description, object state)
        {
            var task = new TaskEntry(QueueName, taskType, description, state);

            task.Id = IdAllocator.Next();
            task.Status = TaskStatus.Pending;

            _tasksByStatus[task.Status].Add(task);
            _tasksById.Add(task.Id, task);
        }
コード例 #2
0
ファイル: DefaultTaskRunner.cs プロジェクト: sigcms/Seeger
        public void Run(TaskEntry taskEntry)
        {
            var taskType = Type.GetType(taskEntry.TaskType, true);
            var task = Activator.CreateInstance(taskType) as ITask;
            var context = new TaskContext
            {
                State = taskEntry.LoadState()
            };

            task.Execute(context);
        }
コード例 #3
0
ファイル: DbQueueStore.cs プロジェクト: sigcms/Seeger
        public void Append(Type taskType, string description, object state)
        {
            Require.NotNull(taskType, "taskType");

            var task = new TaskEntry(QueueName, taskType, description, state);

            using (var session = OpenSession())
            using (var tx = session.BeginTransaction())
            {
                session.Save(task);
                tx.Commit();
            }
        }
コード例 #4
0
ファイル: InMemoryQueueStore.cs プロジェクト: sigcms/Seeger
 private void RemoveTask(TaskEntry entry)
 {
     _tasksByStatus[entry.Status].Remove(entry);
     _tasksById.Remove(entry.Id);
 }
コード例 #5
0
ファイル: InMemoryQueueStore.cs プロジェクト: sigcms/Seeger
        private void ChangeTaskStatus(TaskEntry task, TaskStatus newStatus)
        {
            _tasksByStatus[task.Status].Remove(task);

            task.Status = newStatus;
            if (newStatus == TaskStatus.Completed || newStatus == TaskStatus.Failed || newStatus == TaskStatus.Aborted)
            {
                task.LastStoppedAtUtc = DateTime.UtcNow;
            }

            _tasksByStatus[newStatus].Add(task);
        }