iggy icon indicating copy to clipboard operation
iggy copied to clipboard

[WIP] Send messages as Vec<Bytes>

Open YHM404 opened this issue 1 year ago • 2 comments

resolve https://github.com/iggy-rs/iggy/issues/622

still in draft.

YHM404 avatar Feb 05 '24 04:02 YHM404

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 avatar Feb 05 '24 08:02 YHM404

@YHM404 remember to call flush() at the end of each command send

hubcio avatar Feb 05 '24 13:02 hubcio