5
0
mirror of git://git.proxmox.com/git/pxar.git synced 2025-03-11 20:58:47 +03:00

encoder: flush after writing last entry

some writers may need to be flushed to write out all data

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-03-24 11:56:38 +01:00 committed by Dietmar Maurer
parent 737f75cf97
commit d995b5319d

View File

@ -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();