Skip to content

[API Proposal]: Make the ResourceUtilization.Snapshot property public #5389

@evgenyfedorov2

Description

@evgenyfedorov2

Background and motivation

The Snapshot property of Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilization struct is internal, but I suggest making it public, so that any implementation of the public interface IResourceUtilizationPublisher would be able to access it. This is also required by for a 1P library and partners.

API Proposal

namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;

/// <summary>
/// Captures resource usage at a given point in time.
/// </summary>
[SuppressMessage("Performance", "CA1815:Override equals and operator equals on value types", Justification = "Comparing instances is not an expected scenario")]
public readonly struct ResourceUtilization
{
    public double CpuUsedPercentage { get; }
    public double MemoryUsedPercentage { get; }
    public ulong MemoryUsedInBytes { get; }
    public SystemResources SystemResources { get; }

-   internal Snapshot Snapshot { get; } = default;
+   public Snapshot Snapshot { get; } = default;

API Usage

// a custom implementation of IResourceUtilizationPublisher:
internal class MyCounterPublisher : IResourceUtilizationPublisher
{
    ...
    public ValueTask PublishAsync(ResourceUtilization utilization, CancellationToken cancellationToken)
    {
        ...
        utilization.Snapshot // do something with it.
   }
}

Alternative Designs

No response

Risks

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    api-approvedAPI was approved in API review, it can be implementedapi-suggestionEarly API idea and discussion, it is NOT ready for implementationarea-fundamentals

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions