INNER CODE UNIT · Rust
encode
qaul/qaul.net · rust/libp2p_modules/varint_prefixed_codec/src/lib.rs:46
fn encode(&mut self, src: Self::Item<'_>, dst: &mut BytesMut) -> Result<(), Self::Error> {
// check length of package to send and return if package limit is exceeded
let message_length = src.len();
if message_length > self.max_message_len_bytes {
return Err(Error::new(
ErrorKind::PermissionDenied,
format!(
"message with {message_length} bytes exceeds maximum of {} bytes",
self.max_message_len_bytes
),
));
}
// create varint for package length
let mut uvi_buf = unsigned_varint::encode::usize_buffer();
let encoded_length = unsigned_varint::encode::usize(message_length, &mut uvi_buf);
// send varint encoded package length as a prefix