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:
parent
b3305ea6e2
commit
095f715a80
6 changed files with 33 additions and 112 deletions
|
|
@ -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?;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,7 @@ use std::{
|
|||
pin::Pin,
|
||||
task::{self, ready, Poll},
|
||||
};
|
||||
use tokio::io::{AsyncRead, ReadBuf};
|
||||
|
||||
use crate::wire::read_u64;
|
||||
use tokio::io::{AsyncRead, AsyncReadExt, ReadBuf};
|
||||
|
||||
use trailer::{read_trailer, ReadTrailer, Trailer};
|
||||
mod trailer;
|
||||
|
|
@ -52,7 +50,7 @@ where
|
|||
{
|
||||
/// Constructs a new BytesReader, using the underlying passed reader.
|
||||
pub async fn new<S: RangeBounds<u64>>(mut reader: R, allowed_size: S) -> io::Result<Self> {
|
||||
let size = read_u64(&mut reader).await?;
|
||||
let size = reader.read_u64_le().await?;
|
||||
|
||||
if !allowed_size.contains(&size) {
|
||||
return Err(io::Error::new(io::ErrorKind::InvalidData, "invalid size"));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue