webrtc_mdns/message/resource/
mx.rs1use super::*;
2use crate::error::Result;
3use crate::message::name::*;
4use crate::message::packer::*;
5
6#[derive(Default, Debug, Clone, PartialEq, Eq)]
8pub struct MxResource {
9 pub pref: u16,
10 pub mx: Name,
11}
12
13impl fmt::Display for MxResource {
14 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15 write!(
16 f,
17 "dnsmessage.MXResource{{pref: {}, mx: {}}}",
18 self.pref, self.mx
19 )
20 }
21}
22
23impl ResourceBody for MxResource {
24 fn real_type(&self) -> DnsType {
25 DnsType::Mx
26 }
27
28 fn pack(
30 &self,
31 mut msg: Vec<u8>,
32 compression: &mut Option<HashMap<String, usize>>,
33 compression_off: usize,
34 ) -> Result<Vec<u8>> {
35 msg = pack_uint16(msg, self.pref);
36 msg = self.mx.pack(msg, compression, compression_off)?;
37 Ok(msg)
38 }
39
40 fn unpack(&mut self, msg: &[u8], off: usize, _length: usize) -> Result<usize> {
41 let (pref, off) = unpack_uint16(msg, off)?;
42 self.pref = pref;
43 self.mx.unpack(msg, off)
44 }
45}