refactor(nix-compat/wire): drop primitive functions

These may as well be inlined, and hardly need tests, since they just
alias AsyncReadExt::read_u64_le / AsyncWriteExt::write_u64_le.

Boolean reading is worth making explicit, since callers may differ on
how they want to handle values other than 0 and 1.

Boolean writing simplifies to `.write_u64_le(x as u64)`, which is also
fine to inline.

Change-Id: Ief9722fe886688693feb924ff0306b5bc68dd7a2
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11549
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
edef 2024-04-30 07:15:37 +00:00
parent b3305ea6e2
commit 095f715a80
6 changed files with 33 additions and 112 deletions

View file

@ -9,8 +9,6 @@ pub use reader::BytesReader;
mod writer;
pub use writer::BytesWriter;
use super::primitive;
/// 8 null bytes, used to write out padding.
const EMPTY_BYTES: &[u8; 8] = &[0u8; 8];
@ -41,7 +39,7 @@ where
S: RangeBounds<u64>,
{
// read the length field
let len = primitive::read_u64(r).await?;
let len = r.read_u64_le().await?;
if !allowed_size.contains(&len) {
return Err(std::io::Error::new(
@ -52,7 +50,7 @@ where
// calculate the total length, including padding.
// byte packets are padded to 8 byte blocks each.
let padded_len = padding_len(len) as u64 + (len as u64);
let padded_len = padding_len(len) as u64 + len;
let mut limited_reader = r.take(padded_len);
let mut buf = Vec::new();
@ -105,7 +103,7 @@ pub async fn write_bytes<W: AsyncWriteExt + Unpin, B: AsRef<[u8]>>(
b: B,
) -> std::io::Result<()> {
// write the size packet.
primitive::write_u64(w, b.as_ref().len() as u64).await?;
w.write_u64_le(b.as_ref().len() as u64).await?;
// write the payload
w.write_all(b.as_ref()).await?;