Available on crate feature
h3 only.Expand description
This module provides methods to create a http/3 Server.
It allows to accept incoming requests, and send responses.
§Examples
§Simple example
async fn doc<C>(conn: C)
where
C: h3::quic::Connection<bytes::Bytes> + 'static,
<C as h3::quic::OpenStreams<bytes::Bytes>>::BidiStream: Send + 'static
{
let mut server_builder = h3::server::builder();
// Build the Connection
let mut h3_conn = server_builder.build(conn).await.unwrap();
loop {
// Accept incoming requests
match h3_conn.accept().await {
Ok(Some(resolver)) => {
// spawn a new task to handle the request
tokio::spawn(async move {
// get the request
let (req, mut stream) = resolver.resolve_request().await.unwrap();
// build a http response
let response = http::Response::builder().status(http::StatusCode::OK).body(()).unwrap();
// send the response to the wire
stream.send_response(response).await.unwrap();
// send some date
stream.send_data(bytes::Bytes::from("test")).await.unwrap();
// finnish the stream
stream.finish().await.unwrap();
});
}
Ok(None) => {
// break if no Request is accepted
break;
}
Err(err) => {
break;
}
}
}
}§File server
A ready-to-use example of a file server is available here
Structs§
- Builder
- Builder of HTTP/3 server connections.
- Connection
- Server connection driver
- Request
Resolver - Helper struct to await the request headers and return a
Requestobject - Request
Stream - Manage request and response transfer for an incoming request
Functions§
- builder
- Create a builder of HTTP/3 server connections