internal sealed class ElasticOpenTelemetryComponents()

in src/Elastic.OpenTelemetry.Core/ElasticOpenTelemetryComponents.cs [12:38]


internal sealed class ElasticOpenTelemetryComponents(
	CompositeLogger logger,
	LoggingEventListener loggingEventListener,
	CompositeElasticOpenTelemetryOptions options) : IDisposable, IAsyncDisposable
{
	public CompositeLogger Logger { get; } = logger;
	public LoggingEventListener LoggingEventListener { get; } = loggingEventListener;
	public CompositeElasticOpenTelemetryOptions Options { get; } = options;

	internal void SetAdditionalLogger(ILogger logger, SdkActivationMethod activationMethod)
	{
		if (logger is not NullLogger)
			Logger.SetAdditionalLogger(logger, activationMethod, this);
	}

	public void Dispose()
	{
		Logger.Dispose();
		LoggingEventListener.Dispose();
	}

	public async ValueTask DisposeAsync()
	{
		await Logger.DisposeAsync().ConfigureAwait(false);
		await LoggingEventListener.DisposeAsync().ConfigureAwait(false);
	}
}