blob: 6d11f045ede1d2ac6ef4237fd5bd62870105b255 (
plain) (
blame)
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
|
// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
// SPDX-License-Identifier: GPL-3.0-only
use crate::server::cmd::structure::Command;
/// Iterate over a command set in the from of bytes and return a list of
/// human-readable commands.
fn _parse_command_set(mut data: Vec<u8>) -> Vec<Command> {
let mut command_set = vec![];
// Iterate over all commands
loop {
// Check if any commands are present
if data.len() <= 2 {
break;
}
if data[0] == 0 {
break;
}
let command_length = data[0];
let mut command = Command {
length: command_length as i32,
obj_id: data[1] as i32,
id: data[2] as i32,
body: vec![],
};
if command.length > 3 {
command.body = data[3..].to_owned();
}
command_set.push(command);
// Remove current command from the command set
data = data[command_length as usize..].to_vec();
}
// Return the human-readable command set
command_set
}
|