diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-28 15:02:14 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-28 15:02:14 +0200 |
commit | 186bf476aeab0ff0838d1ae26a9dbcb2e40a8eb5 (patch) | |
tree | 384ed6e8faaacd77b1a5f4f11a251ee228f1e927 /src/limiter.rs | |
parent | 2bc557bbddb01b535dd8512fe3aadb0d4091a42d (diff) | |
download | gnix-186bf476aeab0ff0838d1ae26a9dbcb2e40a8eb5.tar gnix-186bf476aeab0ff0838d1ae26a9dbcb2e40a8eb5.tar.bz2 gnix-186bf476aeab0ff0838d1ae26a9dbcb2e40a8eb5.tar.zst |
what i invented here already existed: semaphore
Diffstat (limited to 'src/limiter.rs')
-rw-r--r-- | src/limiter.rs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/limiter.rs b/src/limiter.rs deleted file mode 100644 index 97bdb5c..0000000 --- a/src/limiter.rs +++ /dev/null @@ -1,37 +0,0 @@ -use std::sync::{atomic::AtomicUsize, Arc}; - -pub struct Limiter { - limit: usize, - counter: Arc<AtomicUsize>, -} - -impl Limiter { - pub fn new(limit: usize) -> Self { - Limiter { - counter: Default::default(), - limit, - } - } - pub fn obtain(&self) -> Option<LimitLock> { - let c = self - .counter - .fetch_add(1, std::sync::atomic::Ordering::Relaxed); - if c < self.limit { - Some(LimitLock { - counter: self.counter.clone(), - }) - } else { - None - } - } -} - -pub struct LimitLock { - counter: Arc<AtomicUsize>, -} -impl Drop for LimitLock { - fn drop(&mut self) { - self.counter - .fetch_sub(1, std::sync::atomic::Ordering::Relaxed); - } -} |