aws_config/default_provider/
timeout_config.rs

1/*
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6use crate::provider_config::ProviderConfig;
7use aws_smithy_types::timeout::TimeoutConfig;
8use std::time::Duration;
9
10const SDK_DEFAULT_CONNECT_TIMEOUT: Duration = Duration::from_millis(3100);
11
12/// Default [`TimeoutConfig`] provider chain
13///
14/// Unlike other credentials and region, [`TimeoutConfig`] has no related `TimeoutConfigProvider` trait. Instead,
15/// a builder struct is returned which has a similar API.
16///
17pub fn default_provider() -> Builder {
18    Builder::default()
19}
20
21/// Builder for [`TimeoutConfig`] that resolves the default timeout configuration
22#[non_exhaustive]
23#[derive(Debug, Default)]
24pub struct Builder;
25
26impl Builder {
27    /// Configure the default chain
28    ///
29    /// Exposed for overriding the environment when unit-testing providers
30    pub fn configure(self, _configuration: &ProviderConfig) -> Self {
31        self
32    }
33
34    /// Resolve default timeout configuration
35    pub async fn timeout_config(self) -> TimeoutConfig {
36        // TODO(https://github.com/smithy-lang/smithy-rs/issues/1732): Implement complete timeout defaults specification
37        TimeoutConfig::builder()
38            .connect_timeout(SDK_DEFAULT_CONNECT_TIMEOUT)
39            .build()
40    }
41}