1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use super::ConcurrencyLimit; use tower_layer::Layer; /// Enforces a limit on the concurrent number of requests the underlying /// service can handle. #[derive(Debug, Clone)] pub struct ConcurrencyLimitLayer { max: usize, } impl ConcurrencyLimitLayer { /// Create a new concurrency limit layer. pub fn new(max: usize) -> Self { ConcurrencyLimitLayer { max } } } impl<S> Layer<S> for ConcurrencyLimitLayer { type Service = ConcurrencyLimit<S>; fn layer(&self, service: S) -> Self::Service { ConcurrencyLimit::new(service, self.max) } }