Skip to main content

hdf5_reader/messages/
btree_k.rs

1//! HDF5 B-tree 'K' Values message (type 0x0013).
2//!
3//! Found in superblock extension objects, this message provides the 'K'
4//! (branching factor) value for indexed storage internal nodes.
5
6use crate::error::Result;
7use crate::io::Cursor;
8
9/// Parsed B-tree K values message.
10#[derive(Debug, Clone)]
11pub struct BTreeKMessage {
12    /// Internal node K value for indexed (chunked) storage B-trees.
13    pub indexed_storage_internal_k: u16,
14}
15
16/// Parse a B-tree K values message.
17pub fn parse(
18    cursor: &mut Cursor<'_>,
19    _offset_size: u8,
20    _length_size: u8,
21    msg_size: usize,
22) -> Result<BTreeKMessage> {
23    let start = cursor.position();
24
25    let _version = cursor.read_u8()?;
26    let indexed_storage_internal_k = cursor.read_u16_le()?;
27
28    let consumed = (cursor.position() - start) as usize;
29    if consumed < msg_size {
30        cursor.skip(msg_size - consumed)?;
31    }
32
33    Ok(BTreeKMessage {
34        indexed_storage_internal_k,
35    })
36}