comnoq 0.1.0-dev.2

QUIC for compio with noq backend
Documentation
use comnoq::ServerBuilder;
use compio::io::AsyncWrite;
use tracing_subscriber::EnvFilter;

#[compio::main]
async fn main() {
    tracing_subscriber::fmt()
        .with_env_filter(EnvFilter::from_default_env())
        .init();

    let rcgen::CertifiedKey { cert, signing_key } =
        rcgen::generate_simple_self_signed(vec!["localhost".into()]).unwrap();
    let cert = cert.der().clone();
    let key_der = signing_key.serialize_der().try_into().unwrap();

    let endpoint = ServerBuilder::new_with_single_cert(vec![cert], key_der)
        .unwrap()
        .with_key_log()
        .bind("[::1]:4433")
        .await
        .unwrap();

    if let Some(incoming) = endpoint.wait_incoming().await {
        let conn = incoming.await.unwrap();

        let (mut send, mut recv) = conn.accept_bi().await.unwrap();

        let (_, buf) = recv.read_to_end(vec![]).await.unwrap();
        println!("{buf:?}");

        send.write(&[4, 5, 6]).await.unwrap();
        send.finish().unwrap();

        conn.closed().await;
    }

    endpoint.close(0u32.into(), b"");
    endpoint.shutdown().await.unwrap();
}