fn decode_stream()

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 })
        })
    }