use crate::model_format::{
encoded_size_f32, encoded_size_f64, header::is_header_consistent, parse_header,
};
pub fn expected_encoded_size_from_header(bytes: &[u8]) -> Option<usize> {
let h = parse_header(bytes)?;
if !is_header_consistent(&h) {
return None;
}
match h.dtype {
0 => encoded_size_f32(h.layer_count, h.weights_len, h.biases_len),
1 => encoded_size_f64(h.layer_count, h.weights_len, h.biases_len),
_ => None,
}
}
pub fn has_full_payload(bytes: &[u8]) -> bool {
let expected = match expected_encoded_size_from_header(bytes) {
Some(v) => v,
None => return false,
};
bytes.len() >= expected
}