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); }
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); }
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(); } }
private void RemoveTask(TaskEntry entry) { _tasksByStatus[entry.Status].Remove(entry); _tasksById.Remove(entry.Id); }
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); }