literustlib 0.4.0

Rust parser for LiteNetLib packets
Documentation
#[repr(u8)]
#[derive(Debug, Clone, Copy, num_enum::TryFromPrimitive, Eq, PartialEq)]
pub enum Property {
    Unreliable = 0,
    Reliable = 1,
    Sequenced = 2,
    ReliableOrdered = 3,
    AckReliable = 4,
    AckReliableOrdered = 5,
    Ping = 6,
    Pong = 7,
    ConnectRequest = 8,
    Dummy = 9,
    Disconnect = 10,
    UnconnectedMessage = 11,
    NatIntroductionRequest = 12,
    NatIntroduction = 13,
    NatPunchMessage = 14,
    MtuCheck = 15,
    MtuOk = 16,
    DiscoveryRequest = 17,
    DiscoveryResponse = 18,
    Merged = 19,
    StateUpdate = 20,
    Auth = 21,
    AckAuth = 22,
    NumProperties = 23,
}

impl Property {
    pub(crate) fn is_sequenced(&self) -> bool {
        matches!(self,
            Self::Reliable
            | Self::Sequenced
            | Self::ReliableOrdered
            | Self::AckReliable
            | Self::AckReliableOrdered
            | Self::Ping
            | Self::Pong
            | Self::StateUpdate
            | Self::Auth
            | Self::AckAuth
        )
    }

    pub(crate) fn is_client_data(&self) -> bool {
        matches!(self,
            Self::Unreliable
            | Self::Reliable
            | Self::Sequenced
            | Self::ReliableOrdered
        )
    }

    pub fn ack_equivalent(&self) -> Option<Self> {
        match self {
            Self::Reliable => Some(Self::AckReliable),
            Self::ReliableOrdered => Some(Self::AckReliableOrdered),
            Self::Auth => Some(Self::AckAuth),
            _ => None,
        }
    }
}