satex_layer/
concurrency_limit.rs

1#![doc = include_str!("../docs/concurrency_limit.md")]
2
3use crate::make::MakeRouteLayer;
4use satex_core::component::{Args, Configurable};
5use satex_core::Error;
6use satex_macro::make;
7use tower::limit::ConcurrencyLimitLayer;
8
9#[make(kind = ConcurrencyLimit)]
10struct MakeConcurrencyLimitRouteLayer {
11    max: usize,
12}
13
14impl MakeRouteLayer for MakeConcurrencyLimitRouteLayer {
15    type Layer = ConcurrencyLimitLayer;
16
17    fn make(&self, args: Args) -> Result<Self::Layer, Error> {
18        Config::with_args(args).map(|config| ConcurrencyLimitLayer::new(config.max))
19    }
20}