use crate::error::Result;
use crate::io::Cursor;
#[derive(Debug, Clone)]
pub struct SymbolTableMessage {
pub btree_address: u64,
pub heap_address: u64,
}
pub fn parse(
cursor: &mut Cursor<'_>,
offset_size: u8,
_length_size: u8,
_msg_size: usize,
) -> Result<SymbolTableMessage> {
let btree_address = cursor.read_offset(offset_size)?;
let heap_address = cursor.read_offset(offset_size)?;
Ok(SymbolTableMessage {
btree_address,
heap_address,
})
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_symbol_table_msg() {
let mut data = Vec::new();
data.extend_from_slice(&0x1000u64.to_le_bytes());
data.extend_from_slice(&0x2000u64.to_le_bytes());
let mut cursor = Cursor::new(&data);
let msg = parse(&mut cursor, 8, 8, data.len()).unwrap();
assert_eq!(msg.btree_address, 0x1000);
assert_eq!(msg.heap_address, 0x2000);
}
}