use std::time::Duration;
use http::{Extensions, Version};
use crate::{ConnectionKeepAlive, ConnectionPoolOptions, DEFAULT_CONNECT_TIMEOUT, Http2Options, RequestFilter};
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct TransportOptions {
pub connect_timeout: Duration,
pub connection_keep_alive: ConnectionKeepAlive,
pub request_filter: RequestFilter,
pub supported_http_versions: Vec<Version>,
pub connection_pool: ConnectionPoolOptions,
pub http_2: Http2Options,
pub extra: Extensions,
}
impl Default for TransportOptions {
fn default() -> Self {
Self {
connect_timeout: DEFAULT_CONNECT_TIMEOUT,
request_filter: RequestFilter::Https,
connection_keep_alive: ConnectionKeepAlive::default(),
supported_http_versions: vec![Version::HTTP_11, Version::HTTP_2],
connection_pool: ConnectionPoolOptions::default(),
http_2: Http2Options::default(),
extra: Extensions::default(),
}
}
}
#[cfg(test)]
mod tests {
use std::fmt::Debug;
use insta::assert_debug_snapshot;
use super::*;
#[cfg_attr(miri, ignore)]
#[test]
fn transport_options_default() {
assert_debug_snapshot!(TransportOptions::default());
}
#[cfg_attr(miri, ignore)]
#[test]
fn assert_transport_options_type() {
static_assertions::assert_impl_all!(
TransportOptions: Send,
Sync,
Clone,
Debug,
Default
);
}
}