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