#[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,
}
}
}