use super::*;
use shared::error::Result;
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
pub enum DataChannelThreshold {
Low(u32),
High(u32),
}
impl MarshalSize for DataChannelThreshold {
fn marshal_size(&self) -> usize {
1 + 4
}
}
impl Marshal for DataChannelThreshold {
fn marshal_to(&self, mut buf: &mut [u8]) -> Result<usize> {
match *self {
DataChannelThreshold::Low(threshold) => {
buf.put_u8(0);
buf.put_u32(threshold);
}
DataChannelThreshold::High(threshold) => {
buf.put_u8(1);
buf.put_u32(threshold);
}
}
Ok(self.marshal_size())
}
}
impl Unmarshal for DataChannelThreshold {
fn unmarshal<B>(buf: &mut B) -> Result<Self>
where
Self: Sized,
B: Buf,
{
let t = buf.get_u8();
let v = buf.get_u32();
if t == 0 {
Ok(DataChannelThreshold::Low(v))
} else {
Ok(DataChannelThreshold::High(v))
}
}
}