feat(nix-compat/wire/bytes/reader): expose the remaining data length

The API is a bit odd here, because we don't have a distinct type for a
known-length reader.

Change-Id: I4a1dd07fbed0a400004dbe4aa2095c51898ad3bd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11538
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: Brian Olsen <me@griff.name>
This commit is contained in:
edef 2024-04-29 13:57:20 +00:00
parent 5070f9eff7
commit 44bd9543a6
2 changed files with 31 additions and 0 deletions

View file

@ -89,6 +89,20 @@ where
},
}
}
/// Remaining data length, ie not including data already read.
///
/// If the size has not been read yet, this is [None].
#[allow(clippy::len_without_is_empty)] // if size is unknown, we can't answer that
pub fn len(&self) -> Option<u64> {
match self.state {
State::Size { .. } => None,
State::Body {
consumed, user_len, ..
} => Some(user_len - consumed),
State::Trailer(ref r) => Some(r.len() as u64),
}
}
}
impl<R: AsyncRead + Unpin> AsyncRead for BytesReader<R> {