public ResourceUsageSource()

in src/ServiceProfiler.EventPipe.Otel/Microsoft.ApplicationInsights.Profiler.Shared/Orchestrations/ResourceUsageSource.cs [35:99]


    public ResourceUsageSource(
        [FromKeyedServices(MetricsProviderCategory.CPU)]
        IMetricsProvider cpuMetricsProvider,
        [FromKeyedServices(MetricsProviderCategory.Memory)]
        IMetricsProvider memoryMetricsProvider,
        CpuTriggerSettings cpuTriggerSettings,
        MemoryTriggerSettings memoryTriggerSettings,
        ISerializationProvider serializer,
        IOptions<UserConfigurationBase> userConfigurations,
        ILogger<ResourceUsageSource> logger,
        ILoggerFactory loggerFactory)
    {
        _logger = logger ?? throw new ArgumentNullException(nameof(logger));
        _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));

        _userConfigurations = userConfigurations?.Value ?? throw new ArgumentNullException(nameof(userConfigurations));

        if (cpuMetricsProvider is null)
        {
            throw new ArgumentNullException(nameof(cpuMetricsProvider));
        }

        if (memoryMetricsProvider is null)
        {
            throw new ArgumentNullException(nameof(memoryMetricsProvider));
        }

        if (serializer is null)
        {
            throw new ArgumentNullException(nameof(serializer));
        }

        if (cpuTriggerSettings is null)
        {
            throw new ArgumentNullException(nameof(cpuTriggerSettings));
        }
        else
        {
            if (serializer.TrySerialize(cpuTriggerSettings, out string? serializedCpuTriggerSettings))
            {
                _logger.LogDebug("CPU Triggering settings: {settings}", serializedCpuTriggerSettings);
            }
        }

        if (memoryTriggerSettings is null)
        {
            throw new ArgumentNullException(nameof(memoryTriggerSettings));
        }
        else
        {
            if (serializer.TrySerialize(memoryTriggerSettings, out string? serializedMemoryTriggerSettings))
            {
                _logger.LogDebug("Memory Triggering settings: {settings}", serializedMemoryTriggerSettings);
            }
        }

        if (_userConfigurations.IsDisabled)
        {
            _logger.LogDebug("Resource usage monitoring is disabled because profiler is disabled.");
            return;
        }

        _cpuBaselineTracker = CreateAndStartCPUBaselineTracker(cpuTriggerSettings, cpuMetricsProvider);
        _memoryBaselineTracker = CreateAndStartMemoryBaselineTracker(memoryMetricsProvider, memoryTriggerSettings);
    }