public TraceChannel()

in src/Elastic.Ingest.OpenTelemetry/CustomOtlpTraceExporter.cs [65:94]


	public TraceChannel(TraceChannelOptions options, ICollection<IChannelCallbacks<Activity, TraceExportResult>>? callbackListeners)
		: base(options, callbackListeners) {
		var o = new OtlpExporterOptions
		{
			Endpoint = options.Endpoint ?? new Uri("http://localhost:4317"),
			Headers = $"Authorization=Bearer {options.SecretToken}"
		};
		TraceExporter = new CustomOtlpTraceExporter(o, options);
            Processor = new CustomActivityProcessor(TraceExporter,
			maxExportBatchSize: options.BufferOptions.OutboundBufferMaxSize,
			maxQueueSize: options.BufferOptions.InboundBufferMaxSize,
			scheduledDelayMilliseconds: (int)options.BufferOptions.OutboundBufferMaxLifetime.TotalMilliseconds,
			exporterTimeoutMilliseconds: (int)options.BufferOptions.OutboundBufferMaxLifetime.TotalMilliseconds
		);
		var bufferType = typeof(BaseExporter<>).Assembly.GetTypes().First(t=>t.Name == "CircularBuffer`1");
		var activityBuffer = bufferType.GetGenericTypeDefinition().MakeGenericType(typeof(Activity));
		var bufferTypeConstructor = activityBuffer.GetConstructors().First();
		var bufferAddMethod = bufferType.GetMethod("Add");

		var batchType = typeof(Batch<Activity>);
		var batchConstructor = batchType.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).First(c=>c.GetParameters().Length == 2);

		BatchCreator = (page) =>
		{
			var buffer = bufferTypeConstructor.Invoke(new object[] {options.BufferOptions.OutboundBufferMaxSize });
			bufferAddMethod.Invoke(buffer, new[] { page });
			var batch = (Batch<Activity>)batchConstructor.Invoke(new[] {buffer, options.BufferOptions.OutboundBufferMaxSize });
			return batch;
		};
	}