public void Add(BuildJobViewModel job) { if (!_coreMappedStartTimeSortedJobs.TryGetValue(job.OwnerCore, out var jobList)) { jobList = new SortedSet <BuildJobViewModel>(JobStartTimeComparer.Instance); _coreMappedStartTimeSortedJobs.Add(job.OwnerCore, jobList); } jobList.Add(job); if (_isLocalRaceDetectionAvailable && !job.OwnerCore.OwnerWorker.IsLocal) { if (_activeRemoteJobMap.ContainsKey(job.EventName)) { _isLocalRaceDetectionAvailable = false; } else { _activeRemoteJobMap.Add(job.EventName, job); } } ++this.JobCount; this.OnJobStarted?.Invoke(this, job); }
public BuildJobViewModel GetJobPotentiallyWonByLocalRace(BuildJobViewModel job) { if (!job.OwnerCore.OwnerWorker.IsLocal) { return(null); } _activeRemoteJobMap.TryGetValue(job.EventName, out var racedJob); return(racedJob); }
public void AddFirst(BuildJobViewModel job) { _mergedJobs.AddFirst(job); this.OnJobsChanged(); this.NotifyOfPropertyChange(nameof(this.StartTimeOffset)); }
public MergedBuildJobViewModel(BuildJobViewModel first, BuildJobViewModel last) { _mergedJobs = new LinkedList <BuildJobViewModel>(); _mergedJobs.AddLast(first); _mergedJobs.AddLast(last); }
public void NotifyJobFinished(BuildJobViewModel job) { this.OnJobFinished?.Invoke(this, job); _activeRemoteJobMap.Remove(job.EventName); // simply remove, doesn't matter if not existed }