#region License Information /* HeuristicLab * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Hive.Client.ExecutionEngine; using HeuristicLab.Hive.Client.Common; using System.Threading; namespace HeuristicLab.Hive.Client.Core { public class Core { Dictionary engines = new Dictionary(); public void Start() { Logging.getInstance().Info(this.ToString(), "Info Message"); //Logging.getInstance().Error(this.ToString(), "Error Message"); //Logging.getInstance().Error(this.ToString(), "Exception Message", new Exception("Exception")); Heartbeat beat = new Heartbeat(); beat.Interval = 5000; beat.StartHeartbeat(); MessageQueue queue = MessageQueue.GetInstance(); JobBase job = new TestJob(); ExecutionEngine.Executor engine = new ExecutionEngine.Executor(); engine.Job = job; engine.JobId = 1L; engine.Queue = queue; engine.Start(); engines.Add(engine.JobId, engine); Thread.Sleep(15000); engine.RequestSnapshot(); while (true) { MessageContainer container = queue.GetMessage(); Logging.getInstance().Info(this.ToString(), container.Message.ToString()); DetermineAction(container); } } private void DetermineAction(MessageContainer container) { if(container.Message == MessageContainer.MessageType.AbortJob) engines[container.JobId].Abort(); else if (container.Message == MessageContainer.MessageType.JobAborted) //kill appdomain Console.WriteLine("tmp"); else if (container.Message == MessageContainer.MessageType.RequestSnapshot) engines[container.JobId].RequestSnapshot(); else if (container.Message == MessageContainer.MessageType.SnapshotReady) // must be async! engines[container.JobId].GetSnapshot(); } } }