#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)]
#[non_exhaustive]
pub enum Version {
WebTransport,
QMux00,
QMux01,
QMux02,
}
impl Version {
pub fn is_qmux(self) -> bool {
matches!(self, Version::QMux00 | Version::QMux01 | Version::QMux02)
}
pub fn uses_records(self) -> bool {
matches!(self, Version::QMux01 | Version::QMux02)
}
pub fn alpn(self) -> &'static str {
match self {
Version::WebTransport => "webtransport",
Version::QMux00 => "qmux-00",
Version::QMux01 => "qmux-01",
Version::QMux02 => "qmux-02",
}
}
pub fn prefix(self) -> &'static str {
match self {
Version::WebTransport => "webtransport.",
Version::QMux00 => "qmux-00.",
Version::QMux01 => "qmux-01.",
Version::QMux02 => "qmux-02.",
}
}
pub const ALL: &[Version] = &[
Version::QMux02,
Version::QMux01,
Version::QMux00,
Version::WebTransport,
];
}