comnoq 0.2.3

QUIC for compio with noq backend
Documentation
use std::sync::Arc;

use comnoq::{ClientBuilder, ClientConfig, ServerBuilder, ServerConfig, TransportConfig};
use compio_log::subscriber::DefaultGuard;
use tracing_subscriber::{EnvFilter, util::SubscriberInitExt};

pub fn subscribe() -> DefaultGuard {
    tracing_subscriber::fmt()
        .with_env_filter(EnvFilter::from_default_env())
        .finish()
        .set_default()
}

pub fn config_pair(transport: Option<TransportConfig>) -> (ServerConfig, ClientConfig) {
    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 mut server_config = ServerBuilder::new_with_single_cert(vec![cert.clone()], key_der)
        .unwrap()
        .build();
    let mut client_config = ClientBuilder::new_with_empty_roots()
        .with_custom_certificate(cert)
        .unwrap()
        .with_no_crls()
        .build();
    if let Some(transport) = transport {
        let transport = Arc::new(transport);
        server_config.transport_config(transport.clone());
        client_config.transport_config(transport);
    }
    (server_config, client_config)
}