pub struct Http2<Io> { /* private fields */ }Available on crate feature
h2 only.Expand description
An HTTP/2 connection handler.
Http2 wraps an async I/O stream (Io) and drives the HTTP/2 server
connection using the h2 crate. It supports:
- Concurrent request stream handling
- Streaming request/response bodies and trailers
- Automatic
100 Continueand103 Early Hintsinterim responses - Per-connection
Dateheader caching - Graceful shutdown via a
CancellationToken
§Construction
ⓘ
let http2 = Http2::new(tcp_stream, Http2Options::default());§Serving requests
Use the HttpProtocol trait methods (handle /
handle_with_error_fn) to drive the
connection to completion.
Implementations§
Source§impl<Io> Http2<Io>
impl<Io> Http2<Io>
Sourcepub fn new(io: Io, options: Http2Options) -> Self
pub fn new(io: Io, options: Http2Options) -> Self
Creates a new Http2 connection handler wrapping the given I/O stream.
The options value controls HTTP/2 protocol configuration, handshake
and accept timeouts, and optional behaviour such as automatic
100 Continue responses; see Http2Options for details.
§Example
ⓘ
let http2 = Http2::new(tcp_stream, Http2Options::default());Sourcepub fn graceful_shutdown_token(self, token: CancellationToken) -> Self
pub fn graceful_shutdown_token(self, token: CancellationToken) -> Self
Attaches a CancellationToken for graceful shutdown.
When the token is cancelled, the handler sends HTTP/2 graceful shutdown signals (GOAWAY), stops accepting new streams, and exits cleanly.
Trait Implementations§
Source§impl<Io> HttpProtocol for Http2<Io>
impl<Io> HttpProtocol for Http2<Io>
fn handle<F, Fut, ResB, ResBE, ResE>( self, request_fn: F, ) -> impl Future<Output = Result<(), Error>>
fn handle_with_error_fn<F, Fut, ResB, ResBE, ResE, EF, EFut, EResB, EResBE, EResE>(
self,
request_fn: F,
error_fn: EF,
) -> impl Future<Output = Result<(), Error>>where
F: Fn(Request<Incoming>) -> Fut + 'static,
Fut: Future<Output = Result<Response<ResB>, ResE>> + 'static,
ResB: Body<Data = Bytes, Error = ResBE> + Unpin + 'static,
ResE: Error,
ResBE: Error,
EF: FnOnce(bool) -> EFut,
EFut: Future<Output = Result<Response<EResB>, EResE>>,
EResB: Body<Data = Bytes, Error = EResBE> + Unpin + 'static,
EResE: Error,
EResBE: Error,
Auto Trait Implementations§
impl<Io> Freeze for Http2<Io>where
Io: Freeze,
impl<Io> !RefUnwindSafe for Http2<Io>
impl<Io> !Send for Http2<Io>
impl<Io> !Sync for Http2<Io>
impl<Io> Unpin for Http2<Io>where
Io: Unpin,
impl<Io> UnsafeUnpin for Http2<Io>where
Io: UnsafeUnpin,
impl<Io> !UnwindSafe for Http2<Io>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more