iggy
iggy copied to clipboard
[WIP] Send messages as Vec<Bytes>
resolve https://github.com/iggy-rs/iggy/issues/622
still in draft.
I have better idea.
we don't need intermediate vector - and you can use BufWriter which has tons better performance
impl for Message:
pub async fn write_to<T>(&self, writer: &mut T) -> Result<(), IggyError> where T: AsyncWriteExt + Unpin, { writer.write_u64_le(self.offset).await?; writer.write_u8(self.state.as_code()).await?; writer.write_u64_le(self.timestamp).await?; writer.write_u128_le(self.id).await?; writer.write_u32_le(self.checksum).await?; if let Some(headers) = &self.headers { let headers_bytes = headers.as_bytes(); #[allow(clippy::cast_possible_truncation)] writer.write_u32_le(headers_bytes.len() as u32).await?; writer.write_all(&headers_bytes).await?; } else { writer.write_u32_le(0u32).await?; } writer.write_u32_le(self.length).await?; writer.write_all(&self.payload).await?; Ok(()) }
That sound's great. I'll try it. thx
@YHM404 remember to call flush() at the end of each command send