use tox_binary_io::*;
use tox_crypto::*;
use nom::{named, do_parse, call};
use cookie_factory::{do_gen, gen_call, gen_slice,};
use crate::ip_port::*;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct TcpUdpPackedNode { pub ip_port: IpPort,
pub pk: PublicKey,
}
impl FromBytes for TcpUdpPackedNode {
named!(from_bytes<TcpUdpPackedNode>, do_parse!(
ip_port: call!(IpPort::from_bytes, IpPortPadding::NoPadding) >>
pk: call!(PublicKey::from_bytes) >>
(TcpUdpPackedNode {
ip_port,
pk,
})
));
}
impl ToBytes for TcpUdpPackedNode {
fn to_bytes<'a>(&self, buf: (&'a mut [u8], usize)) -> Result<(&'a mut [u8], usize), GenError> {
do_gen!(buf,
gen_call!(|buf, data| IpPort::to_bytes(data, buf, IpPortPadding::NoPadding), &self.ip_port) >>
gen_slice!(self.pk.as_ref())
)
}
}