Expand description
Tools for spawning an accept loop that routes incoming requests to the right protocol.
§Example
let endpoint = Endpoint::builder().discovery_n0().bind().await?;
let router = Router::builder(endpoint)
.accept(b"/my/alpn", Echo)
.spawn()
.await?;
// The protocol definition:
#[derive(Debug, Clone)]
struct Echo;
impl ProtocolHandler for Echo {
fn accept(&self, connecting: Connecting) -> BoxedFuture<Result<()>> {
Box::pin(async move {
let connection = connecting.await?;
let (mut send, mut recv) = connection.accept_bi().await?;
// Echo any bytes received back directly.
let bytes_sent = tokio::io::copy(&mut recv, &mut send).await?;
send.finish()?;
connection.closed().await;
Ok(())
})
}
}
Structs§
- The built router.
- Builder for creating a
Router
for accepting protocols.
Traits§
- Handler for incoming connections.