use prometheus::{IntGauge, Registry};
use crate::unregister_metric;
#[derive(Debug)]
pub(super) struct Metrics {
pub(super) block_acceptors: IntGauge,
pub(super) known_child_blocks: IntGauge,
registry: Registry,
}
impl Metrics {
pub fn new(registry: &Registry) -> Result<Self, prometheus::Error> {
let block_acceptors = IntGauge::new(
"block_accumulator_block_acceptors".to_string(),
"number of block acceptors in the Block Accumulator".to_string(),
)?;
let known_child_blocks = IntGauge::new(
"block_accumulator_known_child_blocks".to_string(),
"number of blocks received by the Block Accumulator for which we know the hash of the child block".to_string(),
)?;
registry.register(Box::new(block_acceptors.clone()))?;
registry.register(Box::new(known_child_blocks.clone()))?;
Ok(Metrics {
block_acceptors,
known_child_blocks,
registry: registry.clone(),
})
}
}
impl Drop for Metrics {
fn drop(&mut self) {
unregister_metric!(self.registry, self.block_acceptors);
unregister_metric!(self.registry, self.known_child_blocks);
}
}