use std::time::Duration;
use opentelemetry::global;
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
use crate::error::{TransportError, TransportResult};
pub fn init_metrics(endpoint: &str) -> TransportResult<SdkMeterProvider> {
let exporter = opentelemetry_otlp::MetricExporter::builder()
.with_tonic()
.with_endpoint(endpoint)
.build()
.map_err(|e| {
TransportError::config(format!("Failed to create OTLP metrics exporter: {e}"))
})?;
let reader = PeriodicReader::builder(exporter)
.with_interval(Duration::from_secs(15))
.build();
let provider = SdkMeterProvider::builder().with_reader(reader).build();
global::set_meter_provider(provider.clone());
Ok(provider)
}