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

#if NETFRAMEWORK
using System;
#endif

namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;

/// <summary>
/// Encapsulates the context of the environment a data collector is being hosted in.
/// </summary>
#if NETFRAMEWORK
[Serializable]
#endif
public sealed class DataCollectionEnvironmentContext
{
    /// <summary>
    /// Serialization Constructor
    /// </summary>
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
    private DataCollectionEnvironmentContext()
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
    {
    }

    /// <summary>
    /// Initializes with the DataCollectionContext
    /// </summary>
    public DataCollectionEnvironmentContext(DataCollectionContext sessionDataCollectionContext)
    {
        SessionDataCollectionContext = sessionDataCollectionContext;
    }

    /// <summary>
    /// Creates an environment context for a local (hosted) agent and controller
    /// </summary>
    /// <returns>An environment context for a local (hosted) agent and controller</returns>
    public static DataCollectionEnvironmentContext CreateForLocalEnvironment()
    {
        // TODO: This API appears unused, can we remove it?
        return CreateForLocalEnvironment(null!);
    }

    /// <summary>
    /// Creates an environment context for a local (hosted) agent and controller
    /// </summary>
    /// <param name="sessionDataCollectionContext">Session level data collection context.</param>
    /// <returns>An environment context for a local (hosted) agent and controller</returns>
    public static DataCollectionEnvironmentContext CreateForLocalEnvironment(DataCollectionContext sessionDataCollectionContext)
    {
        var dataCollectionEnvironmentContext = new DataCollectionEnvironmentContext(sessionDataCollectionContext);

        return dataCollectionEnvironmentContext;
    }

    /// <summary>
    /// DataCollectionContext for the session.
    /// </summary>
    public DataCollectionContext SessionDataCollectionContext { get; private set; }

}