netstack3_base/testutil/
send_token.rs1use alloc::sync::Arc;
6use core::sync::atomic::{AtomicUsize, Ordering};
7
8#[derive(Debug, Default, Clone)]
10pub struct FakeSendTokenTracker(Arc<AtomicUsize>);
11
12impl FakeSendTokenTracker {
13 pub fn new() -> Self {
15 Self::default()
16 }
17
18 pub fn live_tokens(&self) -> usize {
20 self.0.load(Ordering::SeqCst)
21 }
22
23 pub fn token(&self) -> FakeSendToken {
25 let _: usize = self.0.fetch_add(1, Ordering::SeqCst);
26 FakeSendToken(self.0.clone())
27 }
28}
29
30#[derive(Debug, Default)]
32pub struct FakeSendToken(Arc<AtomicUsize>);
33
34impl Drop for FakeSendToken {
35 fn drop(&mut self) {
36 let _: usize = self.0.fetch_sub(1, Ordering::SeqCst);
37 }
38}