pub struct StatsCollector { /* private fields */ }Expand description
Thread-safe in-memory stats collector.
All public methods are non-async. The hot path (record_resolve,
record_update) holds a mutex only briefly for HashMap update.
Aggregate reads are fully lock-free via atomics.
Implementations§
Source§impl StatsCollector
impl StatsCollector
pub fn new() -> StatsCollector
Sourcepub fn seed_aggregate(&self, agg: &StatsAggregate)
pub fn seed_aggregate(&self, agg: &StatsAggregate)
Seed the aggregate with values (e.g. loaded from storage at startup).
pub fn set_total_dids(&self, count: u64)
pub fn increment_total_dids(&self)
pub fn decrement_total_dids(&self)
Sourcepub fn apply_deltas(
&self,
resolve_delta: u64,
update_delta: u64,
last_resolved_at: Option<u64>,
last_updated_at: Option<u64>,
)
pub fn apply_deltas( &self, resolve_delta: u64, update_delta: u64, last_resolved_at: Option<u64>, last_updated_at: Option<u64>, )
Increment aggregate counters by the given deltas.
Sourcepub fn record_resolve(&self, mnemonic: &str)
pub fn record_resolve(&self, mnemonic: &str)
Record a DID resolve event. Nanosecond cost, no I/O.
Sourcepub fn record_update(&self, mnemonic: &str)
pub fn record_update(&self, mnemonic: &str)
Record a DID update/publish event. Nanosecond cost, no I/O.
Sourcepub fn record_deltas(
&self,
mnemonic: &str,
resolve_delta: u64,
update_delta: u64,
last_resolved_at: Option<u64>,
last_updated_at: Option<u64>,
)
pub fn record_deltas( &self, mnemonic: &str, resolve_delta: u64, update_delta: u64, last_resolved_at: Option<u64>, last_updated_at: Option<u64>, )
Record arbitrary deltas for a DID (used by the control plane when receiving sync data from servers). Updates per-DID map, buckets, and aggregates.
Sourcepub fn drain_for_sync(&self) -> Vec<DidStatsDelta>
pub fn drain_for_sync(&self) -> Vec<DidStatsDelta>
Drain all accumulated per-DID deltas for sync to the control plane.
Sourcepub fn drain_buckets(&self) -> Vec<DrainedBucket>
pub fn drain_buckets(&self) -> Vec<DrainedBucket>
Drain all accumulated time-series bucket deltas.
Sourcepub fn get_aggregate(&self) -> StatsAggregate
pub fn get_aggregate(&self) -> StatsAggregate
Get the current server-wide aggregate (instant, lock-free).