File: Telemetry\MetricsCollection.cs
Web Access
Project: src\src\vstest\src\Microsoft.TestPlatform.Common\Microsoft.TestPlatform.Common.csproj (Microsoft.VisualStudio.TestPlatform.Common)
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Concurrent;
using System.Collections.Generic;

using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;

namespace Microsoft.VisualStudio.TestPlatform.Common.Telemetry;

/// <inheritdoc />
/// <summary>
/// This Class will collect Metrics.
/// </summary>
public class MetricsCollection : IMetricsCollection
{
    private readonly ConcurrentDictionary<string, object> _metricDictionary;

    /// <summary>
    /// The Metrics Collection
    /// </summary>
    public MetricsCollection()
    {
        _metricDictionary = new ConcurrentDictionary<string, object>();
    }

    /// <summary>
    /// Add The Metrics
    /// </summary>
    /// <param name="metric"></param>
    /// <param name="value"></param>
    public void Add(string metric, object value)
    {
        _metricDictionary[metric] = value;
    }

    /// <summary>
    /// Returns the Metrics
    /// </summary>
    public IDictionary<string, object> Metrics => _metricDictionary;

    /// <summary>
    /// Clears the Metrics
    /// </summary>
    public void Clear()
    {
        _metricDictionary?.Clear();
    }
}