aboutsummaryrefslogtreecommitdiff
path: root/src/limiter.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/limiter.rs')
-rw-r--r--src/limiter.rs37
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);
- }
-}