Struct Builder
pub struct Builder<E> { /* private fields */ }
A configuration builder for HTTP/2 server connections.
Note: The default values of options are not considered stable. They are subject to change at any time.
Implementations
impl<E> Builder<E>
fn new(exec: E) -> SelfCreate a new connection builder.
This starts with the default options, and an executor which is a type that implements
Http2ServerConnExectrait.fn max_pending_accept_reset_streams(&mut self, max: impl Into<Option<usize>>) -> &mut SelfConfigures the maximum number of pending reset streams allowed before a GOAWAY will be sent.
This will default to the default value set by the
h2crate. As of v0.4.0, it is 20.See https://github.com/hyperium/hyper/issues/2877 for more information.
fn max_local_error_reset_streams(&mut self, max: impl Into<Option<usize>>) -> &mut SelfConfigures the maximum number of local reset streams allowed before a GOAWAY will be sent.
If not set, hyper will use a default, currently of 1024.
If
Noneis supplied, hyper will not apply any limit. This is not advised, as it can potentially expose servers to DOS vulnerabilities.See https://rustsec.org/advisories/RUSTSEC-2024-0003.html for more information.
fn initial_stream_window_size(&mut self, sz: impl Into<Option<u32>>) -> &mut SelfSets the
SETTINGS_INITIAL_WINDOW_SIZEoption for HTTP2 stream-level flow control.Passing
Nonewill do nothing.If not set, hyper will use a default.
fn initial_connection_window_size(&mut self, sz: impl Into<Option<u32>>) -> &mut SelfSets the max connection-level flow control for HTTP2.
Passing
Nonewill do nothing.If not set, hyper will use a default.
fn adaptive_window(&mut self, enabled: bool) -> &mut SelfSets whether to use an adaptive flow control.
Enabling this will override the limits set in
initial_stream_window_sizeandinitial_connection_window_size.fn max_frame_size(&mut self, sz: impl Into<Option<u32>>) -> &mut SelfSets the maximum frame size to use for HTTP2.
Passing
Nonewill do nothing.If not set, hyper will use a default.
fn max_concurrent_streams(&mut self, max: impl Into<Option<u32>>) -> &mut SelfSets the
SETTINGS_MAX_CONCURRENT_STREAMSoption for HTTP2 connections.Default is 200, but not part of the stability of hyper. It could change in a future release. You are encouraged to set your own limit.
Passing
Nonewill remove any limit.fn keep_alive_interval(&mut self, interval: impl Into<Option<Duration>>) -> &mut SelfSets an interval for HTTP2 Ping frames should be sent to keep a connection alive.
Pass
Noneto disable HTTP2 keep-alive.Default is currently disabled.
fn keep_alive_timeout(&mut self, timeout: Duration) -> &mut SelfSets a timeout for receiving an acknowledgement of the keep-alive ping.
If the ping is not acknowledged within the timeout, the connection will be closed. Does nothing if
keep_alive_intervalis disabled.Default is 20 seconds.
fn max_send_buf_size(&mut self, max: usize) -> &mut SelfSet the maximum write buffer size for each HTTP/2 stream.
Default is currently ~400KB, but may change.
Panics
The value must be no larger than
u32::MAX.fn enable_connect_protocol(&mut self) -> &mut SelfEnables the extended CONNECT protocol.
fn header_table_size(&mut self, size: impl Into<Option<u32>>) -> &mut SelfSets the header table size.
This setting informs the peer of the maximum size of the header compression table used to encode header blocks, in octets. The encoder may select any value equal to or less than the header table size specified by the sender.
The default value of crate
h2is 4,096.fn max_header_list_size(&mut self, max: u32) -> &mut SelfSets the max size of received header frames.
Default is currently 16KB, but can change.
fn timer<M>(&mut self, timer: M) -> &mut Self where M: Timer + Send + Sync + 'static,Set the timer used in background tasks.
fn auto_date_header(&mut self, enabled: bool) -> &mut SelfSet whether the
dateheader should be included in HTTP responses.Note that including the
dateheader is recommended by RFC 7231.Default is true.
fn serve_connection<S, I, Bd>(&self, io: I, service: S) -> Connection<I, S, E> where S: HttpService<IncomingBody, ResBody = Bd>, S::Error: Into<Box<dyn StdError + Send + Sync>>, Bd: Body + 'static, Bd::Error: Into<Box<dyn StdError + Send + Sync>>, I: Read + Write + Unpin, E: Http2ServerConnExec<S::Future, Bd>,Bind a connection together with a
Service.This returns a Future that must be polled in order for HTTP to be driven on the connection.
Trait Implementations
impl<E: Clone> Clone for Builder<E>
fn clone(&self) -> Builder<E>
impl<E: Debug> Debug for Builder<E>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl<E> !RefUnwindSafe for Builder<E>
impl<E> !UnwindSafe for Builder<E>
impl<E> Freeze for Builder<E>
where
E: Freeze,
impl<E> Send for Builder<E>
where
E: Send,
impl<E> Sync for Builder<E>
where
E: Sync,
impl<E> Unpin for Builder<E>
where
E: Unpin,
impl<E> UnsafeUnpin for Builder<E>
where
E: UnsafeUnpin,
Blanket Implementations
impl<T> Any for Builder<E>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Builder<E>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Builder<E>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Builder<E>
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Builder<E>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> Instrument for Builder<E>
impl<T> ToOwned for Builder<E>
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T> WithSubscriber for Builder<E>
impl<T, U> Into<U> for Builder<E>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Builder<E>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Builder<E>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>