datacake_node/
statistics.rs1use std::ops::Deref;
2use std::sync::atomic::{AtomicU64, Ordering};
3use std::sync::Arc;
4
5pub type Counter = AtomicU64;
6
7#[derive(Debug, Clone, Default)]
8pub struct ClusterStatistics(Arc<ClusterStatisticsInner>);
10
11impl Deref for ClusterStatistics {
12 type Target = ClusterStatisticsInner;
13
14 fn deref(&self) -> &Self::Target {
15 &self.0
16 }
17}
18
19#[derive(Debug, Default)]
20pub struct ClusterStatisticsInner {
21 pub(crate) num_live_members: Counter,
23 pub(crate) num_dead_members: Counter,
25 pub(crate) num_data_centers: Counter,
27}
28
29impl ClusterStatisticsInner {
30 pub fn num_live_members(&self) -> u64 {
32 self.num_live_members.load(Ordering::Relaxed)
33 }
34
35 pub fn num_dead_members(&self) -> u64 {
37 self.num_dead_members.load(Ordering::Relaxed)
38 }
39
40 pub fn num_data_centers(&self) -> u64 {
42 self.num_data_centers.load(Ordering::Relaxed)
43 }
44}