MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / encode_structural

Function encode_structural

nodedb-array/src/codec/tile_encode.rs:79–121  ·  view source on GitHub ↗
(tile: &SparseTile, out: &mut Vec<u8>)

Source from the content-addressed store, hash-verified

77}
78
79fn encode_structural(tile: &SparseTile, out: &mut Vec<u8>) -> ArrayResult<()> {
80 let cell_count = tile.surrogates.len() as u32;
81 let axis_count = tile.dim_dicts.len() as u32;
82 out.extend_from_slice(&cell_count.to_le_bytes());
83 out.extend_from_slice(&axis_count.to_le_bytes());
84
85 // Coordinate axes.
86 for dict in &tile.dim_dicts {
87 let mut axis_buf = Vec::new();
88 encode_coord_axis_rle(dict, &mut axis_buf)?;
89 write_framed(&axis_buf, out);
90 }
91
92 // Surrogates.
93 let surr_bytes = encode_surrogates(&tile.surrogates);
94 write_framed(&surr_bytes, out);
95
96 // Row kinds.
97 let rk_bytes = encode_row_kinds(&tile.row_kinds);
98 write_framed(&rk_bytes, out);
99
100 // Timestamp columns.
101 let sys_bytes = encode_timestamps_col(&[]);
102 // system_from_ms is not stored in SparseTile (it's the tile_id's field).
103 // We emit an empty placeholder to keep the format symmetric.
104 write_framed(&sys_bytes, out);
105
106 let vf_bytes = encode_timestamps_col(&tile.valid_from_ms);
107 write_framed(&vf_bytes, out);
108
109 let vu_bytes = encode_timestamps_col(&tile.valid_until_ms);
110 write_framed(&vu_bytes, out);
111
112 // Attr columns.
113 let attr_count = tile.attr_cols.len() as u32;
114 out.extend_from_slice(&attr_count.to_le_bytes());
115 for col in &tile.attr_cols {
116 let col_bytes = encode_attr_col(col)?;
117 write_framed(&col_bytes, out);
118 }
119
120 Ok(())
121}
122
123#[cfg(test)]
124mod tests {

Callers 1

encode_sparse_tileFunction · 0.85

Calls 7

encode_coord_axis_rleFunction · 0.85
encode_surrogatesFunction · 0.85
encode_row_kindsFunction · 0.85
encode_timestamps_colFunction · 0.85
encode_attr_colFunction · 0.85
write_framedFunction · 0.70
lenMethod · 0.45

Tested by

no test coverage detected