1mod decode;
2mod encode;
3pub mod error;
4pub mod nonblocking;
5mod types;
6
7pub use decode::*;
8pub use encode::*;
9use error::{EncodeError, EncodeResult};
10pub use types::*;
11
12pub(crate) fn prepend_buffer_length(buf: Vec<u8>) -> EncodeResult<Vec<u8>> {
13 let len = buf.len();
14
15 if len > MessageLength::MAX as usize {
16 return Err(EncodeError::MessageTooLarge(len as u64));
17 }
18
19 let mut len_buf = (len as MessageLength).to_be_bytes().to_vec();
20 len_buf.extend(buf);
21
22 Ok(len_buf)
23}