fix: update daletpack spec impl

This commit is contained in:
Artemy Egorov 2024-08-05 19:16:27 +03:00
parent 5a42997045
commit 91e185df0b
2 changed files with 6 additions and 16 deletions

View file

@ -33,18 +33,9 @@ fn write_str(bv: &mut Vec<u8>, string: &String) -> Result<(), DaletPackError> {
return Err(DaletPackError::StrMaxSizeExceeded); return Err(DaletPackError::StrMaxSizeExceeded);
} }
if size <= 256 { bv.push(TypeId::Str as u8);
bv.push(TypeId::Str8 as u8);
bv.push((size - 1) as u8);
} else if size <= 65536 {
bv.push(TypeId::Str16 as u8);
bv.extend(((size - 1) as u16).to_be_bytes());
} else {
bv.push(TypeId::Str32 as u8);
bv.extend(((size - 1) as u32).to_be_bytes());
}
bv.extend_from_slice(string.as_bytes()); bv.extend_from_slice(string.as_bytes());
bv.push(TypeId::StrEnd as u8);
Ok(()) Ok(())
} }

View file

@ -14,13 +14,12 @@ pub enum DaletPackError {
#[derive(Debug, Clone, PartialEq, Eq, TryFromPrimitive, Copy)] #[derive(Debug, Clone, PartialEq, Eq, TryFromPrimitive, Copy)]
#[repr(u8)] #[repr(u8)]
pub enum TypeId { pub enum TypeId {
Int8 = 1, StrEnd = 0,
Str8 = 4, Str,
Str16, Int8,
Str32,
TagArray, TagArray,
TagArrayEnd, TagArrayEnd,
TagId = 12, TagId,
TagIdBody, TagIdBody,
TagIdArgument, TagIdArgument,
TagIdBodyArgument, TagIdBodyArgument,