private BuildStoreEventArgs GetBuildStoreEventIfAny(IBuildDetail build) { BuildStoreEventArgs buildStoreEvent; if (!cacheLookup.ContainsKey(build.Uri.AbsoluteUri)) { cacheLookup.Add(build.Uri.AbsoluteUri, build); buildStoreEvent = new BuildStoreEventArgs { Type = BuildStoreEventType.Build, Data = build }; return buildStoreEvent; } IBuildDetail originalBuild = cacheLookup[build.Uri.AbsoluteUri]; cacheLookup[build.Uri.AbsoluteUri] = build; if (originalBuild.Quality != build.Quality || originalBuild.Status != build.Status) { buildStoreEvent = new BuildStoreEventArgs { Data = build, Type = originalBuild.Quality != build.Quality ? BuildStoreEventType.QualityChanged : BuildStoreEventType.Build }; return buildStoreEvent; } return null; }
private void BuildCompletionEvent(BuildStoreEventArgs buildStoreEvent) { var status = buildStoreEvent.Data.Status; log.Information(string.Format("[Build Event] {0} : {1} : {2}", buildStoreEvent.Data.Status, buildStoreEvent.Data.BuildDefinition, buildStoreEvent.Data.Quality)); BuildStatuses[buildStoreEvent.Data.BuildDefinition.Name] = status; var checkAllBuildStatuses = !Properties.Settings.Default.ShowStatusOfLastBuildOnly; bool flashOnStatusChange = Properties.Settings.Default.FlashLightOnBuildStatusChange; int? flashDuration = Properties.Settings.Default.FlashLightOnBuildStatusChange ? 5 : new int?(); if ((checkAllBuildStatuses && BuildStatuses.All(b => b.Value == BuildStatus.Succeeded)) || (!checkAllBuildStatuses && status == BuildStatus.Succeeded)) { SetLED(DelcomBuildIndicator.GREENLED, true, flashOnStatusChange, flashDuration); SetLED(DelcomBuildIndicator.BLUELED, false, false); SetLED(DelcomBuildIndicator.REDLED, false, false); } if (status == BuildStatus.NotStarted || status == BuildStatus.InProgress) { if (Properties.Settings.Default.EnableDelcomLightColourChangeWhileBuilding) { SetLED(DelcomBuildIndicator.GREENLED, false, false); SetLED(DelcomBuildIndicator.BLUELED, true, Properties.Settings.Default.EnableDelcomFlashingWhileBuilding); SetLED(DelcomBuildIndicator.REDLED, false, false); } else if (flashOnStatusChange) { SetLED(DelcomBuildIndicator.BLUELED, true, true, flashDuration, true); } } if (status == BuildStatus.PartiallySucceeded) { SetLED(DelcomBuildIndicator.GREENLED, true, false); SetLED(DelcomBuildIndicator.BLUELED, false, false); SetLED(DelcomBuildIndicator.REDLED, true, flashOnStatusChange, flashDuration); } if (status == BuildStatus.Stopped) { // Don't care } if (status == BuildStatus.Failed) { SetLED(DelcomBuildIndicator.REDLED, true, flashOnStatusChange, flashDuration); SetLED(DelcomBuildIndicator.GREENLED, false, false); SetLED(DelcomBuildIndicator.BLUELED, false, false); } }
public void BuildQualityChangeEvent(BuildStoreEventArgs buildStoreEvent) { log.Information("[Quality Change Event]"); }
private void watcher_BuildQualityChangeEvent(object sender, BuildStoreEventArgs buildWatcherEventArgs) { BuildQualityChangeEvent(buildWatcherEventArgs); }
private void watcher_BuildCompletionEvent(object sender, BuildStoreEventArgs buildWatcherEventArgs) { BuildCompletionEvent(buildWatcherEventArgs); }
private void watcher_BuildQualityChangeEvent(object sender, BuildStoreEventArgs buildWatcherEventArgs) { const string qualityChangeMessage = "Build {0}, Quality {1}"; var data = buildWatcherEventArgs.Data; logger.Information(string.Format(qualityChangeMessage, data.BuildNumber, data.Quality)); }
private void watcher_BuildCompletionEvent(object sender, BuildStoreEventArgs buildWatcherEventArgs) { const string statusMessage = "Build {0}, Status {1}"; var data = buildWatcherEventArgs.Data; logger.Information(string.Format(statusMessage, data.BuildNumber, data.Status)); }
private void ProcessBuildEvent(BuildStoreEventArgs buildEvent) { switch (buildEvent.Type) { case BuildStoreEventType.Build: if (BuildCompletionEvent != null) BuildCompletionEvent(this, buildEvent); break; case BuildStoreEventType.QualityChanged: if (BuildQualityChangeEvent != null) BuildQualityChangeEvent(this, buildEvent); break; default: throw new Exception("Event was not recognised."); } }