Optimize framed packet encoding

This commit is contained in:
Michael Mikovsky
2026-04-25 19:03:08 -06:00
parent 7bea3e2b6b
commit 25988de1e1
+9 -16
View File
@@ -93,16 +93,15 @@ where
let payload_start = align_up(header_start + header_bytes.len(), SECTION_ALIGN); let payload_start = align_up(header_start + header_bytes.len(), SECTION_ALIGN);
let total_len = payload_start + payload_bytes.len(); let total_len = payload_start + payload_bytes.len();
let mut frame = FrameBytes::with_capacity(total_len); let header_end = header_start + header_bytes.len();
frame.extend_from_slice(&header_len.to_be_bytes()); let payload_end = payload_start + payload_bytes.len();
frame.extend_from_slice(&payload_len.to_be_bytes());
append_padding(&mut frame, header_start - 8usize); let mut frame = FrameBytes::new();
frame.extend_from_slice(&header_bytes); frame.resize(total_len, 0);
append_padding( frame[0..4].copy_from_slice(&header_len.to_be_bytes());
&mut frame, frame[4..8].copy_from_slice(&payload_len.to_be_bytes());
payload_start - (header_start + header_bytes.len()), frame[header_start..header_end].copy_from_slice(&header_bytes);
); frame[payload_start..payload_end].copy_from_slice(&payload_bytes);
frame.extend_from_slice(&payload_bytes);
Ok(frame) Ok(frame)
} }
@@ -163,12 +162,6 @@ fn read_u32(bytes: &[u8], start: usize) -> Result<u32, FrameError> {
)) ))
} }
fn append_padding(frame: &mut AlignedVec, padding: usize) {
if padding > 0 {
frame.resize(frame.len() + padding, 0);
}
}
fn align_up(offset: usize, alignment: usize) -> usize { fn align_up(offset: usize, alignment: usize) -> usize {
let mask = alignment - 1; let mask = alignment - 1;
(offset + mask) & !mask (offset + mask) & !mask