Free cookie consent management tool by TermsFeed Policy Generator

Changeset 393 for trunk/sources


Ignore:
Timestamp:
07/22/08 23:29:18 (16 years ago)
Author:
gkronber
Message:

worked on very basic control to view the tree of agents/runs (ticket #188)

Location:
trunk/sources
Files:
1 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs

    r389 r393  
    6565    public ICollection<IAgent> SubAgents {
    6666      get {
    67         List<IAgent> runs = new List<IAgent>();
    68         // TASK
    69         return runs;
     67        List<IAgent> agents = new List<IAgent>();
     68        foreach(AgentEntry entry in Database.GetSubAgents(Id)) {
     69          Agent newAgent = (Agent)DbPersistenceManager.Restore(entry.RawData);
     70          newAgent.Database = Database;
     71          newAgent.Id = entry.Id;
     72          newAgent.Name = entry.Name;
     73          newAgent.Status = entry.Status;
     74          agents.Add(newAgent);
     75        }
     76        return agents;
    7077      }
    7178    }
     
    7481      get {
    7582        List<IResult> results = new List<IResult>();
    76         // TASK
     83        foreach(ResultEntry entry in Database.GetResults(Id)) {
     84          Result result = (Result)DbPersistenceManager.Restore(entry.RawData);
     85        }
    7786        return results;
    7887      }
     
    92101    #endregion
    93102
     103    public override IView CreateView() {
     104      return new AgentView(this);
     105    }
    94106  }
    95107}
  • trunk/sources/HeuristicLab.CEDMA.Core/AgentListView.cs

    r390 r393  
    6464          node.Text = agent.Name;
    6565          node.Tag = agent;
     66          node.Nodes.Add("dummy");
    6667          agentTreeView.Nodes.Add(node);
    6768        }
     
    7778
    7879    private void agentTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
     80      e.Node.Nodes.Clear();
     81      IAgent agent = (IAgent)e.Node.Tag;
     82      foreach(IAgent subAgent in agent.SubAgents) {
     83        TreeNode node = new TreeNode();
     84        node.Text = subAgent.Name;
     85        node.Tag = subAgent;
     86        node.Nodes.Add("dummy");
     87        e.Node.Nodes.Add(node);
     88      }
     89      foreach(IResult result in agent.Results) {
     90        TreeNode node = new TreeNode();
     91        node.Text = result.Summary;
     92        node.Tag = result;
     93        node.Nodes.Add("dummy");
     94        e.Node.Nodes.Add(node);
     95      }
    7996    }
    8097
     
    85102      detailsGroupBox.Enabled = false;
    86103      if(agentTreeView.SelectedNode != null) {
    87         IAgent agent = (IAgent)agentTreeView.SelectedNode.Tag;
    88         Control control = (Control)new AgentView(agent);
     104        IViewable viewable = (IViewable)agentTreeView.SelectedNode.Tag;
     105        Control control = (Control)viewable.CreateView();
    89106        detailsGroupBox.Controls.Add(control);
    90107        control.Dock = DockStyle.Fill;
  • trunk/sources/HeuristicLab.CEDMA.Core/ConsoleEditor.cs

    r389 r393  
    3838    private Label projectLabel;
    3939    private Button newButton;
     40    private Timer refreshTimer;
     41    private System.ComponentModel.IContainer components;
    4042    private Console console;
    4143
     
    4648
    4749    private void InitializeComponent() {
     50      this.components = new System.ComponentModel.Container();
    4851      this.uriTextBox = new System.Windows.Forms.TextBox();
    4952      this.uriLabel = new System.Windows.Forms.Label();
     
    5457      this.projectLabel = new System.Windows.Forms.Label();
    5558      this.newButton = new System.Windows.Forms.Button();
     59      this.refreshTimer = new System.Windows.Forms.Timer(this.components);
    5660      this.tabControl.SuspendLayout();
    5761      this.SuspendLayout();
     
    135139      this.newButton.UseVisualStyleBackColor = true;
    136140      //
     141      // refreshTimer
     142      //
     143      this.refreshTimer.Interval = 3000;
     144      this.refreshTimer.Tick += new System.EventHandler(this.refreshTimer_Tick);
     145      //
    137146      // ConsoleEditor
    138147      //
     
    161170        agentsPage.Controls.Add((Control)console.AgentList.CreateView());
    162171        agentsPage.Controls[0].Dock = DockStyle.Fill;
     172        refreshTimer.Enabled = true;
    163173      } catch(CommunicationException ex) {
    164174        // TASK create helper class for error reporting
     
    166176      }
    167177    }
     178
     179    private void refreshTimer_Tick(object sender, EventArgs e) {
     180      refreshTimer.Stop();
     181      UpdateControls();
     182      refreshTimer.Enabled = true;
     183    }
    168184  }
    169185}
  • trunk/sources/HeuristicLab.CEDMA.Core/ConsoleEditor.resx

    r357 r393  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    119119  </resheader>
     120  <metadata name="refreshTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     121    <value>17, 17</value>
     122  </metadata>
    120123</root>
  • trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj

    r389 r393  
    6262      <SubType>UserControl</SubType>
    6363    </Compile>
     64    <Compile Include="Result.cs" />
    6465    <Compile Include="IResult.cs" />
    6566    <Compile Include="DbPersistenceManager.cs" />
  • trunk/sources/HeuristicLab.CEDMA.Core/IAgent.cs

    r389 r393  
    2828
    2929namespace HeuristicLab.CEDMA.Core {
    30   public interface IAgent : IDatabaseItem {
     30  public interface IAgent : IDatabaseItem, IViewable {
    3131    string Name { get; }
    3232    ProcessStatus Status { get; }
     
    3535    ICollection<IResult> Results { get; }
    3636    bool Terminated { get; }
    37    
     37    void Save();
    3838    void Start();
    3939  }
  • trunk/sources/HeuristicLab.CEDMA.Core/IDatabaseItem.cs

    r377 r393  
    3131    IDatabase Database { get; set; }
    3232    long Id { get; set; }
    33     void Save();
    3433  }
    3534}
  • trunk/sources/HeuristicLab.CEDMA.Core/IResult.cs

    r389 r393  
    2828
    2929namespace HeuristicLab.CEDMA.Core {
    30   public interface IResult : IDatabaseItem {
     30  public interface IResult : IDatabaseItem, IViewable {
    3131    string Summary { get; }
    3232    string Description { get; }
  • trunk/sources/HeuristicLab.CEDMA.DB/Database.cs

    r392 r393  
    298298          statusParameter.Value = status.ToString();
    299299          c.Parameters.Add(statusParameter);
    300 
    301300          SQLiteDataReader r = c.ExecuteReader();
    302301          while(r.Read()) {
     
    330329                agent.Id = r.GetInt32(0);
    331330                agent.ParentAgentId = r.IsDBNull(1) ? null : new Nullable<long>(r.GetInt32(1));
    332                 agent.Name = r.GetString(2);
     331                agent.Name = r.IsDBNull(2)?"-":r.GetString(2);
    333332                agent.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(3));
    334333                agent.ControllerAgent = r.GetBoolean(4);
     
    353352          using(DbCommand c = cnn.CreateCommand()) {
    354353            c.CommandText = "Select id, name, status, controllerAgent, rawdata from Agent where ParentAgentId=@ParentAgentId";
     354            DbParameter parentParameter = c.CreateParameter();
     355            parentParameter.ParameterName = "@ParentAgentId";
     356            parentParameter.Value = parentAgentId;
     357            c.Parameters.Add(parentParameter);
     358
    355359            using(DbDataReader r = c.ExecuteReader()) {
    356360              while(r.Read()) {
     
    358362                agent.ParentAgentId = parentAgentId;
    359363                agent.Id = r.GetInt32(0);
    360                 agent.Name = r.GetString(1);
     364                agent.Name = r.IsDBNull(1)?"-":r.GetString(1);
    361365                agent.Status = (ProcessStatus)Enum.Parse(typeof(ProcessStatus), r.GetString(2));
    362366                agent.ControllerAgent = r.GetBoolean(3);
  • trunk/sources/HeuristicLab.CEDMA.Operators/OnGridProcessor.cs

    r390 r393  
    4040      AddVariableInfo(new VariableInfo("AgentId", "Id of the agent that the run should be associated to.", typeof(IntData), VariableKind.In));
    4141      AddVariableInfo(new VariableInfo("OperatorGraph", "The operator graph that should be executed on the grid", typeof(IOperatorGraph), VariableKind.In));
    42       AddVariableInfo(new VariableInfo("ServerUrl", "Url of the CEDMA server", typeof(StringData), VariableKind.In));
     42      AddVariableInfo(new VariableInfo("CedmaServerUri", "Uri of the CEDMA server", typeof(StringData), VariableKind.In));
    4343    }
    4444
     
    4646     
    4747      IOperatorGraph operatorGraph = scope.GetVariableValue<IOperatorGraph>("OperatorGraph", false);
    48       string serverUrl = scope.GetVariableValue<StringData>("ServerUrl", true).Data;
     48      string serverUrl = scope.GetVariableValue<StringData>("CedmaServerUri", true).Data;
    4949      long agentId = scope.GetVariableValue<IntData>("AgentId", true).Data;
     50
     51      Agent agent = new Agent();
     52      foreach(IOperator op in operatorGraph.Operators) {
     53        agent.OperatorGraph.AddOperator(op);
     54      }
     55      agent.OperatorGraph.InitialOperator = operatorGraph.InitialOperator;
    5056
    5157      NetTcpBinding binding = new NetTcpBinding();
     
    5662      using(ChannelFactory<IDatabase> factory = new ChannelFactory<IDatabase>(binding)) {
    5763        IDatabase database = factory.CreateChannel(new EndpointAddress(serverUrl));
    58         long id = database.InsertAgent(agentId, null, false, DbPersistenceManager.Save(operatorGraph));
     64        long id = database.InsertAgent(agentId, null, false, DbPersistenceManager.Save(agent));
    5965        database.UpdateAgent(id, ProcessStatus.Waiting);
    6066      }
  • trunk/sources/HeuristicLab.CEDMA.Server/AgentScheduler.cs

    r390 r393  
    2929using System.Threading;
    3030using HeuristicLab.CEDMA.Core;
     31using HeuristicLab.Data;
    3132
    3233namespace HeuristicLab.CEDMA.Server {
     
    3536    private List<IEngine> engines;
    3637    private Dictionary<IEngine, AgentEntry> agent;
     38    private string serverUri;
    3739
    38     public AgentScheduler(Database database) {
     40    public AgentScheduler(Database database, string serverUri) {
    3941      this.database = database;
     42      this.serverUri = serverUri;
    4043      engines = new List<IEngine>();
    4144      agent = new Dictionary<IEngine, AgentEntry>();
     
    7477        engine.Reset();
    7578
     79        // initialize CEDMA variables for the execution of the agent
     80        engine.GlobalScope.AddVariable(new Variable("AgentId", new IntData((int)a.Id)));
     81        engine.GlobalScope.AddVariable(new Variable("CedmaServerUri", new StringData(serverUri)));
     82
    7683        agent[engine] = a;
    7784        engines.Add(engine);
  • trunk/sources/HeuristicLab.CEDMA.Server/HeuristicLab.CEDMA.Server.csproj

    r377 r393  
    8989      <Name>HeuristicLab.Core</Name>
    9090    </ProjectReference>
     91    <ProjectReference Include="..\HeuristicLab.Data\HeuristicLab.Data.csproj">
     92      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
     93      <Name>HeuristicLab.Data</Name>
     94    </ProjectReference>
    9195    <ProjectReference Include="..\HeuristicLab.Grid\HeuristicLab.Grid.csproj">
    9296      <Project>{545CE756-98D8-423B-AC2E-6E7D70926E5C}</Project>
  • trunk/sources/HeuristicLab.CEDMA.Server/RunScheduler.cs

    r392 r393  
    3131using HeuristicLab.Grid;
    3232using System.Diagnostics;
     33using HeuristicLab.Data;
    3334
    3435namespace HeuristicLab.CEDMA.Server {
     
    3940      public AtomicOperation Operation;
    4041    }
     42    private string serverUri;
    4143    private Database database;
    4244    private JobManager jobManager;
     
    4749    private AutoResetEvent runningJobs = new AutoResetEvent(false);
    4850
    49     public RunScheduler(Database database, JobManager jobManager) {
     51    public RunScheduler(Database database, JobManager jobManager, string serverUri) {
    5052      this.database = database;
    5153      this.jobManager = jobManager;
     54      this.serverUri = serverUri;
    5255      jobQueue = new Queue<Job>();
    5356      Thread resultsGatheringThread = new Thread(GatherResults);
     
    6669      }
    6770      foreach(AgentEntry entry in agents) {
    68         IOperatorGraph opGraph = (IOperatorGraph)DbPersistenceManager.Restore(entry.RawData);
    69         AtomicOperation op = new AtomicOperation(opGraph.InitialOperator, new Scope());
     71        Agent agent = (Agent)DbPersistenceManager.Restore(entry.RawData);
     72        IOperatorGraph opGraph = agent.OperatorGraph;
     73        Scope scope = new Scope();
     74        // initialize CEDMA variables for the execution of the agent
     75        scope.AddVariable(new Variable("AgentId", new IntData((int)entry.Id)));
     76        scope.AddVariable(new Variable("CedmaServerUri", new StringData(serverUri)));
     77        AtomicOperation op = new AtomicOperation(opGraph.InitialOperator, scope);
    7078        WaitHandle wHandle;
    7179        lock(remoteCommLock) {
  • trunk/sources/HeuristicLab.CEDMA.Server/ServerForm.cs

    r380 r393  
    5555
    5656    private void InitAgentScheduler() {
    57       AgentScheduler scheduler = new AgentScheduler(database);
     57      AgentScheduler scheduler = new AgentScheduler(database, addressTextBox.Text);
    5858      Thread agentSchedulerThread = new Thread(scheduler.Run);
    5959      agentSchedulerThread.Start();
     
    6363      JobManager jobManager = new JobManager(gridAddress.Text);
    6464      jobManager.Reset();
    65       RunScheduler scheduler = new RunScheduler(database, jobManager);
     65      RunScheduler scheduler = new RunScheduler(database, jobManager, addressTextBox.Text);
    6666      Thread runSchedulerThread = new Thread(scheduler.Run);
    6767      runSchedulerThread.Start();
Note: See TracChangeset for help on using the changeset viewer.