use crate::metrics::snapshots::{AppMetricsSnapshot, InfraMetricsSnapshot};
use std::error::Error;
pub trait MetricsExporter: Send + Sync {
fn update_app_metrics(
&self,
snapshot: AppMetricsSnapshot,
) -> Result<(), Box<dyn Error + Send + Sync>> {
let _ = snapshot;
Ok(())
}
fn update_infra_metrics(
&self,
snapshot: InfraMetricsSnapshot,
) -> Result<(), Box<dyn Error + Send + Sync>> {
let _ = snapshot;
Ok(())
}
fn render_metrics(&self) -> Result<String, Box<dyn Error + Send + Sync>>;
fn metric_count(&self) -> usize {
0 }
}
pub struct NoOpMetricsExporter;
impl MetricsExporter for NoOpMetricsExporter {
fn render_metrics(&self) -> Result<String, Box<dyn Error + Send + Sync>> {
Ok(String::from("# Metrics disabled\n"))
}
}