public ExecuteNewBuilds ( IList |
||
newBuildStatuses | IList |
|
Résultat | void |
public void ExecuteNewBuilds(IList<BuildStatus> newBuildStatuses)
{
try
{
ApplyUserMappings(newBuildStatuses);
SendCiServerConnectedEvents();
TryToGetAndSendNewSosOnlineAlerts();
var allBuildStatuses = BuildStatusUtil.Merge(_previousBuildStatuses, newBuildStatuses);
var changedBuildStatuses = GetChangedBuildStatuses(allBuildStatuses);
if (!changedBuildStatuses.Any())
{
if (_restarting)
InvokeRefreshStatus(allBuildStatuses);
return;
}
InvokeSetTrayIcon(changedBuildStatuses);
InvokeRefreshStatusIfAnythingChanged(allBuildStatuses, changedBuildStatuses);
AddAnyNewPeopleToSettings(changedBuildStatuses);
UpdateBuildNamesInSettingsIfAnyChanged(changedBuildStatuses);
var changedBuildStatusesAndTheirPreviousState = GetChangedBuildStatusesAndTheirPreviousState(changedBuildStatuses);
FireApplicableRulesEngineEvents(changedBuildStatusesAndTheirPreviousState);
WriteNewBuildsToSosDb(changedBuildStatusesAndTheirPreviousState);
NotifyIfNewAchievements(changedBuildStatuses);
InvokeStatsChanged(changedBuildStatuses);
SyncNewBuildsToSos(changedBuildStatuses);
InvokeNewNewsItemIfAny(changedBuildStatusesAndTheirPreviousState);
CacheBuildStatuses(changedBuildStatuses);
}
finally
{
_restarting = false;
}
}
public void RebuildSince(DateTime? since, Action<string> reportProgress) { try { var buildStatuses = _sosDb.ReadAll(); var sortedBuildStatuses = buildStatuses .Where(buildStatus => since == null || buildStatus.StartedTime > since) .OrderByDescending(buildStatus => buildStatus.LocalStartTime) .ToList(); var totalBuilds = sortedBuildStatuses.Count; var rulesEngine = new RulesEngine(_settings) { DisableSosOnline = true, DisableWritingToSosDb = true }; int i = 0; foreach (var buildStatus in sortedBuildStatuses) { rulesEngine.ExecuteNewBuilds(new List<BuildStatus> {buildStatus}); if (i%10 == 0) { reportProgress(string.Format("Processing {0}/{1}", i, totalBuilds)); } i++; } _settings.Save(); reportProgress("Completed reset successfully"); } catch (Exception ex) { _log.Error("Error in sync", ex); reportProgress("Error, check the logs. " + ex.Message); } }