From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: Max Carrara <m.carrara@proxmox.com>
Cc: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH pxar] decoder: sync: remove needless wrapper around `decoder::Contents`
Date: Tue, 22 Aug 2023 13:35:25 +0200 [thread overview]
Message-ID: <xzjo2lji3gdinzdfdvfwdc2xeubdwjmdxskrp777b2j3sjmyd2@ctgf5xi4r2kt> (raw)
In-Reply-To: <20230811095600.288467-1-m.carrara@proxmox.com>
sorry for the late reply
NAK
On Fri, Aug 11, 2023 at 11:56:00AM +0200, Max Carrara wrote:
> Similarly to the `impl` for `tokio::io::AsyncRead` in `decoder::aio`,
> this implements the `std::io::Read` trait on `decoder::Contents`
> directly while removing the wrapper.
>
> This allows `decoder::Contents` to be used in both synchronous
> and asynchronous contexts.
>
> Signed-off-by: Max Carrara <m.carrara@proxmox.com>
> ---
> src/decoder/sync.rs | 13 ++++---------
> 1 file changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/src/decoder/sync.rs b/src/decoder/sync.rs
> index 5597a03..be576f8 100644
> --- a/src/decoder/sync.rs
> +++ b/src/decoder/sync.rs
> @@ -5,7 +5,7 @@ use std::path::Path;
> use std::pin::Pin;
> use std::task::{Context, Poll};
>
> -use crate::decoder::{self, SeqRead};
> +use crate::decoder::{self, Contents, SeqRead};
> use crate::util::poll_result_once;
> use crate::Entry;
>
> @@ -69,7 +69,7 @@ impl<T: SeqRead> Decoder<T> {
>
> /// Get a reader for the contents of the current entry, if the entry has contents.
> pub fn contents(&mut self) -> Option<Contents<T>> {
> - self.inner.content_reader().map(|inner| Contents { inner })
> + self.inner.content_reader()
> }
>
> /// Get the size of the current contents, if the entry has contents.
> @@ -118,13 +118,8 @@ impl<T: io::Read> SeqRead for StandardReader<T> {
> }
> }
>
> -/// Reader for file contents inside a pxar archive.
> -pub struct Contents<'a, T: SeqRead> {
> - inner: decoder::Contents<'a, T>,
> -}
> -
> -impl<'a, T: SeqRead> io::Read for Contents<'a, T> {
> +impl<'a, T: SeqRead> io::Read for decoder::Contents<'a, T> {
`Read` is a sync interface and `poll_result_once()` *requires* it to
actually return `Ready`, and panics otherwise. This is only allowed (and
therefore "guaranteed" to work) when coming from the `sync` submodule,
so only *its* readers should implement it.
If anything, I'd go the other way round, take `pxar::decoder::Contents`
private and have one in `aio` (or just ... reexport it there :P)
> fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
> - poll_result_once(super::seq_read(&mut self.inner, buf))
> + poll_result_once(super::seq_read(self.input, buf))
> }
> }
> --
> 2.39.2
next prev parent reply other threads:[~2023-08-22 11:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-11 9:56 Max Carrara
2023-08-22 11:35 ` Wolfgang Bumiller [this message]
2023-08-24 9:47 ` Max Carrara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xzjo2lji3gdinzdfdvfwdc2xeubdwjmdxskrp777b2j3sjmyd2@ctgf5xi4r2kt \
--to=w.bumiller@proxmox.com \
--cc=m.carrara@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.