Skip to content

Commit 8947fed

Browse files
authored
Refactor bufread::decoder: Extract poll ready check (#418)
Move the check into the generic implementation, instead of repeating
1 parent 63a83ad commit 8947fed

File tree

4 files changed

+10
-13
lines changed

4 files changed

+10
-13
lines changed

crates/async-compression/src/futures/bufread/generic/decoder.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ impl<R: AsyncBufRead, D: DecodeV2> AsyncRead for Decoder<R, D> {
2323
}
2424

2525
let mut output = WriteBuffer::new_initialized(buf);
26-
match self.do_poll_read(cx, &mut output)? {
27-
Poll::Pending if output.written().is_empty() => Poll::Pending,
28-
_ => Poll::Ready(Ok(output.written_len())),
29-
}
26+
self.do_poll_read(cx, &mut output)
27+
.map_ok(|()| output.written_len())
3028
}
3129
}
3230

crates/async-compression/src/futures/bufread/generic/encoder.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ impl<R: AsyncBufRead, E: EncodeV2> AsyncRead for Encoder<R, E> {
2323
}
2424

2525
let mut output = WriteBuffer::new_initialized(buf);
26-
match self.do_poll_read(cx, &mut output)? {
27-
Poll::Pending if output.written().is_empty() => Poll::Pending,
28-
_ => Poll::Ready(Ok(output.written_len())),
29-
}
26+
self.do_poll_read(cx, &mut output)
27+
.map_ok(|()| output.written_len())
3028
}
3129
}
3230

crates/async-compression/src/generic/bufread/decoder.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ macro_rules! impl_decoder {
175175
}
176176

177177
loop {
178-
let mut input = PartialBuffer::new(ready!(reader.as_mut().poll_fill_buf(cx))?);
178+
let mut input = PartialBuffer::new(match reader.as_mut().poll_fill_buf(cx)? {
179+
Poll::Ready(input) => input,
180+
Poll::Pending if output.written().is_empty() => return Poll::Pending,
181+
_ => return Poll::Ready(Ok(())),
182+
});
179183

180184
let control_flow = inner.do_poll_read(output, decoder, &mut input, false);
181185

crates/async-compression/src/tokio/bufread/generic/mod.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,5 @@ fn poll_read(
3030
unsafe { buf.assume_init(initialized) };
3131
buf.advance(written);
3232

33-
match res? {
34-
Poll::Pending if written == 0 => Poll::Pending,
35-
_ => Poll::Ready(Ok(())),
36-
}
33+
res
3734
}

0 commit comments

Comments
 (0)