コード例 #1
0
        private void UpdateTaskState(IPersistenceManager pm, DA.Task task, DT.TaskState taskState, Guid?slaveId, Guid?userId, string exception)
        {
            var stateLogDao     = pm.StateLogDao;
            var taskStateEntity = taskState.ToEntity();

            if (task.Command == DA.Command.Pause && task.State == DA.TaskState.Paused ||
                task.Command == DA.Command.Abort && task.State == DA.TaskState.Aborted ||
                task.Command == DA.Command.Stop && task.State == DA.TaskState.Aborted)
            {
                task.Command = null;
            }
            else if (taskStateEntity == DA.TaskState.Paused && task.Command == null)
            {
                // slave paused and uploaded the task (no user-command) -> set waiting.
                taskStateEntity = DA.TaskState.Waiting;
            }
            stateLogDao.Save(new DA.StateLog {
                State     = taskStateEntity,
                DateTime  = DateTime.Now,
                TaskId    = task.TaskId,
                UserId    = userId,
                SlaveId   = slaveId,
                Exception = exception
            });
            task.State = taskStateEntity;
        }
コード例 #2
0
        public static void CopyToEntity(this DT.Task source, DA.Task target)
        {
            if ((source == null) || (target == null))
            {
                return;
            }
            target.TaskId                      = source.Id;
            target.State                       = source.State.ToEntity();
            target.ExecutionTimeMs             = source.ExecutionTime.TotalMilliseconds;
            target.LastHeartbeat               = source.LastHeartbeat;
            target.ParentTaskId                = source.ParentTaskId;
            target.Priority                    = source.Priority;
            target.CoresNeeded                 = source.CoresNeeded;
            target.MemoryNeeded                = source.MemoryNeeded;
            target.IsParentTask                = source.IsParentTask;
            target.FinishWhenChildJobsFinished = source.FinishWhenChildJobsFinished;
            target.Command                     = source.Command.ToEntity();
            target.JobId                       = source.JobId;
            var ids = target.RequiredPlugins.Select(x => x.PluginId);

            target.RequiredPlugins.AddRange(source.PluginsNeededIds
                                            .Where(x => !ids.Contains(x))
                                            .Select(x => new DA.RequiredPlugin {
                PluginId = x
            })
                                            );
            target.StateLogs.AddRange(source.StateLog
                                      .Where(x => x.Id == Guid.Empty)
                                      .Select(x => x.ToEntity())
                                      );
            // result.JobData missing
            // result.AssignedResources missing
        }
コード例 #3
0
 public static DT.Task ToDto(this DA.Task source)
 {
     if (source == null)
     {
         return(null);
     }
     return(new DT.Task {
         Id = source.TaskId,
         State = source.State.ToDto(),
         ExecutionTime = TimeSpan.FromMilliseconds(source.ExecutionTimeMs),
         LastHeartbeat = source.LastHeartbeat,
         ParentTaskId = source.ParentTaskId,
         Priority = source.Priority,
         CoresNeeded = source.CoresNeeded,
         MemoryNeeded = source.MemoryNeeded,
         IsParentTask = source.IsParentTask,
         FinishWhenChildJobsFinished = source.FinishWhenChildJobsFinished,
         Command = source.Command.ToDto(),
         JobId = source.JobId,
         PluginsNeededIds = source.RequiredPlugins.Select(x => x.PluginId).ToList(),
         StateLog = source.StateLogs.Select(x => x.ToDto()).OrderBy(x => x.DateTime).ToList(),
         LastTaskDataUpdate = source.JobData == null ? DateTime.MinValue : source.JobData.LastUpdate,
         IsPrivileged = true
     });
 }
コード例 #4
0
ファイル: Convert.cs プロジェクト: thunder176/HeuristicLab
 public static DT.Task ToDto(DB.Task source)
 {
     if (source == null)
     {
         return(null);
     }
     return(new DT.Task {
         Id = source.TaskId,
         CoresNeeded = source.CoresNeeded,
         ExecutionTime = TimeSpan.FromMilliseconds(source.ExecutionTimeMs),
         MemoryNeeded = source.MemoryNeeded,
         ParentTaskId = source.ParentTaskId,
         Priority = source.Priority,
         PluginsNeededIds = (source.RequiredPlugins == null ? new List <Guid>() : source.RequiredPlugins.Select(x => x.PluginId).ToList()),
         LastHeartbeat = source.LastHeartbeat,
         State = Convert.ToDto(source.State),
         StateLog = (source.StateLogs == null ? new List <DT.StateLog>() : source.StateLogs.Select(x => Convert.ToDto(x)).OrderBy(x => x.DateTime).ToList()),
         IsParentTask = source.IsParentTask,
         FinishWhenChildJobsFinished = source.FinishWhenChildJobsFinished,
         Command = Convert.ToDto(source.Command),
         LastTaskDataUpdate = (source.JobData == null ? DateTime.MinValue : source.JobData.LastUpdate),
         JobId = source.JobId,
         IsPrivileged = source.IsPrivileged
     });
 }
コード例 #5
0
ファイル: Convert.cs プロジェクト: thunder176/HeuristicLab
        public static DB.Task ToEntity(DT.Task source)
        {
            if (source == null)
            {
                return(null);
            }
            var entity = new DB.Task(); ToEntity(source, entity);

            return(entity);
        }
コード例 #6
0
        public static DA.Task ToEntity(this DT.Task source)
        {
            if (source == null)
            {
                return(null);
            }
            var result = new DA.Task();

            source.CopyToEntity(result);
            return(result);
        }
コード例 #7
0
ファイル: Convert.cs プロジェクト: thunder176/HeuristicLab
 public static void ToEntityTaskOnly(DT.Task source, DB.Task target)
 {
     if ((source != null) && (target != null))
     {
         target.TaskId                      = source.Id;
         target.CoresNeeded                 = source.CoresNeeded;
         target.ExecutionTimeMs             = source.ExecutionTime.TotalMilliseconds;
         target.MemoryNeeded                = source.MemoryNeeded;
         target.ParentTaskId                = source.ParentTaskId;
         target.Priority                    = source.Priority;
         target.LastHeartbeat               = source.LastHeartbeat;
         target.State                       = Convert.ToEntity(source.State);
         target.IsParentTask                = source.IsParentTask;
         target.FinishWhenChildJobsFinished = source.FinishWhenChildJobsFinished;
         target.Command                     = Convert.ToEntity(source.Command);
         // RequiredPlugins are added by Dao
         target.JobId        = source.JobId;
         target.IsPrivileged = source.IsPrivileged;
     }
 }
コード例 #8
0
ファイル: Convert.cs プロジェクト: thunder176/HeuristicLab
 public static DB.Task ToEntity(DT.Task source) {
   if (source == null) return null;
   var entity = new DB.Task(); ToEntity(source, entity);
   return entity;
 }
コード例 #9
0
ファイル: Converter.cs プロジェクト: t-h-e/HeuristicLab
 public static DA.Task ToEntity(this DT.Task source) {
   if (source == null) return null;
   var result = new DA.Task();
   source.CopyToEntity(result);
   return result;
 }
コード例 #10
0
 partial void DeleteTask(Task instance);
コード例 #11
0
 partial void UpdateTask(Task instance);
コード例 #12
0
 partial void InsertTask(Task instance);
コード例 #13
0
		private void detach_Jobs(Task entity)
		{
			this.SendPropertyChanging();
			entity.Job = null;
		}
コード例 #14
0
		private void attach_Jobs(Task entity)
		{
			this.SendPropertyChanging();
			entity.Job = this;
		}