hickory_proto/xfer/
serial_message.rs1use alloc::vec::Vec;
9#[cfg(not(feature = "std"))]
10use core::net::SocketAddr;
11#[cfg(feature = "std")]
12use std::net::SocketAddr;
13
14use crate::error::ProtoResult;
15use crate::op::Message;
16
17pub struct SerialMessage {
19 message: Vec<u8>,
21 addr: SocketAddr,
22}
23
24impl SerialMessage {
25 pub fn new(message: Vec<u8>, addr: SocketAddr) -> Self {
27 Self { message, addr }
28 }
29
30 pub fn bytes(&self) -> &[u8] {
32 &self.message
33 }
34
35 pub fn addr(&self) -> SocketAddr {
37 self.addr
38 }
39
40 pub fn into_parts(self) -> (Vec<u8>, SocketAddr) {
42 self.into()
43 }
44
45 pub fn from_parts(message: Vec<u8>, addr: SocketAddr) -> Self {
47 (message, addr).into()
48 }
49
50 pub fn to_message(&self) -> ProtoResult<Message> {
52 Message::from_vec(&self.message)
53 }
54}
55
56impl From<(Vec<u8>, SocketAddr)> for SerialMessage {
57 fn from((message, addr): (Vec<u8>, SocketAddr)) -> Self {
58 Self { message, addr }
59 }
60}
61
62impl From<SerialMessage> for (Vec<u8>, SocketAddr) {
63 fn from(msg: SerialMessage) -> Self {
64 let SerialMessage { message, addr } = msg;
65 (message, addr)
66 }
67}