Skip to main content

async_hdf5/messages/
symbol_table.rs

1use bytes::Bytes;
2
3use crate::endian::HDF5Reader;
4use crate::error::Result;
5
6/// Symbol table message — used by v1 groups to reference their B-tree and local heap.
7///
8/// Message type 0x0011.
9#[derive(Debug, Clone)]
10pub struct SymbolTableMessage {
11    /// Address of the B-tree v1 (type 0) for group members.
12    pub btree_address: u64,
13    /// Address of the local heap for link names.
14    pub local_heap_address: u64,
15}
16
17impl SymbolTableMessage {
18    /// Parse from the raw message bytes.
19    pub fn parse(data: &Bytes, size_of_offsets: u8, size_of_lengths: u8) -> Result<Self> {
20        let mut r = HDF5Reader::with_sizes(data.clone(), size_of_offsets, size_of_lengths);
21
22        let btree_address = r.read_offset()?;
23        let local_heap_address = r.read_offset()?;
24
25        Ok(Self {
26            btree_address,
27            local_heap_address,
28        })
29    }
30}