use std::{collections::HashMap, sync::Arc};
use super::{Counter, GaugeVec, TelemetryConfig, TelemetryError};
pub trait TelemetryService: Send + Sync {
fn new(config: TelemetryConfig) -> Arc<Self>
where
Self: Sized;
#[allow(dead_code)]
fn register_f64_counter(
&self,
name: &str,
help: &str,
labels: Option<HashMap<String, String>>,
) -> Result<Arc<dyn Counter<f64>>, TelemetryError>;
fn register_u64_counter(
&self,
name: &str,
help: &str,
labels: Option<HashMap<String, String>>,
) -> Result<Arc<dyn Counter<u64>>, TelemetryError>;
fn register_u64_gauge_vec(
&self,
_name: &str,
_help: &str,
_label_names: &[&str],
) -> Result<Arc<dyn GaugeVec<u64>>, TelemetryError> {
Err(TelemetryError::RegisterGaugeError(
"register_u64_gauge_vec not implemented for this TelemetryService backend".to_string(),
))
}
fn get_feed(&self) -> Result<String, TelemetryError>;
fn service_name(&self) -> String;
fn ip_address(&self) -> String;
}