- Timestamp:
- 03/06/09 14:21:11 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Hive.Server.Core/ClientCommunicator.cs
r1170 r1272 54 54 ILifecycleManager lifecycleManager; 55 55 IInternalJobManager jobManager; 56 IScheduler scheduler; 56 57 57 58 /// <summary> … … 67 68 jobManager = ServiceLocator.GetJobManager() as 68 69 IInternalJobManager; 70 scheduler = ServiceLocator.GetScheduler(); 69 71 70 72 lifecycleManager.RegisterHeartbeat( … … 187 189 188 190 response.Success = true; 189 response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_HARDBEAT_RECEIVED; 190 List<Job> allOfflineJobs = new List<Job>(jobAdapter.GetJobsByState(State.offline)); 191 if (allOfflineJobs.Count > 0 && hbData.freeCores > 0) 191 response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_HEARTBEAT_RECEIVED; 192 if (hbData.freeCores > 0 && scheduler.ExistsJobForClient(hbData)) 192 193 response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.FetchJob)); 193 194 else … … 225 226 public ResponseJob PullJob(Guid clientId) { 226 227 ResponseJob response = new ResponseJob(); 227 228 /// Critical section /// 229 jobLock.WaitOne(); 230 231 LinkedList<Job> allOfflineJobs = new LinkedList<Job>(jobAdapter.GetJobsByState(State.offline)); 232 if (allOfflineJobs != null && allOfflineJobs.Count > 0) { 233 Job job2Calculate = allOfflineJobs.First.Value; 234 job2Calculate.State = State.calculating; 235 job2Calculate.Client = clientAdapter.GetById(clientId); 236 job2Calculate.Client.State = State.calculating; 237 238 job2Calculate.DateCalculated = DateTime.Now; 228 229 Job job2Calculate = scheduler.GetNextJobForClient(clientId); 230 if (job2Calculate != null) { 239 231 response.Job = job2Calculate; 240 jobAdapter.Update(job2Calculate);241 232 response.Success = true; 242 233 response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_PULLED; 243 234 } else { 244 response.Success = true; 235 response.Success = false; 236 response.Job = null; 245 237 response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_NO_JOBS_LEFT; 246 238 } 247 248 jobLock.ReleaseMutex();249 /// End Critical section ///250 251 239 return response; 252 240 }
Note: See TracChangeset
for help on using the changeset viewer.