public BuildTreeBuildsDelta(IEnumerable <IBuildNode> currentBuildNodes, IReadOnlyDictionary <CacheKey, BuildStatus>?previousStatesOfBuildIds, PartialSucceededTreatmentMode partialSucceededTreatmentMode) { // without information of the previous state, a delta is not possible to calculate if (previousStatesOfBuildIds == null) { return; } foreach (var newBuild in currentBuildNodes) { if (previousStatesOfBuildIds.TryGetValue(newBuild.Build.CacheKey(), out var previousStatus)) { if (previousStatus != newBuild.Status) { AddToDelta(newBuild); } } else { AddToDelta(newBuild); } } void AddToDelta(IBuildNode buildNode) { switch (buildNode.Status) { case BuildStatus.Cancelled: CancelledBuilds.Add(buildNode); break; case BuildStatus.Failed: FailedBuilds.Add(buildNode); break; case BuildStatus.Succeeded: SucceededBuilds.Add(buildNode); break; case BuildStatus.PartiallySucceeded: switch (partialSucceededTreatmentMode) { case PartialSucceededTreatmentMode.TreatAsSucceeded: SucceededBuilds.Add(buildNode); break; case PartialSucceededTreatmentMode.TreatAsFailed: FailedBuilds.Add(buildNode); break; } break; } } }
public void Clear() { FailedBuilds.Clear(); SucceededBuilds.Clear(); CancelledBuilds.Clear(); }
public void RemoveNode(IBuildNode node) { FailedBuilds.Remove(node); CancelledBuilds.Remove(node); SucceededBuilds.Remove(node); }