Skip to main content

brk_mempool/
diagnostics.rs

1//! Cycle-internal counters surfaced for observability and the
2//! `examples/mempool.rs` driver. Captured under a single read guard
3//! by `MempoolStats::from(&Mempool)`.
4
5use crate::Mempool;
6
7#[derive(Debug, Clone, Default)]
8pub struct MempoolStats {
9    pub txs: usize,
10    pub unresolved: usize,
11    pub addrs: usize,
12    pub outpoint_spends: usize,
13    pub graveyard_tombstones: usize,
14    pub graveyard_order: usize,
15    pub rebuilds: u64,
16}
17
18impl From<&Mempool> for MempoolStats {
19    fn from(mempool: &Mempool) -> Self {
20        let state = mempool.read();
21        let rebuilder = mempool.rebuilder();
22        Self {
23            txs: state.txs.len(),
24            unresolved: state.txs.unresolved().len(),
25            addrs: state.addrs.len(),
26            outpoint_spends: state.outpoint_spends.len(),
27            graveyard_tombstones: state.graveyard.tombstones_len(),
28            graveyard_order: state.graveyard.order_len(),
29            rebuilds: rebuilder.rebuild_count(),
30        }
31    }
32}