/// <summary> /// Gets the task info. /// </summary> /// <param name="task">The task.</param> /// <returns>TaskInfo.</returns> public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) { var isHidden = false; var configurableTask = task.ScheduledTask as IConfigurableScheduledTask; if (configurableTask != null) { isHidden = configurableTask.IsHidden; } string key = task.ScheduledTask.Key; var triggers = task.Triggers .OrderBy(i => i.Type) .ThenBy(i => i.DayOfWeek ?? DayOfWeek.Sunday) .ThenBy(i => i.TimeOfDayTicks ?? 0) .ToList(); return(new TaskInfo { Name = task.Name, CurrentProgressPercentage = task.CurrentProgress, State = task.State, Id = task.Id, LastExecutionResult = task.LastExecutionResult, Triggers = triggers, Description = task.Description, Category = task.Category, IsHidden = isHidden, Key = key }); }
/// <summary> /// Gets the task info. /// </summary> /// <param name="task">The task.</param> /// <returns>TaskInfo.</returns> public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) { var isHidden = false; var configurableTask = task.ScheduledTask as IConfigurableScheduledTask; if (configurableTask != null) { isHidden = configurableTask.IsHidden; } string key = task.ScheduledTask.Key; return(new TaskInfo { Name = task.Name, CurrentProgressPercentage = task.CurrentProgress, State = task.State, Id = task.Id, LastExecutionResult = task.LastExecutionResult, Triggers = task.Triggers, Description = task.Description, Category = task.Category, IsHidden = isHidden, Key = key }); }
/// <summary> /// Called when [task executing]. /// </summary> /// <param name="task">The task.</param> internal void OnTaskExecuting(IScheduledTaskWorker task) { TaskExecuting?.Invoke(this, new GenericEventArgs <IScheduledTaskWorker> { Argument = task }); }
/// <summary> /// Gets the task info. /// </summary> /// <param name="task">The task.</param> /// <returns>TaskInfo.</returns> public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) { var isHidden = false; var configurableTask = task.ScheduledTask as IConfigurableScheduledTask; if (configurableTask != null) { isHidden = configurableTask.IsHidden; } string key = null; var hasKey = task.ScheduledTask as IHasKey; if (hasKey != null) { key = hasKey.Key; } return new TaskInfo { Name = task.Name, CurrentProgressPercentage = task.CurrentProgress, State = task.State, Id = task.Id, LastExecutionResult = task.LastExecutionResult, Triggers = task.Triggers.Select(GetTriggerInfo).ToList(), Description = task.Description, Category = task.Category, IsHidden = isHidden, Key = key }; }
/// <summary> /// Called when [task executing]. /// </summary> /// <param name="task">The task.</param> internal void OnTaskExecuting(IScheduledTaskWorker task) { EventHelper.FireEventIfNotNull(TaskExecuting, this, new GenericEventArgs <IScheduledTaskWorker> { Argument = task }, Logger); }
/// <summary> /// Queues the scheduled task. /// </summary> /// <param name="task">The task.</param> /// <param name="options">The task options.</param> private void QueueScheduledTask(IScheduledTaskWorker task, TaskExecutionOptions options) { var type = task.ScheduledTask.GetType(); lock (_taskQueue) { // If it's idle just execute immediately if (task.State == TaskState.Idle) { Execute(task, options); return; } if (!_taskQueue.ContainsKey(type)) { Logger.Info("Queueing task {0}", type.Name); _taskQueue.Add(type, options); } else { _taskQueue[type] = options; Logger.Info("Task already queued: {0}", type.Name); } } }
/// <summary> /// Initializes a new instance of the <see cref="TaskManager" /> class. /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentException">kernel</exception> public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger) { ApplicationPaths = applicationPaths; JsonSerializer = jsonSerializer; Logger = logger; ScheduledTasks = new IScheduledTaskWorker[] { }; }
/// <summary> /// Called when [task completed]. /// </summary> /// <param name="task">The task.</param> /// <param name="result">The result.</param> internal void OnTaskCompleted(IScheduledTaskWorker task, TaskResult result) { EventHelper.FireEventIfNotNull(TaskCompleted, task, new TaskCompletionEventArgs { Result = result, Task = task }, Logger); ExecuteQueuedTasks(); }
/// <summary> /// Initializes a new instance of the <see cref="TaskManager" /> class. /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentException">kernel</exception> public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem, ISystemEvents systemEvents) { ApplicationPaths = applicationPaths; JsonSerializer = jsonSerializer; Logger = logger; _fileSystem = fileSystem; _systemEvents = systemEvents; ScheduledTasks = new IScheduledTaskWorker[] { }; }
/// <summary> /// Called when [task completed]. /// </summary> /// <param name="task">The task.</param> /// <param name="result">The result.</param> internal void OnTaskCompleted(IScheduledTaskWorker task, TaskResult result) { TaskCompleted?.Invoke(task, new TaskCompletionEventArgs { Result = result, Task = task }); ExecuteQueuedTasks(); }
/// <summary> /// Initializes a new instance of the <see cref="TaskManager" /> class. /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentException">kernel</exception> public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem) { ApplicationPaths = applicationPaths; JsonSerializer = jsonSerializer; Logger = logger; _fileSystem = fileSystem; ScheduledTasks = new IScheduledTaskWorker[] { }; BindToSystemEvent(); }
/// <summary> /// Initializes a new instance of the <see cref="TaskManager" /> class. /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="loggerFactory">The logger factory.</param> /// <exception cref="System.ArgumentException">kernel</exception> public TaskManager( IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILoggerFactory loggerFactory, IFileSystem fileSystem) { ApplicationPaths = applicationPaths; JsonSerializer = jsonSerializer; Logger = loggerFactory.CreateLogger(nameof(TaskManager)); _fileSystem = fileSystem; ScheduledTasks = new IScheduledTaskWorker[] { }; }
/// <summary> /// Gets the task info. /// </summary> /// <param name="task">The task.</param> /// <returns>TaskInfo.</returns> public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) { return(new TaskInfo { Name = task.Name, CurrentProgressPercentage = task.CurrentProgress, State = task.State, Id = task.Id, LastExecutionResult = task.LastExecutionResult, Triggers = task.Triggers.Select(GetTriggerInfo).ToList(), Description = task.Description, Category = task.Category }); }
/// <summary> /// Gets the task info. /// </summary> /// <param name="task">The task.</param> /// <returns>TaskInfo.</returns> public static TaskInfo GetTaskInfo(IScheduledTaskWorker task) { return new TaskInfo { Name = task.Name, CurrentProgressPercentage = task.CurrentProgress, State = task.State, Id = task.Id, LastExecutionResult = task.LastExecutionResult, Triggers = task.Triggers.Select(GetTriggerInfo).ToList(), Description = task.Description, Category = task.Category }; }
private void QueueScheduledTask(IScheduledTaskWorker task, TaskOptions options) { var type = task.ScheduledTask.GetType(); _logger.LogInformation("Queuing task {0}", type.Name); lock (_taskQueue) { if (task.State == TaskState.Idle) { Execute(task, options); return; } _taskQueue.Enqueue(new Tuple <Type, TaskOptions>(type, options)); } }
/// <summary> /// Queues the scheduled task. /// </summary> /// <param name="task">The task.</param> /// <param name="options">The task options.</param> private void QueueScheduledTask(IScheduledTaskWorker task, TaskExecutionOptions options) { var type = task.ScheduledTask.GetType(); Logger.Info("Queueing task {0}", type.Name); lock (_taskQueue) { if (task.State == TaskState.Idle && !SuspendTriggers) { Execute(task, options); return; } _taskQueue.Enqueue(new Tuple <Type, TaskExecutionOptions>(type, options)); } }
/// <summary> /// Queues the scheduled task. /// </summary> /// <param name="task">The task.</param> private void QueueScheduledTask(IScheduledTaskWorker task) { var type = task.ScheduledTask.GetType(); lock (_taskQueue) { // If it's idle just execute immediately if (task.State == TaskState.Idle) { ((ScheduledTaskWorker)task).Execute(); return; } if (!_taskQueue.Contains(type)) { Logger.Info("Queueing task {0}", type.Name); _taskQueue.Add(type); } else { Logger.Info("Task already queued: {0}", type.Name); } } }
public Task Execute(IScheduledTaskWorker task, TaskOptions options) { return(((ScheduledTaskWorker)task).Execute(options)); }
public void Cancel(IScheduledTaskWorker task) { ((ScheduledTaskWorker)task).Cancel(); }
public Task Execute(IScheduledTaskWorker task) { return(((ScheduledTaskWorker)task).Execute()); }
public TaskCompletionEventArgs(IScheduledTaskWorker task, TaskResult result) { Task = task; Result = result; }