rumqttc/mqttbytes/v4/
pubcomp.rs1use super::*;
2use bytes::{Buf, BufMut, Bytes, BytesMut};
3
4#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct PubComp {
7 pub pkid: u16,
8}
9
10impl PubComp {
11 pub fn new(pkid: u16) -> PubComp {
12 PubComp { pkid }
13 }
14
15 pub fn size(&self) -> usize {
16 let len = self.len();
17 let remaining_len_size = len_len(len);
18 1 + remaining_len_size + len
19 }
20
21 fn len(&self) -> usize {
22 2
24 }
25
26 pub fn read(fixed_header: FixedHeader, mut bytes: Bytes) -> Result<Self, Error> {
27 let variable_header_index = fixed_header.fixed_header_len;
28 bytes.advance(variable_header_index);
29 let pkid = read_u16(&mut bytes)?;
30
31 if fixed_header.remaining_len == 2 {
32 return Ok(PubComp { pkid });
33 }
34
35 if fixed_header.remaining_len < 4 {
36 return Ok(PubComp { pkid });
37 }
38
39 let puback = PubComp { pkid };
40
41 Ok(puback)
42 }
43
44 pub fn write(&self, buffer: &mut BytesMut) -> Result<usize, Error> {
45 let len = self.len();
46 buffer.put_u8(0x70);
47 let count = write_remaining_length(buffer, len)?;
48 buffer.put_u16(self.pkid);
49 Ok(1 + count + len)
50 }
51}