コード例 #1
0
ファイル: HiveClient.cs プロジェクト: lulzzz/HeuristicLab
        public static ItemTask LoadItemJob(Guid jobId)
        {
            TaskData taskData = HiveServiceLocator.Instance.CallHiveService(s => s.GetTaskData(jobId));

            try {
                return(PersistenceUtil.Deserialize <ItemTask>(taskData.Data));
            } catch {
                return(null);
            }
        }
コード例 #2
0
ファイル: HiveTask.cs プロジェクト: lulzzz/HeuristicLab
 public void Restart()
 {
     HiveServiceLocator.Instance.CallHiveService(service => {
         TaskData taskData = new TaskData();
         taskData.TaskId   = this.task.Id;
         taskData.Data     = PersistenceUtil.Serialize(this.itemTask);
         service.UpdateTaskData(this.Task, taskData);
         service.RestartTask(this.task.Id);
         Task task = service.GetTask(this.task.Id);
         this.task.LastTaskDataUpdate = task.LastTaskDataUpdate;
     });
 }
コード例 #3
0
ファイル: HiveTask.cs プロジェクト: lulzzz/HeuristicLab
 public HiveTask(Task task, TaskData taskData, bool autoCreateChildHiveTasks)
 {
     this.syncTasksWithOptimizers = autoCreateChildHiveTasks;
     this.Task = task;
     try {
         this.ItemTask = PersistenceUtil.Deserialize <ItemTask>(taskData.Data);
     }
     catch {
         this.ItemTask = null;
     }
     this.childHiveTasks          = new ItemList <HiveTask>();
     this.syncTasksWithOptimizers = true;
     RegisterChildHiveTasksEvents();
 }
コード例 #4
0
 protected Tuple <Task, T> DeserializeTask(Tuple <Task, TaskData> taskData)
 {
     deserializeSemaphore.WaitOne();
     try {
         if (abort || taskData.Item2 == null || taskData.Item1 == null)
         {
             return(null);
         }
         var deserializedJob = PersistenceUtil.Deserialize <T>(taskData.Item2.Data);
         taskData.Item2.Data = null; // reduce memory consumption.
         return(new Tuple <Task, T>(taskData.Item1, deserializedJob));
     }
     finally {
         deserializeSemaphore.Release();
     }
 }
コード例 #5
0
ファイル: HiveTask.cs プロジェクト: lulzzz/HeuristicLab
        /// <summary>
        /// Creates a TaskData object containing the Task and the IJob-Object as byte[]
        /// </summary>
        /// <param name="withoutChildOptimizers">
        ///   if true the Child-Optimizers will not be serialized (if the task contains an Experiment)
        /// </param>
        public virtual TaskData GetAsTaskData(bool withoutChildOptimizers, out List <IPluginDescription> plugins)
        {
            if (ItemTask == null)
            {
                plugins = new List <IPluginDescription>();
                return(null);
            }

            IEnumerable <Type> usedTypes;

            byte[]   taskByteArray = PersistenceUtil.Serialize(ItemTask, out usedTypes);
            TaskData taskData      = new TaskData()
            {
                TaskId = task.Id, Data = taskByteArray
            };

            plugins = PluginUtil.GetPluginsForTask(usedTypes, ItemTask);
            return(taskData);
        }
コード例 #6
0
ファイル: EngineHiveTask.cs プロジェクト: lulzzz/HeuristicLab
        public override TaskData GetAsTaskData(bool withoutChildOptimizers, out List <IPluginDescription> plugins)
        {
            if (ItemTask == null)
            {
                plugins = new List <IPluginDescription>();
                return(null);
            }

            TaskData           jobData = new TaskData();
            IEnumerable <Type> usedTypes;

            // clone operation and remove unnecessary scopes; don't do this earlier to avoid memory problems
            ((IAtomicOperation)ItemTask.InitialOperation).Scope.Parent = parentScopeClone;
            ItemTask.InitialOperation = (IOperation)ItemTask.InitialOperation.Clone();
            ((IAtomicOperation)ItemTask.InitialOperation).Scope.ClearParentScopes();
            jobData.Data = PersistenceUtil.Serialize(ItemTask, out usedTypes);

            plugins = PluginUtil.GetPluginsForTask(usedTypes, ItemTask);
            return(jobData);
        }
コード例 #7
0
        /// <summary>
        /// Creates a TaskData object containing the Task and the IJob-Object as byte[]
        /// </summary>
        /// <param name="withoutChildOptimizers">
        ///   if true the Child-Optimizers will not be serialized (if the task contains an Experiment)
        /// </param>
        public override TaskData GetAsTaskData(bool withoutChildOptimizers, out List <IPluginDescription> plugins)
        {
            if (ItemTask == null)
            {
                plugins = new List <IPluginDescription>();
                return(null);
            }

            IEnumerable <Type> usedTypes;

            byte[] jobByteArray;
            if (withoutChildOptimizers && ItemTask.Item is Optimization.Experiment)
            {
                OptimizerTask clonedJob = (OptimizerTask)ItemTask.Clone(); // use a cloned task, so that the childHiveJob don't get confused
                clonedJob.OptimizerAsExperiment.Optimizers.Clear();
                jobByteArray = PersistenceUtil.Serialize(clonedJob, out usedTypes);
            }
            else if (withoutChildOptimizers && ItemTask.Item is Optimization.BatchRun)
            {
                OptimizerTask clonedJob = (OptimizerTask)ItemTask.Clone();
                clonedJob.OptimizerAsBatchRun.Optimizer = null;
                jobByteArray = PersistenceUtil.Serialize(clonedJob, out usedTypes);
            }
            else if (ItemTask.Item is IAlgorithm)
            {
                ((IAlgorithm)ItemTask.Item).StoreAlgorithmInEachRun = false; // avoid storing the algorithm in runs to reduce size
                jobByteArray = PersistenceUtil.Serialize(ItemTask, out usedTypes);
            }
            else
            {
                jobByteArray = PersistenceUtil.Serialize(ItemTask, out usedTypes);
            }

            TaskData jobData = new TaskData()
            {
                TaskId = task.Id, Data = jobByteArray
            };

            plugins = PluginUtil.GetPluginsForTask(usedTypes, ItemTask);
            return(jobData);
        }