INNER CODE UNIT · Rust

decode

qaul/qaul.net · rust/libp2p_modules/varint_prefixed_codec/src/lib.rs:80

    fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Self::Item>, Self::Error> {
        // return if package is empty or smaller than the biggest
        // unsigned_varint encoding of an unsigned 64 bit integer.
        if src.len() <= 10 {
            return Ok(None);
        }

        // get `unsigned_varint` encoded message length
        let (message_length, remaining) = match unsigned_varint::decode::usize(src) {
            Ok((len, remaining)) => (len, remaining),
            Err(unsigned_varint::decode::Error::Insufficient) => return Ok(None),
            Err(err) => return Err(Error::new(ErrorKind::InvalidData, err)),
        };

        // check if package length exceeds limit.
        if message_length > self.max_message_len_bytes {
            return Err(Error::new(
                ErrorKind::PermissionDenied,

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…