- Timestamp:
- 07/23/10 09:37:57 (14 years ago)
- Location:
- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3
- Files:
-
- 3 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj
r4078 r4091 103 103 <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath> 104 104 </Reference> 105 <Reference Include="HeuristicLab.SequentialEngine-3.3"> 106 <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.SequentialEngine-3.3.dll</HintPath> 107 </Reference> 108 <Reference Include="HeuristicLab.Tracing-3.3"> 109 <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Tracing-3.3.dll</HintPath> 110 </Reference> 105 111 <Reference Include="System" /> 106 112 <Reference Include="System.Core"> … … 125 131 <Compile Include="HeuristicLabHiveEnginePlugin.cs" /> 126 132 <Compile Include="HiveEngine.cs" /> 127 <Compile Include="HiveEngineEditor.cs" />128 <Compile Include="HiveEngineEditor.Designer.cs">129 <DependentUpon>HiveEngineEditor.cs</DependentUpon>130 </Compile>131 133 <Compile Include="Properties\AssemblyInfo.cs" /> 132 134 <Compile Include="ServiceLocator.cs" /> 133 135 </ItemGroup> 134 136 <ItemGroup> 137 <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj"> 138 <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project> 139 <Name>HeuristicLab.DataAccess-3.3</Name> 140 </ProjectReference> 135 141 <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj"> 136 142 <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project> … … 145 151 <None Include="HeuristicLab.snk" /> 146 152 <None Include="Properties\AssemblyInfo.frame" /> 147 </ItemGroup>148 <ItemGroup>149 <EmbeddedResource Include="HiveEngineEditor.resx">150 <DependentUpon>HiveEngineEditor.cs</DependentUpon>151 <SubType>Designer</SubType>152 </EmbeddedResource>153 153 </ItemGroup> 154 154 <ItemGroup> -
branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLabHiveEnginePlugin.cs
r4077 r4091 29 29 /// Plugin class for HeuristicLab.Hive.Engine plugin. 30 30 /// </summary> 31 [Plugin("HeuristicLab.Hive.Engine -3.3")]31 [Plugin("HeuristicLab.Hive.Engine", "3.3")] 32 32 [PluginFile("HeuristicLab.Hive.Engine-3.3.dll", PluginFileType.Assembly)] 33 [PluginDependency("HeuristicLab.Common", "3.3.0.0")]34 [PluginDependency("HeuristicLab.Core -3.3")]35 [PluginDependency("HeuristicLab.Data -3.3")]36 [PluginDependency("HeuristicLab.DataAccess -3.3")]37 [PluginDependency("HeuristicLab.Hive.Contracts -3.3")]38 [PluginDependency("HeuristicLab.Hive.JobBase -3.3")]39 [PluginDependency("HeuristicLab.SequentialEngine -3.3")]40 [PluginDependency("HeuristicLab.Tracing", "3.3.0.0")]33 [PluginDependency("HeuristicLab.Common", "3.3")] 34 [PluginDependency("HeuristicLab.Core", "3.3")] 35 [PluginDependency("HeuristicLab.Data", "3.3")] 36 [PluginDependency("HeuristicLab.DataAccess", "3.3")] 37 [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")] 38 [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")] 39 [PluginDependency("HeuristicLab.SequentialEngine", "3.3")] 40 [PluginDependency("HeuristicLab.Tracing", "3.3")] 41 41 public class HeuristicLabHiveEnginePlugin : PluginBase { 42 42 } -
branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs
r4042 r4091 41 41 /// in parallel. 42 42 /// </summary> 43 public class HiveEngine : ItemBase, IEngine, IEditable {43 public class HiveEngine : HeuristicLab.Core.Engine { 44 44 private const int SNAPSHOT_POLLING_INTERVAL_MS = 1000; 45 45 private const int RESULT_POLLING_INTERVAL_MS = 10000; … … 60 60 } 61 61 62 #region IEngine Members 63 64 public IOperatorGraph OperatorGraph { 65 get { return job.Engine.OperatorGraph; } 66 } 67 68 public IScope GlobalScope { 69 get { return job.Engine.GlobalScope; } 70 } 62 //public OperatorGraph OperatorGraph { 63 // get { return job.Engine.OperatorGraph; } 64 //} 65 66 //public IScope GlobalScope { 67 // get { return job.Engine.GlobalScope; } 68 //} 71 69 72 70 public TimeSpan ExecutionTime { … … 75 73 76 74 public ThreadPriority Priority { 77 get { return job.Engine.Priority; } 78 set { job.Engine.Priority = value; } 79 } 80 81 public bool Running { 82 get { return job.Engine.Running; } 83 } 84 85 public bool Canceled { 86 get { return job.Engine.Canceled; } 87 } 88 89 public bool Terminated { 90 get { return job.Engine.Terminated; } 91 } 92 93 public void Execute() { 75 get { return this.Priority; } 76 set { this.Priority = value; } 77 } 78 79 //public bool Running { 80 // get { return job.Engine.ExecutionState == Core.ExecutionState.Started; } 81 //} 82 83 //public bool Canceled { 84 // get { return job.Engine.Canceled; } 85 //} 86 87 //public bool Terminated { 88 // get { return job.Engine.Terminated; } 89 //} 90 91 public ExecutionState ExecutionState { 92 get { return job.Engine.ExecutionState; } 93 } 94 95 protected override void ProcessNextOperation() { 94 96 var jobObj = CreateJobObj(); 95 97 IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl); … … 97 99 List<string> groups = new List<string>(); 98 100 if (!String.Empty.Equals(RessourceIds)) { 99 groups.AddRange(RessourceIds.Split(';')); 101 groups.AddRange(RessourceIds.Split(';')); 100 102 } 101 103 … … 110 112 } 111 113 } 112 } */ 114 } */ 113 115 114 116 int loops = 1; 115 117 116 118 Int32.TryParse(MultiSubmitCount, out loops); 117 if (loops == 0)119 if (loops == 0) 118 120 loops = 1; 119 121 … … 122 124 jobId = res.Obj.Id; 123 125 } 124 126 125 127 StartResultPollingThread(); 126 128 } … … 144 146 // 4. the result that we get from the server is a snapshot and not the final result 145 147 if (abortRequested) return; 146 148 if (response.Success && response.Obj != null && response.StatusMessage != ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE) { 147 149 Logger.Debug("HiveEngine: Results-polling - Got result!"); 148 restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobData); 150 throw new NotImplementedException("TODO[chn]use persistency-3.3"); 151 //restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobData); 149 152 Logger.Debug("HiveEngine: Results-polling - IsSnapshotResult: " + (restoredJob.Progress < 1.0)); 150 153 } … … 153 156 154 157 job = restoredJob; 155 ControlManager.Manager.ShowControl(job.Engine.CreateView()); 156 OnChanged(); 157 OnFinished(); 158 159 //ControlManager.Manager.ShowControl(job.Engine.CreateView()); 160 //OnChanged(); 161 162 //OnFinished(); 158 163 }); 159 164 Logger.Debug("HiveEngine: Starting results-polling thread"); … … 161 166 } 162 167 163 public void RequestSnapshot() {164 IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);165 int retryCount = 0;166 ResponseObject<SerializedJob> response;167 lock (locker) {168 Logger.Debug("HiveEngine: Abort - RequestSnapshot");169 Response snapShotResponse = executionEngineFacade.RequestSnapshot(jobId);170 if (snapShotResponse.StatusMessage == ApplicationConstants.RESPONSE_JOB_IS_NOT_BEEING_CALCULATED) {171 // job is finished already172 Logger.Debug("HiveEngine: Abort - GetLastResult(false)");173 response = executionEngineFacade.GetLastSerializedResult(jobId, false, false);174 Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);175 } else {176 // server sent snapshot request to client177 // poll until snapshot is ready178 do {179 Thread.Sleep(SNAPSHOT_POLLING_INTERVAL_MS);180 Logger.Debug("HiveEngine: Abort - GetLastResult(true)");181 response = executionEngineFacade.GetLastSerializedResult(jobId, false, true);182 Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);183 retryCount++;184 // loop while185 // 1. problem with communication with server186 // 2. job result not yet ready187 } while (188 (retryCount < MAX_SNAPSHOT_RETRIES) && (189 !response.Success ||190 response.StatusMessage == ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE)191 );192 }193 }194 SerializedJob jobResult = response.Obj;195 if (jobResult != null) {196 Logger.Debug("HiveEngine: Results-polling - Got result!");197 job = (Job)PersistenceManager.RestoreFromGZip(jobResult.SerializedJobData);198 ControlManager.Manager.ShowControl(job.Engine.CreateView());199 }200 //HiveLogger.Debug("HiveEngine: Results-polling - Exception!");201 //Exception ex = new Exception(response.Obj.Exception.Message);202 //ThreadPool.QueueUserWorkItem(delegate(object state) { OnExceptionOccurred(ex); });203 }204 205 public void ExecuteStep() {206 throw new NotSupportedException();207 }208 209 public void ExecuteSteps(int steps) {210 throw new NotSupportedException();211 }212 213 public void Abort() {214 abortRequested = true;215 // RequestSnapshot();216 IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);217 executionEngineFacade.AbortJob(jobId);218 OnChanged();219 OnFinished();220 }221 222 public void Reset() {223 abortRequested = false;224 job.Engine.Reset();225 jobId = Guid.NewGuid();226 OnInitialized();227 }228 229 168 private HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob CreateJobObj() { 230 169 HeuristicLab.Hive.Contracts.BusinessObjects.JobDto jobObj = 231 170 new HeuristicLab.Hive.Contracts.BusinessObjects.JobDto(); 232 171 233 MemoryStream memStream = new MemoryStream(); 234 GZipStream stream = new GZipStream(memStream, CompressionMode.Compress, true); 235 XmlDocument document = PersistenceManager.CreateXmlDocument(); 236 Dictionary<Guid, IStorable> dictionary = new Dictionary<Guid, IStorable>(); 237 XmlNode rootNode = document.CreateElement("Root"); 238 document.AppendChild(rootNode); 239 rootNode.AppendChild(PersistenceManager.Persist(job, document, dictionary)); 240 document.Save(stream); 241 stream.Close(); 242 243 HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob executableJobObj = 244 new HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob(); 245 executableJobObj.JobInfo = jobObj; 246 executableJobObj.SerializedJobData = memStream.ToArray(); 247 248 List<IPluginDescription> plugins = new List<IPluginDescription>(); 249 250 foreach (IStorable storeable in dictionary.Values) { 251 IPluginDescription pluginInfo = ApplicationManager.Manager.GetDeclaringPlugin(storeable.GetType()); 252 if (!plugins.Contains(pluginInfo)) { 253 plugins.Add(pluginInfo); 254 foreach (var dependency in pluginInfo.Dependencies) { 255 if (!plugins.Contains(dependency)) plugins.Add(dependency); 256 } 257 } 258 } 259 260 List<HivePluginInfoDto> pluginsNeeded = 261 new List<HivePluginInfoDto>(); 262 foreach (IPluginDescription uniquePlugin in plugins) { 263 HivePluginInfoDto pluginInfo = 264 new HivePluginInfoDto(); 265 pluginInfo.Name = uniquePlugin.Name; 266 pluginInfo.Version = uniquePlugin.Version; 267 pluginInfo.BuildDate = uniquePlugin.BuildDate; 268 pluginsNeeded.Add(pluginInfo); 269 } 270 271 jobObj.CoresNeeded = 1; 272 jobObj.PluginsNeeded = pluginsNeeded; 273 jobObj.State = HeuristicLab.Hive.Contracts.BusinessObjects.State.offline; 274 return executableJobObj; 275 } 276 277 public event EventHandler Initialized; 278 /// <summary> 279 /// Fires a new <c>Initialized</c> event. 280 /// </summary> 281 protected virtual void OnInitialized() { 282 if (Initialized != null) 283 Initialized(this, new EventArgs()); 284 } 285 286 public event EventHandler<EventArgs<IOperation>> OperationExecuted; 287 /// <summary> 288 /// Fires a new <c>OperationExecuted</c> event. 289 /// </summary> 290 /// <param name="operation">The operation that has been executed.</param> 291 protected virtual void OnOperationExecuted(IOperation operation) { 292 if (OperationExecuted != null) 293 OperationExecuted(this, new EventArgs<IOperation>(operation)); 294 } 295 296 public event EventHandler<EventArgs<Exception>> ExceptionOccurred; 297 /// <summary> 298 /// Aborts the execution and fires a new <c>ExceptionOccurred</c> event. 299 /// </summary> 300 /// <param name="exception">The exception that was thrown.</param> 301 protected virtual void OnExceptionOccurred(Exception exception) { 302 Abort(); 303 if (ExceptionOccurred != null) 304 ExceptionOccurred(this, new EventArgs<Exception>(exception)); 305 } 306 307 public event EventHandler ExecutionTimeChanged; 308 /// <summary> 309 /// Fires a new <c>ExecutionTimeChanged</c> event. 310 /// </summary> 311 protected virtual void OnExecutionTimeChanged() { 312 if (ExecutionTimeChanged != null) 313 ExecutionTimeChanged(this, new EventArgs()); 314 } 315 316 public event EventHandler Finished; 317 /// <summary> 318 /// Fires a new <c>Finished</c> event. 319 /// </summary> 320 protected virtual void OnFinished() { 321 if (Finished != null) 322 Finished(this, new EventArgs()); 323 } 324 325 #endregion 326 327 public override IView CreateView() { 328 return new HiveEngineEditor(this); 329 } 330 331 #region IEditable Members 332 333 public IEditor CreateEditor() { 334 return new HiveEngineEditor(this); 335 } 336 #endregion 337 338 public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 339 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 340 XmlAttribute attr = document.CreateAttribute("HiveServerUrl"); 341 attr.Value = HiveServerUrl; 342 node.Attributes.Append(attr); 343 node.AppendChild(PersistenceManager.Persist("Job", job, document, persistedObjects)); 344 return node; 345 } 346 347 public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 348 base.Populate(node, restoredObjects); 349 HiveServerUrl = node.Attributes["HiveServerUrl"].Value; 350 job = (Job)PersistenceManager.Restore(node.SelectSingleNode("Job"), restoredObjects); 351 } 172 173 throw new NotImplementedException("TODO[chn]use persistency-3.3"); 174 175 //MemoryStream memStream = new MemoryStream(); 176 //GZipStream stream = new GZipStream(memStream, CompressionMode.Compress, true); 177 //XmlDocument document = PersistenceManager.CreateXmlDocument(); 178 //Dictionary<Guid, IStorable> dictionary = new Dictionary<Guid, IStorable>(); 179 //XmlNode rootNode = document.CreateElement("Root"); 180 //document.AppendChild(rootNode); 181 //rootNode.AppendChild(PersistenceManager.Persist(job, document, dictionary)); 182 //document.Save(stream); 183 //stream.Close(); 184 185 //HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob executableJobObj = 186 // new HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob(); 187 //executableJobObj.JobInfo = jobObj; 188 //executableJobObj.SerializedJobData = memStream.ToArray(); 189 190 //List<IPluginDescription> plugins = new List<IPluginDescription>(); 191 192 //foreach (IStorable storeable in dictionary.Values) { 193 // IPluginDescription pluginInfo = ApplicationManager.Manager.GetDeclaringPlugin(storeable.GetType()); 194 // if (!plugins.Contains(pluginInfo)) { 195 // plugins.Add(pluginInfo); 196 // foreach (var dependency in pluginInfo.Dependencies) { 197 // if (!plugins.Contains(dependency)) plugins.Add(dependency); 198 // } 199 // } 200 //} 201 202 //List<HivePluginInfoDto> pluginsNeeded = 203 // new List<HivePluginInfoDto>(); 204 //foreach (IPluginDescription uniquePlugin in plugins) { 205 // HivePluginInfoDto pluginInfo = 206 // new HivePluginInfoDto(); 207 // pluginInfo.Name = uniquePlugin.Name; 208 // pluginInfo.Version = uniquePlugin.Version; 209 // pluginInfo.BuildDate = uniquePlugin.BuildDate; 210 // pluginsNeeded.Add(pluginInfo); 211 //} 212 213 //jobObj.CoresNeeded = 1; 214 //jobObj.PluginsNeeded = pluginsNeeded; 215 //jobObj.State = HeuristicLab.Hive.Contracts.BusinessObjects.State.offline; 216 //return executableJobObj; 217 } 218 219 //public event EventHandler Initialized; 220 ///// <summary> 221 ///// Fires a new <c>Initialized</c> event. 222 ///// </summary> 223 //protected virtual void OnInitialized() { 224 // if (Initialized != null) 225 // Initialized(this, new EventArgs()); 226 //} 227 228 //public event EventHandler<EventArgs<IOperation>> OperationExecuted; 229 ///// <summary> 230 ///// Fires a new <c>OperationExecuted</c> event. 231 ///// </summary> 232 ///// <param name="operation">The operation that has been executed.</param> 233 //protected virtual void OnOperationExecuted(IOperation operation) { 234 // if (OperationExecuted != null) 235 // OperationExecuted(this, new EventArgs<IOperation>(operation)); 236 //} 237 238 //public event EventHandler<EventArgs<Exception>> ExceptionOccurred; 239 ///// <summary> 240 ///// Aborts the execution and fires a new <c>ExceptionOccurred</c> event. 241 ///// </summary> 242 ///// <param name="exception">The exception that was thrown.</param> 243 //protected virtual void OnExceptionOccurred(Exception exception) { 244 // Abort(); 245 // if (ExceptionOccurred != null) 246 // ExceptionOccurred(this, new EventArgs<Exception>(exception)); 247 //} 248 249 //public event EventHandler ExecutionTimeChanged; 250 ///// <summary> 251 ///// Fires a new <c>ExecutionTimeChanged</c> event. 252 ///// </summary> 253 //protected virtual void OnExecutionTimeChanged() { 254 // if (ExecutionTimeChanged != null) 255 // ExecutionTimeChanged(this, new EventArgs()); 256 //} 257 258 //public event EventHandler Finished; 259 ///// <summary> 260 ///// Fires a new <c>Finished</c> event. 261 ///// </summary> 262 //protected virtual void OnFinished() { 263 // if (Finished != null) 264 // Finished(this, new EventArgs()); 265 //} 266 267 //public void Abort() { 268 // abortRequested = true; 269 // // RequestSnapshot(); 270 // IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl); 271 // executionEngineFacade.AbortJob(jobId); 272 // //OnChanged(); 273 // OnFinished(); 274 //} 275 276 //public void Reset() { 277 // abortRequested = false; 278 279 // throw new NotImplementedException("[chn] how to reset Engine?"); 280 // //job.Engine.Reset(); 281 282 // jobId = Guid.NewGuid(); 283 // OnInitialized(); 284 //} 285 286 //public void RequestSnapshot() { 287 // IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl); 288 // int retryCount = 0; 289 // ResponseObject<SerializedJob> response; 290 // lock (locker) { 291 // Logger.Debug("HiveEngine: Abort - RequestSnapshot"); 292 // Response snapShotResponse = executionEngineFacade.RequestSnapshot(jobId); 293 // if (snapShotResponse.StatusMessage == ApplicationConstants.RESPONSE_JOB_IS_NOT_BEEING_CALCULATED) { 294 // // job is finished already 295 // Logger.Debug("HiveEngine: Abort - GetLastResult(false)"); 296 // response = executionEngineFacade.GetLastSerializedResult(jobId, false, false); 297 // Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success); 298 // } else { 299 // // server sent snapshot request to client 300 // // poll until snapshot is ready 301 // do { 302 // Thread.Sleep(SNAPSHOT_POLLING_INTERVAL_MS); 303 // Logger.Debug("HiveEngine: Abort - GetLastResult(true)"); 304 // response = executionEngineFacade.GetLastSerializedResult(jobId, false, true); 305 // Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success); 306 // retryCount++; 307 // // loop while 308 // // 1. problem with communication with server 309 // // 2. job result not yet ready 310 // } while ( 311 // (retryCount < MAX_SNAPSHOT_RETRIES) && ( 312 // !response.Success || 313 // response.StatusMessage == ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE) 314 // ); 315 // } 316 // } 317 // SerializedJob jobResult = response.Obj; 318 // if (jobResult != null) { 319 // Logger.Debug("HiveEngine: Results-polling - Got result!"); 320 321 // //job = (Job)PersistenceManager.RestoreFromGZip(jobResult.SerializedJobData); 322 // //ControlManager.Manager.ShowControl(job.Engine.CreateView()); 323 // throw new NotImplementedException("TODO[chn]use persistency-3.3"); 324 // } 325 // //HiveLogger.Debug("HiveEngine: Results-polling - Exception!"); 326 // //Exception ex = new Exception(response.Obj.Exception.Message); 327 // //ThreadPool.QueueUserWorkItem(delegate(object state) { OnExceptionOccurred(ex); }); 328 //} 329 330 //public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 331 // XmlNode node = base.GetXmlNode(name, document, persistedObjects); 332 // XmlAttribute attr = document.CreateAttribute("HiveServerUrl"); 333 // attr.Value = HiveServerUrl; 334 // node.Attributes.Append(attr); 335 // node.AppendChild(PersistenceManager.Persist("Job", job, document, persistedObjects)); 336 // return node; 337 //} 338 339 //public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 340 // base.Populate(node, restoredObjects); 341 // HiveServerUrl = node.Attributes["HiveServerUrl"].Value; 342 // job = (Job)PersistenceManager.Restore(node.SelectSingleNode("Job"), restoredObjects); 343 //} 344 345 352 346 } 353 347 } -
branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Job.cs
r3472 r4091 32 32 namespace HeuristicLab.Hive.Engine { 33 33 /// <summary> 34 /// Represents a njob that wraps an engine that should be executed in the hive.34 /// Represents a job that wraps an engine that should be executed in the hive. 35 35 /// </summary> 36 public class Job : StorableBase,IJob {36 public class Job : IJob { 37 37 private IEngine engine; 38 38 public IEngine Engine { … … 42 42 public Job() 43 43 : base() { 44 44 45 engine = new SequentialEngine.SequentialEngine(); 45 engine.Priority = ThreadPriority.Lowest;46 //engine.Priority = ThreadPriority.Lowest; 46 47 RegisterEvents(); 47 48 } 48 49 49 50 private void RegisterEvents() { 50 engine. Finished += new EventHandler(engine_Finished);51 engine.Stopped += new EventHandler(engine_Stopped); 51 52 engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(engine_ExceptionOccurred); 52 53 } 53 54 54 55 private void DeregisterEvents() { 55 engine. Finished -= new EventHandler(engine_Finished);56 engine.Stopped -= new EventHandler(engine_Stopped); 56 57 engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(engine_ExceptionOccurred); 57 58 } 58 59 59 void engine_ Finished(object sender, EventArgs e) {60 if (Engine. Canceled) this.progress = 0.0;60 void engine_Stopped(object sender, EventArgs e) { 61 if (Engine.ExecutionState != ExecutionState.Stopped) this.progress = 0.0; 61 62 else this.progress = 1.0; 62 63 var listeners = JobStopped; … … 86 87 public double Progress { 87 88 get { 88 DoubleData progress = Engine.GlobalScope.GetVariableValue<DoubleData>("Progress", false,89 false); 90 return progress == null ? this.progress : progress.Data;89 //DoubleValue progress = Engine.GlobalScope.GetVariableValue<DoubleData>("Progress", false, false); [chn] not possible in 3.3? 90 91 return engine.ExecutionState == ExecutionState.Stopped ? 1.0 : 0.0; 91 92 } 92 93 set { throw new NotSupportedException(); } … … 95 96 public bool Running { 96 97 get { 97 return Engine. Running;98 return Engine.ExecutionState == ExecutionState.Started; 98 99 } 99 100 set { … … 107 108 108 109 public void Start() { 109 Engine. Execute();110 Engine.Start(); 110 111 } 111 112 112 113 public void Stop() { 113 Engine. Abort();114 Engine.Stop(); 114 115 } 115 116 116 117 #endregion 117 118 118 public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {119 XmlNode node = base.GetXmlNode(name, document, persistedObjects);120 XmlAttribute idAttr = document.CreateAttribute("JobId");121 idAttr.Value = XmlConvert.ToString(JobId);122 XmlAttribute progressAttr = document.CreateAttribute("Progress");123 progressAttr.Value = XmlConvert.ToString(progress);124 node.Attributes.Append(idAttr);125 node.Attributes.Append(progressAttr);126 node.AppendChild(PersistenceManager.Persist("Engine", Engine, document, persistedObjects));127 return node;128 }129 public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {130 base.Populate(node, restoredObjects);131 JobId = XmlConvert.ToInt64(node.Attributes["JobId"].Value);132 progress = XmlConvert.ToDouble(node.Attributes["Progress"].Value);133 DeregisterEvents();134 engine = (SequentialEngine.SequentialEngine)PersistenceManager.Restore(node.SelectSingleNode("Engine"), restoredObjects);135 RegisterEvents();136 }119 //public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 120 // XmlNode node = base.GetXmlNode(name, document, persistedObjects); 121 // XmlAttribute idAttr = document.CreateAttribute("JobId"); 122 // idAttr.Value = XmlConvert.ToString(JobId); 123 // XmlAttribute progressAttr = document.CreateAttribute("Progress"); 124 // progressAttr.Value = XmlConvert.ToString(progress); 125 // node.Attributes.Append(idAttr); 126 // node.Attributes.Append(progressAttr); 127 // node.AppendChild(PersistenceManager.Persist("Engine", Engine, document, persistedObjects)); 128 // return node; 129 //} 130 //public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 131 // base.Populate(node, restoredObjects); 132 // JobId = XmlConvert.ToInt64(node.Attributes["JobId"].Value); 133 // progress = XmlConvert.ToDouble(node.Attributes["Progress"].Value); 134 // DeregisterEvents(); 135 // engine = (SequentialEngine.SequentialEngine)PersistenceManager.Restore(node.SelectSingleNode("Engine"), restoredObjects); 136 // RegisterEvents(); 137 //} 137 138 } 138 139 }
Note: See TracChangeset
for help on using the changeset viewer.