Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/30/10 13:56:28 (14 years ago)
Author:
cneumuel
Message:

Stabilization of Hive, Improvement HiveExperiment GUI (#1115)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs

    r4120 r4121  
    88using System.Collections;
    99using System.Threading;
     10using HeuristicLab.Hive.Contracts.Interfaces;
    1011
    1112namespace HeuristicLab.Hive.Server.ServerConsole {
     
    1516    public IEnumerable<State> PollStates {
    1617      get { return pollStates; }
    17     } 
     18    }
    1819
    1920    public event EventHandler NewDataAvailable;
     
    2425
    2526    public List<JobDto> CachedJobs { get; set; }
     27
     28    private IJobManager jobManager;
    2629
    2730    public double Interval {
     
    3639      }
    3740      set {
    38         Console.WriteLine("Setting for " + PollStates + " changed to: " + value);       
    39         _nrOfEntriesOnPage = value;       
     41        Console.WriteLine("Setting for " + PollStates + " changed to: " + value);
     42        _nrOfEntriesOnPage = value;
    4043        Thread t = new Thread(new ThreadStart(DoUpdateRun));
    41         t.Start();       
     44        t.Start();
    4245      }
    43     }   
     46    }
    4447    public int CurrentPage { get; set; }
    4548
     
    5053      CurrentPage = 0;
    5154      pollStates.AddRange(states);
     55      jobManager = ServiceLocator.GetJobManager();
    5256      timer = new System.Timers.Timer();
    5357      timer.Interval = 5000;
    54       timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);     
     58      timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
    5559    }
    5660
     
    6771        CurrentPage--;
    6872      DoUpdateRun();
    69     } 
     73    }
    7074
    7175    private void Timer_Elapsed(object sender, ElapsedEventArgs e) {
     
    7781      // todo: make access to PollStates thread-safe!
    7882      // * added lock on locker -> didn't help
    79       // * made public property PollStates an IEnumerable to be immutable -> lets see
    80       lock (locker) {
    81         foreach (State stat in PollStates) {
    82           ResponseList<JobDto> resList = ServiceLocator.GetJobManager().GetAllJobsWithFilter(stat, CurrentPage * NrOfEntriesOnPage,
    83                                                               NrOfEntriesOnPage);
    84           if (resList.Success) {
    85             if (resList.List.Count == 0) {
    86               if (CurrentPage > 0) {
    87                 CurrentPage--;
    88               }
    89             } else {
    90               CachedJobs = new List<JobDto>();
    91               CachedJobs.AddRange(resList.List);
     83      // * made public property PollStates an IEnumerable to be immutable -> didn't help
     84      // * using for loop
     85
     86      State[] pollStatesCopy = PollStates.ToArray();
     87      for (int i = 0; i < pollStatesCopy.Length; i++) {
     88        ResponseList<JobDto> resList = jobManager.GetAllJobsWithFilter(pollStatesCopy[i], CurrentPage * NrOfEntriesOnPage, NrOfEntriesOnPage);
     89        if (resList.Success) {
     90          if (resList.List.Count == 0) {
     91            if (CurrentPage > 0) {
     92              CurrentPage--;
    9293            }
     94          } else {
     95            CachedJobs = new List<JobDto>();
     96            CachedJobs.AddRange(resList.List);
    9397          }
    9498        }
    95         if (NewDataAvailable != null)
    96           NewDataAvailable(this, new EventArgs());
     99      }
     100      if (NewDataAvailable != null) {
     101        NewDataAvailable(this, new EventArgs());
    97102      }
    98103    }
Note: See TracChangeset for help on using the changeset viewer.