satex_layer/
timeout.rs

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}