summaryrefslogtreecommitdiff
path: root/exes/ratelimit/src/buckets/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exes/ratelimit/src/buckets/mod.rs')
-rw-r--r--exes/ratelimit/src/buckets/mod.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/exes/ratelimit/src/buckets/mod.rs b/exes/ratelimit/src/buckets/mod.rs
index c86d623..5263765 100644
--- a/exes/ratelimit/src/buckets/mod.rs
+++ b/exes/ratelimit/src/buckets/mod.rs
@@ -1,4 +1,17 @@
+use std::{future::Future, pin::Pin, sync::Arc, time::Duration};
+
pub mod async_queue;
pub mod atomic_instant;
pub mod bucket;
+pub mod noop_lock;
pub mod redis_lock;
+
+pub trait GlobalLock: Send + Sync {
+ fn lock_for<'a>(
+ self: &'a Arc<Self>,
+ duration: Duration,
+ ) -> Pin<Box<dyn Future<Output = ()> + Send + 'a>>;
+ fn is_locked<'a>(
+ self: &'a Arc<Self>,
+ ) -> Pin<Box<dyn Future<Output = Option<Duration>> + Send + 'a>>;
+}