use super::*;
use nom::number::complete::be_u16;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PeerOnline {
pub conference_id: u16,
pub conference_type: ConferenceType,
pub unique_id: ConferenceUID,
}
impl FromBytes for PeerOnline {
named!(from_bytes<PeerOnline>, do_parse!(
tag!("\x61") >>
conference_id: be_u16 >>
conference_type: call!(ConferenceType::from_bytes) >>
unique_id: call!(ConferenceUID::from_bytes) >>
(PeerOnline {
conference_id,
conference_type,
unique_id,
})
));
}
impl ToBytes for PeerOnline {
fn to_bytes<'a>(&self, buf: (&'a mut [u8], usize)) -> Result<(&'a mut [u8], usize), GenError> {
do_gen!(buf,
gen_be_u8!(0x61) >>
gen_be_u16!(self.conference_id) >>
gen_be_u8!(self.conference_type as u8) >>
gen_slice!(self.unique_id.0)
)
}
}
impl PeerOnline {
pub fn new(conference_id: u16, conference_type: ConferenceType, unique_id: ConferenceUID) -> Self {
PeerOnline {
conference_id,
conference_type,
unique_id,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
encode_decode_test!(
tox_crypto::crypto_init().unwrap(),
peer_noline_encode_decode,
PeerOnline::new(1, ConferenceType::Text, ConferenceUID::random())
);
}