vortex_ipc/messages/
writer_sync.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::io::Write;
5
6use vortex_error::VortexResult;
7
8use crate::messages::{EncoderMessage, MessageEncoder};
9
10pub struct SyncMessageWriter<W> {
11    write: W,
12    encoder: MessageEncoder,
13}
14
15impl<W: Write> SyncMessageWriter<W> {
16    pub fn new(write: W) -> Self {
17        Self {
18            write,
19            encoder: MessageEncoder::default(),
20        }
21    }
22
23    pub fn write_message(&mut self, message: EncoderMessage) -> VortexResult<()> {
24        for buffer in self.encoder.encode(message) {
25            self.write.write_all(&buffer)?;
26        }
27        Ok(())
28    }
29}