1#![doc = include_str!("../docs/timeout.md")]
2
3use crate::make::MakeRouteLayer;
4use satex_core::component::{Args, Configurable};
5use satex_core::Error;
6use satex_macro::make;
7use std::time::Duration;
8use tower_http::timeout::TimeoutLayer;
9
10#[make(kind = Timeout)]
11struct MakeTimeoutRouteLayer {
12 timeout: u64,
13}
14
15impl MakeRouteLayer for MakeTimeoutRouteLayer {
16 type Layer = TimeoutLayer;
17
18 fn make(&self, args: Args) -> Result<Self::Layer, Error> {
19 Config::with_args(args)
20 .map(|config| TimeoutLayer::new(Duration::from_millis(config.timeout)))
21 }
22}