adds command registration
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user