flush on close
This commit is contained in:
parent
9f138eba7e
commit
09c9c458a0
@ -32,12 +32,12 @@ struct Forward {
|
||||
impl Stream for Forward {
|
||||
type Item = smol::io::Result<Vec<u8>>;
|
||||
|
||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||
let mut this = self.project();
|
||||
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||
let mut this = self.as_mut().project();
|
||||
let mut buf = [0; 65536];
|
||||
let read = ready!(this.stream.as_mut().poll_read(cx, &mut buf))?;
|
||||
if read == 0 {
|
||||
ready!(this.stream.poll_close(cx))?;
|
||||
ready!(self.poll_close(cx))?;
|
||||
Poll::Ready(None)
|
||||
} else {
|
||||
Poll::Ready(Some(Ok(buf[..read].into())))
|
||||
@ -75,7 +75,8 @@ impl Sink<Vec<u8>> for Forward {
|
||||
self.project().stream.poll_flush(cx)
|
||||
}
|
||||
|
||||
fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
|
||||
ready!(self.as_mut().poll_flush(cx))?;
|
||||
self.project().stream.poll_close(cx)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user