diff options
Diffstat (limited to 'exes/ratelimit/src/buckets/mod.rs')
| -rw-r--r-- | exes/ratelimit/src/buckets/mod.rs | 13 |
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>>; +} |
