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);
        }
Esempio n. 3
0
 public void AddFirst(BuildJobViewModel job)
 {
     _mergedJobs.AddFirst(job);
     this.OnJobsChanged();
     this.NotifyOfPropertyChange(nameof(this.StartTimeOffset));
 }
Esempio n. 4
0
 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
        }