1use bytes::{Buf, BufMut, Bytes, BytesMut};
2
3pub fn encode_message_batch(batch: Vec<Bytes>) -> Bytes {
4 let mut bytes = BytesMut::new();
5 bytes.put_u64(batch.len() as u64);
6
7 batch.iter().for_each(|m| {
8 bytes.put_u64(m.len() as u64);
10 bytes.extend_from_slice(m)
12 });
13
14 bytes.into()
15}
16
17pub fn decode_message_batch(mut bytes: Bytes) -> Vec<Bytes> {
18 let num_of_messages = bytes.get_u64();
19 let mut messages = Vec::with_capacity(num_of_messages as usize);
20
21 for _ in 0..num_of_messages {
22 let message_len = bytes.get_u64();
23 let message_bytes = bytes.split_to(message_len as usize);
24 messages.push(message_bytes);
25 }
26
27 messages
28}