hickory_proto/op/
serial_message.rs1use alloc::vec::Vec;
9use core::net::SocketAddr;
10
11use crate::op::Message;
12use crate::serialize::binary::DecodeError;
13
14pub struct SerialMessage {
16 message: Vec<u8>,
18 addr: SocketAddr,
19}
20
21impl SerialMessage {
22 pub fn new(message: Vec<u8>, addr: SocketAddr) -> Self {
24 Self { message, addr }
25 }
26
27 pub fn bytes(&self) -> &[u8] {
29 &self.message
30 }
31
32 pub fn addr(&self) -> SocketAddr {
34 self.addr
35 }
36
37 pub fn into_parts(self) -> (Vec<u8>, SocketAddr) {
39 self.into()
40 }
41
42 pub fn from_parts(message: Vec<u8>, addr: SocketAddr) -> Self {
44 (message, addr).into()
45 }
46
47 pub fn to_message(&self) -> Result<Message, DecodeError> {
49 Message::from_vec(&self.message)
50 }
51}
52
53impl From<(Vec<u8>, SocketAddr)> for SerialMessage {
54 fn from((message, addr): (Vec<u8>, SocketAddr)) -> Self {
55 Self { message, addr }
56 }
57}
58
59impl From<SerialMessage> for (Vec<u8>, SocketAddr) {
60 fn from(msg: SerialMessage) -> Self {
61 let SerialMessage { message, addr } = msg;
62 (message, addr)
63 }
64}