diff options
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); - } -} |