use crate::error::{Error, Result};
use crate::traits::CommandDef;
use dvb_common::{Parse, Serialize};
pub const COMMAND_TYPE: u8 = 0x07;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct BandwidthReservation;
impl<'a> Parse<'a> for BandwidthReservation {
type Error = Error;
fn parse(_bytes: &'a [u8]) -> Result<Self> {
Ok(Self)
}
}
impl Serialize for BandwidthReservation {
type Error = Error;
fn serialized_len(&self) -> usize {
0
}
fn serialize_into(&self, _buf: &mut [u8]) -> Result<usize> {
Ok(0)
}
}
impl<'a> CommandDef<'a> for BandwidthReservation {
const COMMAND_TYPE: u8 = COMMAND_TYPE;
const NAME: &'static str = "BANDWIDTH_RESERVATION";
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn round_trip_empty() {
let cmd = BandwidthReservation;
assert_eq!(cmd.serialized_len(), 0);
assert_eq!(BandwidthReservation::parse(&cmd.to_bytes()).unwrap(), cmd);
}
}