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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
use super::utils;
use crate::id;
pub struct PacketBuilder {
content: Vec<u8>,
}
impl PacketBuilder {
#[inline(always)]
pub fn new() -> Self {
PacketBuilder {
content: utils::empty(),
}
}
#[inline(always)]
pub fn with(packet_id: id) -> Self {
PacketBuilder {
content: utils::new(packet_id),
}
}
#[inline(always)]
pub fn from(packet: Vec<u8>) -> PacketBuilder {
PacketBuilder { content: packet }
}
#[inline(always)]
pub fn from_multiple(packets: &mut [Vec<u8>]) -> PacketBuilder {
let mut packet = utils::empty();
for i in packets.iter_mut() {
packet.append(i)
}
PacketBuilder { content: packet }
}
#[inline(always)]
pub fn merge(packets: &mut [Vec<u8>]) -> Vec<u8> {
let mut packet = utils::empty();
for i in packets.iter_mut() {
packet.append(i)
}
packet
}
#[inline(always)]
pub fn add_multiple_ref(&mut self, packets: &mut [Vec<u8>]) {
for i in packets.iter_mut() {
self.content.append(i)
}
}
#[inline(always)]
pub fn add_multiple(mut self, packets: &mut [Vec<u8>]) -> PacketBuilder {
for i in packets.iter_mut() {
self.content.append(i)
}
self
}
#[inline(always)]
pub fn add(mut self, packet: Vec<u8>) -> PacketBuilder {
self.content.extend(packet);
self
}
#[inline(always)]
pub fn add_ref(&mut self, packet: Vec<u8>) -> &PacketBuilder {
self.content.extend(packet);
self
}
#[inline(always)]
pub fn write_out(self) -> Vec<u8> {
self.content
}
#[inline(always)]
pub fn pack(self) -> Vec<u8> {
utils::output(self.content)
}
}