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) -> Self

Create a new connection builder.

This starts with the default options, and an executor which is a type that implements Http2ServerConnExec trait.

fn max_pending_accept_reset_streams(&mut self, max: impl Into<Option<usize>>) -> &mut Self

Configures the maximum number of pending reset streams allowed before a GOAWAY will be sent.

This will default to the default value set by the h2 crate. 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 Self

Configures 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 None is 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 Self

Sets the SETTINGS_INITIAL_WINDOW_SIZE option for HTTP2 stream-level flow control.

Passing None will do nothing.

If not set, hyper will use a default.

fn initial_connection_window_size(&mut self, sz: impl Into<Option<u32>>) -> &mut Self

Sets the max connection-level flow control for HTTP2.

Passing None will do nothing.

If not set, hyper will use a default.

fn adaptive_window(&mut self, enabled: bool) -> &mut Self

Sets whether to use an adaptive flow control.

Enabling this will override the limits set in initial_stream_window_size and initial_connection_window_size.

fn max_frame_size(&mut self, sz: impl Into<Option<u32>>) -> &mut Self

Sets the maximum frame size to use for HTTP2.

Passing None will do nothing.

If not set, hyper will use a default.

fn max_concurrent_streams(&mut self, max: impl Into<Option<u32>>) -> &mut Self

Sets the SETTINGS_MAX_CONCURRENT_STREAMS option 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 None will remove any limit.

fn keep_alive_interval(&mut self, interval: impl Into<Option<Duration>>) -> &mut Self

Sets an interval for HTTP2 Ping frames should be sent to keep a connection alive.

Pass None to disable HTTP2 keep-alive.

Default is currently disabled.

fn keep_alive_timeout(&mut self, timeout: Duration) -> &mut Self

Sets 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_interval is disabled.

Default is 20 seconds.

fn max_send_buf_size(&mut self, max: usize) -> &mut Self

Set 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 Self

Enables the extended CONNECT protocol.

fn header_table_size(&mut self, size: impl Into<Option<u32>>) -> &mut Self

Sets 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 h2 is 4,096.

fn max_header_list_size(&mut self, max: u32) -> &mut Self

Sets 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 Self

Set whether the date header should be included in HTTP responses.

Note that including the date header 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) -> T

Returns 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) -> T
fn 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) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses 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>