[pbs-devel] [PATCH pxar] encoder: flush after writing last entry
Dominik Csapak
d.csapak at proxmox.com
Wed Mar 24 11:56:38 CET 2021
some writers may need to be flushed to write out all data
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
for now, it is not needed because in all code paths we use it
the writers do not need to be flushed, but there is no guarantee
it will stay that way
src/encoder/mod.rs | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/encoder/mod.rs b/src/encoder/mod.rs
index 1004efa..c114657 100644
--- a/src/encoder/mod.rs
+++ b/src/encoder/mod.rs
@@ -83,6 +83,13 @@ async fn seq_write<T: SeqWrite + ?Sized>(
Ok(put)
}
+/// awaitable version of 'poll_flush'.
+async fn flush<T: SeqWrite + ?Sized>(
+ output: &mut T,
+) -> io::Result<()> {
+ poll_fn(|cx| unsafe { Pin::new_unchecked(&mut *output).poll_flush(cx) }).await
+}
+
/// Write the entire contents of a buffer, handling short writes.
async fn seq_write_all<T: SeqWrite + ?Sized>(
output: &mut T,
@@ -715,6 +722,8 @@ impl<'a, T: SeqWrite + 'a> EncoderImpl<'a, T> {
)
.await?;
+ flush(self.output.as_mut()).await?;
+
// done up here because of the self-borrow and to propagate
let end_offset = self.position();
--
2.20.1
More information about the pbs-devel
mailing list