in netbench/src/multiplex/frame.rs [182:208]
fn decode_stream<B: Buf>(
&mut self,
buf: &mut B,
id: u64,
owner: Owner,
len: usize,
) -> Result<Option<Frame>> {
if len == 0 {
return self.decode(buf);
}
let chunk_len = buf.chunk().len();
if chunk_len == 0 {
self.stream = Some((id, owner, len));
return Ok(None);
}
Ok(if chunk_len >= len {
let data = buf.copy_to_bytes(len);
Some(Frame::StreamData { id, owner, data })
} else {
let data = buf.copy_to_bytes(chunk_len);
self.stream = Some((id, owner, len - chunk_len));
Some(Frame::StreamData { id, owner, data })
})
}