pub const MAX_SOCKET_CHUNK: u32 = 64 * 1024;
pub const MAX_CONTROL_RECORD_BODY: u32 = 256 * 1024;
pub const MAX_INTERACTIVE_RECORD_BODY: u32 = 64 * 1024;
pub const MAX_MEDIA_RECORD_BODY: u32 = 8 * 1024 * 1024;
pub const MAX_AGGREGATE_REASSEMBLY: u64 = 32 * 1024 * 1024;
pub const MAX_PENDING_CHUNKS: u32 = 128;
pub const REASSEMBLY_HEADROOM: u32 = 24;
pub const fn fits_control(body: u32) -> bool {
body <= MAX_CONTROL_RECORD_BODY
}
pub const fn fits_interactive(body: u32) -> bool {
body <= MAX_INTERACTIVE_RECORD_BODY
}
pub const fn fits_media(body: u32) -> bool {
body <= MAX_MEDIA_RECORD_BODY
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn the_ceilings_match_the_published_table() {
assert_eq!(MAX_SOCKET_CHUNK, 65_536);
assert_eq!(MAX_CONTROL_RECORD_BODY, 262_144);
assert_eq!(MAX_INTERACTIVE_RECORD_BODY, 65_536);
assert_eq!(MAX_MEDIA_RECORD_BODY, 8_388_608);
assert_eq!(MAX_AGGREGATE_REASSEMBLY, 33_554_432);
assert_eq!(MAX_PENDING_CHUNKS, 128);
}
#[test]
fn the_native_defaults_do_not_fit_a_browser() {
assert!(!fits_control(crate::CONTROL_MAX_RECORD_BODY));
assert!(!fits_media(crate::HARD_MAX_RECORD_BODY));
}
#[test]
fn a_chunked_record_fits_within_the_aggregate() {
let worst_case = u64::from(MAX_MEDIA_RECORD_BODY + REASSEMBLY_HEADROOM);
assert!(worst_case * 2 <= MAX_AGGREGATE_REASSEMBLY);
}
#[test]
fn the_pending_chunk_budget_bounds_one_media_record() {
assert!(
u64::from(MAX_PENDING_CHUNKS) * u64::from(MAX_SOCKET_CHUNK) <= MAX_AGGREGATE_REASSEMBLY
);
}
}