diameter_interface/modeling/avp/
unsigned64.rs

1use crate::errors::DiameterResult;
2use crate::impl_avp_data_encode_to_numbers;
3use crate::modeling::avp::avp::AvpValue;
4use crate::modeling::avp::AvpData;
5use std::io::Read;
6
7pub type Unsigned64 = AvpData<u64>;
8
9impl Unsigned64 {
10    impl_avp_data_encode_to_numbers!(Unsigned64, u64);
11
12    pub(super) fn decode_from<R: Read>(reader: &mut R) -> DiameterResult<AvpData<u64>> {
13        let mut buffer = [0u8; 8];
14        reader.read_exact(&mut buffer)?;
15        let num = u64::from_be_bytes(buffer);
16        Ok(Unsigned64::new(num))
17    }
18
19    pub(super) fn len(&self) -> u32 {
20        8
21    }
22}
23
24impl Into<AvpValue> for Unsigned64 {
25    fn into(self) -> AvpValue {
26        AvpValue::Unsigned64(self)
27    }
28}