use datasize::DataSize;
use prometheus::{self, IntGauge, Registry};
#[derive(DataSize, Debug, Clone)]
pub struct BlockProposerMetrics {
#[data_size(skip)]
pub(super) pending_deploys: IntGauge,
#[data_size(skip)]
registry: Registry,
}
impl BlockProposerMetrics {
pub fn new(registry: Registry) -> Result<Self, prometheus::Error> {
let pending_deploys = IntGauge::new("pending_deploy", "amount of pending deploys")?;
registry.register(Box::new(pending_deploys.clone()))?;
Ok(BlockProposerMetrics {
pending_deploys,
registry,
})
}
}
impl Drop for BlockProposerMetrics {
fn drop(&mut self) {
self.registry
.unregister(Box::new(self.pending_deploys.clone()))
.expect("did not expect deregistering pending_deploys to fail");
}
}