mirror of
https://git.mentality.rip/numas13/xash3d-master.git
synced 2025-02-03 02:34:27 +00:00
Add packet enums
This commit is contained in:
parent
1a565872d7
commit
ce742f091d
@ -60,6 +60,26 @@ impl<'a> AdminCommand<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum Packet<'a> {
|
||||
AdminChallenge(AdminChallenge),
|
||||
AdminCommand(AdminCommand<'a>),
|
||||
}
|
||||
|
||||
impl<'a> Packet<'a> {
|
||||
pub fn decode(src: &'a [u8]) -> Result<Self, Error> {
|
||||
if let Ok(p) = AdminChallenge::decode(src) {
|
||||
return Ok(Self::AdminChallenge(p));
|
||||
}
|
||||
|
||||
if let Ok(p) = AdminCommand::decode(src) {
|
||||
return Ok(Self::AdminCommand(p));
|
||||
}
|
||||
|
||||
Err(Error::InvalidPacket)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -323,10 +323,7 @@ macro_rules! impl_put {
|
||||
impl<'a> CursorMut<'a> {
|
||||
pub fn new(buffer: &'a mut [u8]) -> Self {
|
||||
let (buffer, buffer_mut) = buffer.split_at_mut(0);
|
||||
Self {
|
||||
buffer,
|
||||
buffer_mut,
|
||||
}
|
||||
Self { buffer, buffer_mut }
|
||||
}
|
||||
|
||||
pub fn buffer(&self) -> &'a [u8] {
|
||||
|
@ -133,6 +133,31 @@ impl AdminChallengeResponse {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum Packet<'a> {
|
||||
ChallengeResponse(ChallengeResponse),
|
||||
QueryServersResponse(QueryServersResponse<&'a [u8]>),
|
||||
AdminChallengeResponse(AdminChallengeResponse),
|
||||
}
|
||||
|
||||
impl<'a> Packet<'a> {
|
||||
pub fn decode(src: &'a [u8]) -> Result<Self, Error> {
|
||||
if let Ok(p) = ChallengeResponse::decode(src) {
|
||||
return Ok(Self::ChallengeResponse(p));
|
||||
}
|
||||
|
||||
if let Ok(p) = QueryServersResponse::decode(src) {
|
||||
return Ok(Self::QueryServersResponse(p));
|
||||
}
|
||||
|
||||
if let Ok(p) = AdminChallengeResponse::decode(src) {
|
||||
return Ok(Self::AdminChallengeResponse(p));
|
||||
}
|
||||
|
||||
Err(Error::InvalidPacket)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
Loading…
x
Reference in New Issue
Block a user