ringline-quic 0.1.4

QUIC transport layer wrapping quinn-proto for ringline
Documentation

ringline-quic

QUIC protocol support via quinn-proto.

Wraps quinn-proto's sans-IO QUIC state machine and exposes an event-based [QuicEndpoint] API for use with ringline's UDP support.

Quick Start

use ringline_quic::{QuicConfig, QuicEndpoint, QuicEvent};

// Feed incoming datagrams:
quic.handle_datagram(Instant::now(), data, peer);
while let Some(event) = quic.poll_event() {
    match event {
        QuicEvent::NewConnection(conn) => { /* ... */ }
        QuicEvent::StreamReadable { conn, stream } => {
            let mut buf = [0u8; 4096];
            let (n, fin) = quic.stream_recv(conn, stream, &mut buf)?;
            quic.stream_send(conn, stream, &buf[..n])?;
        }
        _ => {}
    }
}
// Drain outgoing packets:
while let Some((dest, data)) = quic.poll_send() {
    udp.send_to(dest, &data)?;
}

Features

  • Event-driven API wrapping quinn-proto's sans-IO state machine
  • Connection and stream management
  • Integrates with ringline's UDP support (UdpCtx)