use std::collections::HashMap;
pub trait HistogramMetric: Send + Sync + 'static {
fn config(&self) -> histogram::Config;
fn load(&self) -> Option<histogram::Histogram>;
}
pub trait CounterGroupMetric: Send + Sync + 'static {
fn entries(&self) -> usize;
fn counter_value(&self, idx: usize) -> Option<u64>;
fn load_counters(&self) -> Option<Vec<u64>>;
fn load_metadata(&self, idx: usize) -> Option<HashMap<String, String>>;
fn metadata_snapshot(&self) -> Vec<(usize, HashMap<String, String>)>;
}
pub trait GaugeGroupMetric: Send + Sync + 'static {
fn entries(&self) -> usize;
fn gauge_value(&self, idx: usize) -> Option<i64>;
fn load_gauges(&self) -> Option<Vec<i64>>;
fn load_metadata(&self, idx: usize) -> Option<HashMap<String, String>>;
fn metadata_snapshot(&self) -> Vec<(usize, HashMap<String, String>)>;
}
pub trait HistogramGroupMetric: Send + Sync + 'static {
fn entries(&self) -> usize;
fn config(&self) -> histogram::Config;
fn load_histogram(&self, idx: usize) -> Option<histogram::Histogram>;
fn load_all_histograms(&self) -> Option<Vec<histogram::Histogram>>;
fn load_metadata(&self, idx: usize) -> Option<HashMap<String, String>>;
fn metadata_snapshot(&self) -> Vec<(usize, HashMap<String, String>)>;
}