async_ws/frame/frame_payload/
mod.rs1pub mod decode;
2pub use decode::*;
3
4pub fn payload_mask(mask: [u8; 4], mut offset: usize, buffer: &mut [u8]) {
8 if mask != [0u8, 0u8, 0u8, 0u8] {
9 for byte in buffer.iter_mut() {
10 offset = offset % 4;
11 *byte ^= mask[offset];
12 offset += 1;
13 }
14 }
15}
16
17pub fn max_payload_len(masked: bool, max_frame_size: u64) -> u64 {
19 match (masked, max_frame_size) {
20 (true, 0..=6) => 0,
21 (true, 7..=132) => max_frame_size - 6,
22 (true, 133..=134) => 126,
23 (true, 135..=65542) => max_frame_size - 8,
24 (true, 65543..=65548) => 65536,
25 (true, 65549..=2147483661) => max_frame_size - 14,
26 (false, 0..=2) => 0,
27 (false, 3..=128) => max_frame_size - 2,
28 (false, 129..=130) => 126,
29 (false, 131..=65538) => max_frame_size - 4,
30 (false, 65539..=65544) => 65536,
31 (false, 65545..=2147483657) => max_frame_size - 10,
32 _ => 2147483647,
33 }
34}