From 5ed9e31b82f3fab8f44414bd4c42a75e990eca3e Mon Sep 17 00:00:00 2001 From: Yazad Daruvala Date: Mon, 19 Jun 2017 01:45:57 -0700 Subject: [PATCH] refactor(http): Buffered::read_from_io now returns Poll --- src/http/io.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/http/io.rs b/src/http/io.rs index 64e6f053..1d942868 100644 --- a/src/http/io.rs +++ b/src/http/io.rs @@ -69,7 +69,7 @@ impl Buffered { } }, } - match try_nb!(self.read_from_io()) { + match try_ready!(self.read_from_io()) { 0 => { trace!("parse eof"); //TODO: With Rust 1.14, this can be Error::from(ErrorKind) @@ -80,7 +80,7 @@ impl Buffered { } } - fn read_from_io(&mut self) -> io::Result { + fn read_from_io(&mut self) -> Poll { use bytes::BufMut; // TODO: Investigate if we still need these unsafe blocks if self.read_buf.remaining_mut() < INIT_BUFFER_SIZE { @@ -97,13 +97,15 @@ impl Buffered { Ok(n) => n, Err(e) => { if e.kind() == io::ErrorKind::WouldBlock { + // TODO: Push this out, ideally, into http::Conn. self.read_blocked = true; + return Ok(Async::NotReady); } return Err(e) } }; self.read_buf.advance_mut(n); - Ok(n) + Ok(Async::Ready(n)) } } @@ -153,7 +155,7 @@ impl MemRead for Buffered { trace!("Buffered.read_mem read_buf is not empty, slicing {}", n); Ok(Async::Ready(self.read_buf.split_to(n).freeze())) } else { - let n = try_nb!(self.read_from_io()); + let n = try_ready!(self.read_from_io()); Ok(Async::Ready(self.read_buf.split_to(::std::cmp::min(len, n)).freeze())) } }