use std::time::Duration;
use crate::h2::codec::{DEFAULT_INITIAL_WINDOW_SIZE, DEFAULT_MAX_FRAME_SIZE};
#[derive(Debug, Clone)]
pub struct Http2Options {
pub(crate) handshake_timeout: Option<Duration>,
pub(crate) send_continue_response: bool,
pub(crate) send_date_header: bool,
pub(crate) max_concurrent_streams: u32,
pub(crate) initial_stream_window_size: u32,
pub(crate) initial_connection_window_size: u32,
pub(crate) max_frame_size: u32,
pub(crate) max_header_list_size: u32,
pub(crate) enable_connect_protocol: bool,
pub(crate) idle_timeout: Option<Duration>,
}
impl Default for Http2Options {
#[inline]
fn default() -> Self {
Http2Options {
handshake_timeout: Some(Duration::from_secs(10)),
send_continue_response: true,
send_date_header: true,
max_concurrent_streams: 200,
initial_stream_window_size: DEFAULT_INITIAL_WINDOW_SIZE,
initial_connection_window_size: DEFAULT_INITIAL_WINDOW_SIZE,
max_frame_size: DEFAULT_MAX_FRAME_SIZE as u32,
max_header_list_size: 1024 * 16,
enable_connect_protocol: false,
idle_timeout: None,
}
}
}
impl Http2Options {
#[inline]
pub fn handshake_timeout(mut self, handshake_timeout: Option<Duration>) -> Self {
self.handshake_timeout = handshake_timeout;
self
}
#[inline]
pub fn send_continue_response(mut self, send_continue_response: bool) -> Self {
self.send_continue_response = send_continue_response;
self
}
#[inline]
pub fn send_date_header(mut self, send_date_header: bool) -> Self {
self.send_date_header = send_date_header;
self
}
#[inline]
pub fn max_concurrent_streams(mut self, max_concurrent_streams: u32) -> Self {
self.max_concurrent_streams = max_concurrent_streams;
self
}
#[inline]
pub fn initial_stream_window_size(mut self, initial_stream_window_size: u32) -> Self {
self.initial_stream_window_size = initial_stream_window_size;
self
}
#[inline]
pub fn initial_connection_window_size(mut self, initial_connection_window_size: u32) -> Self {
self.initial_connection_window_size = initial_connection_window_size;
self
}
#[inline]
pub fn max_frame_size(mut self, max_frame_size: u32) -> Self {
self.max_frame_size = max_frame_size;
self
}
#[inline]
pub fn max_header_list_size(mut self, max_header_list_size: u32) -> Self {
self.max_header_list_size = max_header_list_size;
self
}
#[inline]
pub fn enable_connect_protocol(mut self, enable: bool) -> Self {
self.enable_connect_protocol = enable;
self
}
#[inline]
pub fn idle_timeout(mut self, idle_timeout: Option<Duration>) -> Self {
self.idle_timeout = idle_timeout;
self
}
}