TeamCity.MSBuild.Logger/Statistics.cs (29 lines of code) (raw):
namespace TeamCity.MSBuild.Logger
{
using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using Pure.DI;
// ReSharper disable once ClassNeverInstantiated.Global
internal class Statistics : IStatistics
{
[NotNull] private readonly ILoggerContext _context;
private readonly Dictionary<StatisticsMode, IStatistics> _statistics;
public Statistics(
[NotNull] ILoggerContext context,
[NotNull][Tag(StatisticsMode.Default)] IStatistics defaultStatistics,
[NotNull][Tag(StatisticsMode.TeamCity)] IStatistics teamcityStatistics)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
_statistics = new Dictionary<StatisticsMode, IStatistics>
{
{ StatisticsMode.Default, defaultStatistics ?? throw new ArgumentNullException(nameof(defaultStatistics))},
{ StatisticsMode.TeamCity, teamcityStatistics ?? throw new ArgumentNullException(nameof(teamcityStatistics))}
};
}
private IStatistics CurrentStatistics => _statistics[_context.Parameters?.StatisticsMode ?? StatisticsMode.Default];
public void Publish()
{
CurrentStatistics.Publish();
}
}
}