plabble_codec/codec/response/
response_packet.rs

1use crate::{
2    abstractions::MAC_SIZE,
3    codec::{header::ResponseHeader, ptp_packet::PtpPacket},
4};
5
6use super::ResponseBody;
7
8/// The response packet
9///
10/// # Fields
11///
12/// * `header` - the header of the packet
13/// * `body` - the body of the packet
14/// * `mac` - the mac of the packet (optional)
15pub struct ResponsePacket {
16    pub header: ResponseHeader,
17    pub body: ResponseBody,
18    pub mac: Option<[u8; MAC_SIZE]>,
19}
20
21impl PtpPacket<ResponseHeader, ResponseBody> for ResponsePacket {
22    fn get_header(&self) -> &ResponseHeader {
23        &self.header
24    }
25
26    fn get_body(&self) -> &ResponseBody {
27        &self.body
28    }
29
30    fn new(header: ResponseHeader, body: ResponseBody, mac: Option<[u8; MAC_SIZE]>) -> Self {
31        Self { header, body, mac }
32    }
33
34    fn get_mac(&self) -> Option<&[u8; MAC_SIZE]> {
35        self.mac.as_ref()
36    }
37}