adds command registration

This commit is contained in:
2025-11-30 08:50:35 -08:00
parent d53d78434c
commit ea56b9865e
5 changed files with 76 additions and 92 deletions

View File

@@ -1,4 +1,5 @@
use crate::command::{Command, CommandHeader};
use crate::udp::UdpRecvPostcardError::ExtraData;
use crate::udp::UdpSendPostcardError::LengthMismatch;
use log::error;
use serde::{Deserialize, Serialize};
@@ -12,6 +13,8 @@ pub enum UdpRecvPostcardError {
Io(#[from] std::io::Error),
#[error("Deserialization Error")]
Deserialization(#[from] postcard::Error),
#[error("Extra Data")]
ExtraData { amount: usize },
#[error("No Data")]
NoData,
}
@@ -66,8 +69,13 @@ impl UdpSocketExt for UdpSocket {
buffer: &'de mut [u8],
) -> Result<(T, SocketAddr), UdpRecvPostcardError> {
match self.recv_from(buffer) {
Ok((size, addr)) => match postcard::from_bytes::<T>(&buffer[..size]) {
Ok(res) => Ok((res, addr)),
Ok((size, addr)) => match postcard::take_from_bytes::<T>(&buffer[..size]) {
Ok((res, rem)) => {
if !rem.is_empty() {
return Err(ExtraData { amount: rem.len() });
}
Ok((res, addr))
}
Err(err) => Err(err.into()),
},
Err(err) => match err.kind() {