1 use std::sync::atomic::{AtomicU64, Ordering};
2 
3 #[derive(Default, Debug)]
4 pub(crate) struct AssociationStats {
5     n_datas: AtomicU64,
6     n_sacks: AtomicU64,
7     n_t3timeouts: AtomicU64,
8     n_ack_timeouts: AtomicU64,
9     n_fast_retrans: AtomicU64,
10 }
11 
12 impl AssociationStats {
inc_datas(&self)13     pub(crate) fn inc_datas(&self) {
14         self.n_datas.fetch_add(1, Ordering::SeqCst);
15     }
16 
get_num_datas(&self) -> u6417     pub(crate) fn get_num_datas(&self) -> u64 {
18         self.n_datas.load(Ordering::SeqCst)
19     }
20 
inc_sacks(&self)21     pub(crate) fn inc_sacks(&self) {
22         self.n_sacks.fetch_add(1, Ordering::SeqCst);
23     }
24 
get_num_sacks(&self) -> u6425     pub(crate) fn get_num_sacks(&self) -> u64 {
26         self.n_sacks.load(Ordering::SeqCst)
27     }
28 
inc_t3timeouts(&self)29     pub(crate) fn inc_t3timeouts(&self) {
30         self.n_t3timeouts.fetch_add(1, Ordering::SeqCst);
31     }
32 
get_num_t3timeouts(&self) -> u6433     pub(crate) fn get_num_t3timeouts(&self) -> u64 {
34         self.n_t3timeouts.load(Ordering::SeqCst)
35     }
36 
inc_ack_timeouts(&self)37     pub(crate) fn inc_ack_timeouts(&self) {
38         self.n_ack_timeouts.fetch_add(1, Ordering::SeqCst);
39     }
40 
get_num_ack_timeouts(&self) -> u6441     pub(crate) fn get_num_ack_timeouts(&self) -> u64 {
42         self.n_ack_timeouts.load(Ordering::SeqCst)
43     }
44 
inc_fast_retrans(&self)45     pub(crate) fn inc_fast_retrans(&self) {
46         self.n_fast_retrans.fetch_add(1, Ordering::SeqCst);
47     }
48 
get_num_fast_retrans(&self) -> u6449     pub(crate) fn get_num_fast_retrans(&self) -> u64 {
50         self.n_fast_retrans.load(Ordering::SeqCst)
51     }
52 
reset(&self)53     pub(crate) fn reset(&self) {
54         self.n_datas.store(0, Ordering::SeqCst);
55         self.n_sacks.store(0, Ordering::SeqCst);
56         self.n_t3timeouts.store(0, Ordering::SeqCst);
57         self.n_ack_timeouts.store(0, Ordering::SeqCst);
58         self.n_fast_retrans.store(0, Ordering::SeqCst);
59     }
60 }
61