diff options
| author | Fuwn <[email protected]> | 2021-04-26 13:30:51 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-04-26 13:30:51 +0000 |
| commit | af68ae63e4b0f5f6237bbda4fed9fd2a6022357d (patch) | |
| tree | 02bbd59bf0a54808e335c1d703d3dac4cdc0773b /src/server/cmd/set_parser.rs | |
| parent | fix: Actually remove legacy server module (diff) | |
| download | whirl-af68ae63e4b0f5f6237bbda4fed9fd2a6022357d.tar.xz whirl-af68ae63e4b0f5f6237bbda4fed9fd2a6022357d.zip | |
fmt: Rename re_server module to server
Diffstat (limited to 'src/server/cmd/set_parser.rs')
| -rw-r--r-- | src/server/cmd/set_parser.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/server/cmd/set_parser.rs b/src/server/cmd/set_parser.rs new file mode 100644 index 0000000..c998dcc --- /dev/null +++ b/src/server/cmd/set_parser.rs @@ -0,0 +1,39 @@ +// Copyleft 2021-2021 Whirlsplash +// 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 +} |