refactor(nix-daemon/framed): simplify partial header read
Rather than having separate branches, just make it part of the state machine discipline. Change-Id: Ib21456227515506495ca06ac2a8a529d04f95fde Reviewed-on: https://cl.snix.dev/c/snix/+/30496 Reviewed-by: Brian Olsen <brian@maven-group.org> Tested-by: besadii Reviewed-by: Florian Klink <flokli@flokli.de>
This commit is contained in:
parent
d5c5269ca4
commit
4749964f06
1 changed files with 6 additions and 7 deletions
|
|
@ -70,6 +70,12 @@ impl<R: AsyncRead> AsyncRead for NixFramedReader<R> {
|
||||||
State::Eof => {
|
State::Eof => {
|
||||||
return Ok(()).into();
|
return Ok(()).into();
|
||||||
}
|
}
|
||||||
|
State::Length { buf, filled: 8 } => {
|
||||||
|
*this.state = match NonZeroU64::new(u64::from_le_bytes(*buf)) {
|
||||||
|
None => State::Eof,
|
||||||
|
Some(remaining) => State::Chunk { remaining },
|
||||||
|
};
|
||||||
|
}
|
||||||
State::Length { buf, filled } => {
|
State::Length { buf, filled } => {
|
||||||
let bytes_read = {
|
let bytes_read = {
|
||||||
let mut b = ReadBuf::new(&mut buf[*filled as usize..]);
|
let mut b = ReadBuf::new(&mut buf[*filled as usize..]);
|
||||||
|
|
@ -82,13 +88,6 @@ impl<R: AsyncRead> AsyncRead for NixFramedReader<R> {
|
||||||
}
|
}
|
||||||
|
|
||||||
*filled += bytes_read;
|
*filled += bytes_read;
|
||||||
|
|
||||||
if *filled == 8 {
|
|
||||||
*this.state = match NonZeroU64::new(u64::from_le_bytes(*buf)) {
|
|
||||||
None => State::Eof,
|
|
||||||
Some(remaining) => State::Chunk { remaining },
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
State::Chunk { remaining } => {
|
State::Chunk { remaining } => {
|
||||||
let bytes_read = ready!(with_limited(buf, remaining.get(), |buf| {
|
let bytes_read = ready!(with_limited(buf, remaining.get(), |buf| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue