using System;
using System.Collections.Generic;
using Kyoo.Models.Exceptions;
namespace Kyoo.Controllers
{
///
/// A service to handle long running tasks.
///
/// The concurrent number of running tasks is implementation dependent.
public interface ITaskManager
{
///
/// Start a new task (or queue it).
///
/// The slug of the task to run
/// A list of arguments to pass to the task. An automatic conversion will be made if arguments to not fit.
/// If the number of arguments is invalid or if an argument can't be converted.
/// The task could not be found.
void StartTask(string taskSlug, Dictionary arguments = null);
///
/// Get all currently running tasks
///
/// A list of currently running tasks.
ICollection GetRunningTasks();
///
/// Get all available tasks
///
/// A list of every tasks that this instance know.
ICollection GetAllTasks();
}
}