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/commands/text/create.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/commands/text/create.rs')
| -rw-r--r-- | src/server/cmd/commands/text/create.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/server/cmd/commands/text/create.rs b/src/server/cmd/commands/text/create.rs new file mode 100644 index 0000000..879f9bd --- /dev/null +++ b/src/server/cmd/commands/text/create.rs @@ -0,0 +1,31 @@ +// Copyleft 2021-2021 Whirlsplash +// SPDX-License-Identifier: GPL-3.0-only + +use bytes::{BufMut, BytesMut}; + +use crate::server::cmd::{commands::text::structure::Text, constants::TEXT}; + +pub fn create_text(text: Text) -> Vec<u8> { + let mut command = BytesMut::new(); + + // Header + command.put_u8(0x01); + command.put_u8(TEXT as u8); + + // Content + // The fourth and fifth elements are presumed to be interpreted as a short by + // the client, however, usernames aren't (?) allowed to be long enough that + // they reach a number high enough to be converted to a short. + command.put_u8(0x00); + command.put_u8(text.sender.len() as u8); + command.put_slice(text.sender.as_bytes()); + command.put_u8(text.content.len() as u8); + command.put_slice(text.content.as_bytes()); + + // Convert to vector and insert the length + let mut command_as_vec = command.to_vec(); + command_as_vec.insert(0, command.len() as u8 + 1); + + // Return bytes + command_as_vec +} |