internal static IOpenTelemetryBuilder WithElasticDefaultsCore()

in src/Elastic.OpenTelemetry/Extensions/OpenTelemetryBuilderExtensions.cs [113:138]


	internal static IOpenTelemetryBuilder WithElasticDefaultsCore(
		this IOpenTelemetryBuilder builder,
		CompositeElasticOpenTelemetryOptions options)
	{
		var callCount = Interlocked.Increment(ref WithElasticDefaultsCallCount);

		var providerBuilderName = builder.GetType().Name;

		var logger = SignalBuilder.GetLogger(builder, null, options, null);

		if (callCount > 1)
		{
			logger.LogMultipleWithElasticDefaultsCallsWarning(callCount, nameof(IOpenTelemetryBuilder));
		}

		// If for some reason `WithElasticDefaults` is invoked with the `Signals` option set to
		// none, we skip bootstrapping entirely. We log this as a warning since it's best to
		// simply not call `WithElasticDefaults` in this scenario and it may indicate a misconfiguration.
		if (options.Signals == Signals.None)
		{
			logger.LogSkippingBootstrapWarning();
			return builder;
		}

		return SignalBuilder.WithElasticDefaults(builder, options, null, builder.Services, ConfigureBuilder);
	}