use crate::{DecodeError, NetlinkHeader};
pub trait NetlinkDeserializable: Sized {
type Error: std::error::Error + Send + Sync + 'static;
fn deserialize(
header: &NetlinkHeader,
payload: &[u8],
) -> Result<Self, Self::Error>;
}
pub trait NetlinkSerializable {
fn message_type(&self) -> u16;
fn buffer_len(&self) -> usize;
fn serialize(&self, buffer: &mut [u8]);
}
pub trait Emitable {
fn buffer_len(&self) -> usize;
fn emit(&self, buffer: &mut [u8]);
}
pub trait Parseable<T>
where
Self: Sized,
T: ?Sized,
{
fn parse(buf: &T) -> Result<Self, DecodeError>;
}
pub trait ParseableParametrized<T, P>
where
Self: Sized,
T: ?Sized,
{
fn parse_with_param(buf: &T, params: P) -> Result<Self, DecodeError>;
}