use std::net::SocketAddr;
use bytes::Bytes;
use quinn_proto::{ConnectionError, Dir, StreamId, VarInt};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct QuicConnId(pub(crate) u32);
impl QuicConnId {
pub fn index(&self) -> usize {
self.0 as usize
}
}
#[derive(Debug)]
#[non_exhaustive]
pub enum QuicEvent {
NewConnection(QuicConnId),
Connected(QuicConnId),
StreamOpened {
conn: QuicConnId,
stream: StreamId,
bidi: bool,
},
StreamReadable { conn: QuicConnId, stream: StreamId },
StreamWritable { conn: QuicConnId, stream: StreamId },
StreamFinished { conn: QuicConnId, stream: StreamId },
StreamStopped {
conn: QuicConnId,
stream: StreamId,
error_code: VarInt,
},
StreamsAvailable { conn: QuicConnId, dir: Dir },
DatagramReceived { conn: QuicConnId, data: Bytes },
DatagramsUnblocked { conn: QuicConnId },
HandshakeDataReady { conn: QuicConnId },
ZeroRttRejected { conn: QuicConnId },
PeerAddressChanged {
conn: QuicConnId,
previous: SocketAddr,
current: SocketAddr,
},
ConnectionClosed {
conn: QuicConnId,
reason: ConnectionError,
},
}