diff options
Diffstat (limited to 'crates/whirl_server/src/net/converter.rs')
| -rw-r--r-- | crates/whirl_server/src/net/converter.rs | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/crates/whirl_server/src/net/converter.rs b/crates/whirl_server/src/net/converter.rs deleted file mode 100644 index f8a5188..0000000 --- a/crates/whirl_server/src/net/converter.rs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective -// SPDX-License-Identifier: GPL-3.0-only - -use bytes::{BufMut, BytesMut}; -use num_traits::AsPrimitive; - -use crate::{ - cmd::constants::Command, - net::{ - constants::{PROPACCESS_POSSESS, PROPFLAG_DBSTORE}, - PropertyList, - }, -}; - -pub fn property_list_to_bytes( - command_id: i32, - obj_id: i32, - mut property_list: PropertyList, -) -> Vec<u8> { - let mut command = BytesMut::new(); - - // Iterate over all network properties - loop { - // Check if there are any properties left - trace!("props left: {}", property_list.len()); - if property_list.is_empty() { - break; - } - - let property = &property_list[0]; // Property we are currently iterating over - trace!("current prop: {}:{}", property.prop_id, property.value); - - command.put_u8(property.prop_id.as_(): u8); // Property ID - - // NOTE: THIS IS SUPER BAD DO NOT DO THIS! But it works! - if command_id == Command::PropUpd as i32 { - command.put_u8(PROPFLAG_DBSTORE.as_(): u8); // Flag (s) - command.put_u8(PROPACCESS_POSSESS.as_(): u8); // Access - } - - command.put_u8(property.value.len().as_(): u8); // Property UTF-8 Length - command.put_slice(property.value.as_bytes()); // Property UTF-8 - - property_list.reverse(); - property_list.pop(); - property_list.reverse(); - } - - // Convert to vector and insert the header - let mut command_as_vec = command.to_vec(); - - command_as_vec.insert(0, command_id.as_(): u8); // Command ID - command_as_vec.insert(0, obj_id.as_(): u8); // ObjId - command_as_vec.insert(0, command.len().as_(): u8 + 3); // Data length - - // Return bytes - command_as_vec -} |