vortex_ipc/messages/
writer_async.rs1use futures_util::{AsyncWrite, AsyncWriteExt};
2use vortex_error::VortexResult;
3
4use crate::messages::{EncoderMessage, MessageEncoder};
5
6pub struct AsyncMessageWriter<W> {
7 write: W,
8 encoder: MessageEncoder,
9}
10
11impl<W: AsyncWrite + Unpin> AsyncMessageWriter<W> {
12 pub fn new(write: W) -> Self {
13 Self {
14 write,
15 encoder: MessageEncoder::default(),
16 }
17 }
18
19 pub async fn write_message(&mut self, message: EncoderMessage<'_>) -> VortexResult<()> {
20 for buffer in self.encoder.encode(message) {
21 self.write.write_all(&buffer).await?;
22 }
23 Ok(())
24 }
25
26 pub fn inner(&self) -> &W {
27 &self.write
28 }
29
30 pub fn into_inner(self) -> W {
31 self.write
32 }
33}