Changeset 1334


Ignore:
Timestamp:
03/12/09 14:39:22 (12 years ago)
Author:
msteinbi
Message:

Merging defaultscheduler and ischeduler (dummy check in) with correct version (#507)

Location:
trunk/sources
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Server.Core/ClientCommunicator.cs

    r1272 r1334  
    4646      new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
    4747
    48     private static Mutex jobLock =
    49       new Mutex();
    50 
    5148    IClientAdapter clientAdapter;
    5249    IJobAdapter jobAdapter;
  • trunk/sources/HeuristicLab.Hive.Server.Core/InternalInterfaces/IScheduler.cs

    r1284 r1334  
    1 using System;
     1#region License Information
     2/* HeuristicLab
     3 * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 *
     5 * This file is part of HeuristicLab.
     6 *
     7 * HeuristicLab is free software: you can redistribute it and/or modify
     8 * it under the terms of the GNU General Public License as published by
     9 * the Free Software Foundation, either version 3 of the License, or
     10 * (at your option) any later version.
     11 *
     12 * HeuristicLab is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16 *
     17 * You should have received a copy of the GNU General Public License
     18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
     19 */
     20#endregion
     21
     22using System;
    223using System.Collections.Generic;
    324using System.Linq;
  • trunk/sources/HeuristicLab.Hive.Server.Scheduler/DefaultScheduler.cs

    r1284 r1334  
    44using System.Text;
    55using HeuristicLab.Hive.Server.Core.InternalInterfaces;
     6using HeuristicLab.Hive.Contracts.BusinessObjects;
     7using HeuristicLab.Hive.Server.Core.InternalInterfaces.DataAccess;
     8using System.Threading;
    69
    710namespace HeuristicLab.Hive.Server.Scheduler {
    8   class DefaultScheduler : IScheduler {
     11  class DefaultScheduler: IScheduler {
     12
     13    IJobAdapter jobAdapter;
     14    IClientAdapter clientAdapter;
     15
     16    private static Mutex jobLock =
     17      new Mutex();
     18
    919    #region IScheduler Members
    1020
     21    public DefaultScheduler() {
     22      jobAdapter = ServiceLocator.GetJobAdapter();
     23      clientAdapter = ServiceLocator.GetClientAdapter();
     24    }
     25
    1126    public bool ExistsJobForClient(HeuristicLab.Hive.Contracts.BusinessObjects.HeartBeatData hbData) {
    12       throw new NotImplementedException();
     27      List<Job> allOfflineJobs = new List<Job>(jobAdapter.GetJobsByState(State.offline));
     28      return (allOfflineJobs.Count > 0);
    1329    }
    1430
    1531    public HeuristicLab.Hive.Contracts.BusinessObjects.Job GetNextJobForClient(Guid clientId) {
    16       throw new NotImplementedException();
     32
     33      /// Critical section ///
     34      jobLock.WaitOne();
     35
     36      LinkedList<Job> allOfflineJobs = new LinkedList<Job>(jobAdapter.GetJobsByState(State.offline));
     37
     38      Job job2Calculate = null;
     39      if (allOfflineJobs != null && allOfflineJobs.Count > 0) {
     40        job2Calculate = allOfflineJobs.First.Value;
     41        job2Calculate.State = State.calculating;
     42        job2Calculate.Client = clientAdapter.GetById(clientId);
     43        job2Calculate.Client.State = State.calculating;
     44
     45        job2Calculate.DateCalculated = DateTime.Now;
     46        jobAdapter.Update(job2Calculate);
     47      }
     48      jobLock.ReleaseMutex();
     49      /// End Critical section ///
     50
     51      return job2Calculate;
    1752    }
    1853
Note: See TracChangeset for help on using the changeset viewer.