/// <summary> /// Creates a new task and starts the task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <param name="taskToCancel">The function to cancel the operation</param> /// <returns></returns> public SqlTask CreateAndRun(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) { var sqlTask = CreateTask(taskMetadata, taskToRun, taskToCancel); sqlTask.Run(); return(sqlTask); }
public SqlTask CreateAndRun <T>(TaskMetadata taskMetadata) where T : SqlTask, new() { var sqlTask = CreateTask <T>(taskMetadata); sqlTask.Run(); return(sqlTask); }
/// <summary> /// Initializes the Sql task /// </summary> /// <param name="taskMetadata">Task metadata</param> /// <param name="taskToRun">The function to execute the operation</param> /// <param name="taskToCancel">The function to cancel the operation</param> public virtual void Init(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) { Validate.IsNotNull(nameof(taskMetadata), taskMetadata); Validate.IsNotNull(nameof(taskToRun), taskToRun); TaskMetadata = taskMetadata; TaskToRun = taskToRun; TaskToCancel = taskToCancel; StartTime = DateTime.UtcNow; TaskId = Guid.NewGuid(); TokenSource = new CancellationTokenSource(); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <param name="taskToCancel">The function to cancel the operation</param> /// <returns></returns> public SqlTask CreateTask(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) { ValidateNotDisposed(); var newtask = new SqlTask(taskMetadata, taskToRun, taskToCancel); lock (lockObject) { tasks.AddOrUpdate(newtask.TaskId, newtask, (key, oldValue) => newtask); } OnTaskAdded(new TaskEventArgs <SqlTask>(newtask)); return(newtask); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <param name="taskToCancel">The function to cancel the operation</param> /// <returns>The new sql task</returns> public SqlTask CreateTask <T>(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) where T : SqlTask, new() { ValidateNotDisposed(); var newTask = new T(); newTask.Init(taskMetadata, taskToRun, taskToCancel); if (taskMetadata != null && taskMetadata.TaskOperation != null) { taskMetadata.TaskOperation.SqlTask = newTask; } lock (lockObject) { tasks.AddOrUpdate(newTask.TaskId, newTask, (key, oldValue) => newTask); } OnTaskAdded(new TaskEventArgs <SqlTask>(newTask)); return(newTask); }
/// <summary> /// Creates task metadata given the request parameters /// </summary> /// <param name="requestParam">Request parameters</param> /// <param name="taskName">Task name</param> /// <param name="taskOperation">Task operation</param> /// <param name="connectionService">Connection Service</param> /// <returns>Task metadata</returns> public static TaskMetadata Create(IRequestParams requestParam, string taskName, ITaskOperation taskOperation, ConnectionService connectionService, string targetLocation = null) { TaskMetadata taskMetadata = new TaskMetadata(); ConnectionInfo connInfo; connectionService.TryFindConnection( requestParam.OwnerUri, out connInfo); if (connInfo != null) { taskMetadata.ServerName = connInfo.ConnectionDetails.ServerName; } if (connInfo != null) { taskMetadata.DatabaseName = connInfo.ConnectionDetails.DatabaseName; } IScriptableRequestParams scriptableRequestParams = requestParam as IScriptableRequestParams; if (scriptableRequestParams != null && scriptableRequestParams.TaskExecutionMode == TaskExecutionMode.Script) { taskMetadata.Name = string.Format("{0} {1}", taskName, SR.ScriptTaskName); } else { taskMetadata.Name = taskName; } taskMetadata.TaskExecutionMode = scriptableRequestParams.TaskExecutionMode; taskMetadata.TaskOperation = taskOperation; taskMetadata.OwnerUri = requestParam.OwnerUri; taskMetadata.TargetLocation = targetLocation; return(taskMetadata); }
/// <summary> /// Creates new instance of SQL task /// </summary> /// <param name="taskMetdata">Task Metadata</param> /// <param name="taskToRun">The function to run to start the task</param> public SqlTask(TaskMetadata taskMetdata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) { Init(taskMetdata, taskToRun, taskToCancel); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <returns></returns> public SqlTask CreateTask(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun) { return(CreateTask(taskMetadata, taskToRun, null)); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <returns>The new sql task</returns> public SqlTask CreateTask <T>(TaskMetadata taskMetadata) where T : SqlTask, new() { Validate.IsNotNull(nameof(taskMetadata), taskMetadata); return(CreateTask <T>(taskMetadata, TaskOperationHelper.ExecuteTaskAsync, TaskOperationHelper.CancelTaskAsync)); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <param name="taskToCancel">The function to cancel the operation</param> /// <returns>The new sql task</returns> public SqlTask CreateTask(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun, Func <SqlTask, Task <TaskResult> > taskToCancel) { return(CreateTask <SqlTask>(taskMetadata, taskToRun, taskToCancel)); }
/// <summary> /// Creates a new task /// </summary> /// <param name="taskMetadata">Task Metadata</param> /// <param name="taskToRun">The function to run the operation</param> /// <returns></returns> public SqlTask CreateTask <T>(TaskMetadata taskMetadata, Func <SqlTask, Task <TaskResult> > taskToRun) where T : SqlTask, new() { return(CreateTask <T>(taskMetadata, taskToRun, null)); }