public AggregatedRoleNameSource()

in src/ServiceProfiler.EventPipe.Otel/Microsoft.ApplicationInsights.Profiler.Shared/Services/RoleNames/AggregatedRoleNameSource.cs [12:42]


    public AggregatedRoleNameSource(
        IEnumerable<IRoleNameDetector> roleNameDetectors,
        ILogger<AggregatedRoleNameSource> logger
        )
    {
        _logger = logger ?? throw new System.ArgumentNullException(nameof(logger));

        if(!roleNameDetectors.Any())
        {
            _logger.LogWarning("There's no role name detector registered. The role name will be empty. This should not happen.");
        }

        foreach (IRoleNameDetector roleNameDetector in roleNameDetectors)
        {
            string roleName = roleNameDetector.GetRoleName()?? string.Empty;
            _logger.LogDebug("Role name detector {detector} returned role name: {roleName}", roleNameDetector.GetType().Name, roleName);

            if (string.IsNullOrEmpty(roleName))
            {
                // Try the next detector.
                continue;
            }

            // We have a non-empty role name. This is the effective role name.
            CloudRoleName = roleName;
            return;
        }

        _logger.LogWarning("Cloud role name is effectively empty. No role name detector returned a non-empty value.");
        CloudRoleName = string.Empty;
    }