refactor(http): combine reserve_read_buf into read_from_io
This commit is contained in:
		| @@ -68,7 +68,6 @@ impl<T: AsyncRead + AsyncWrite> Buffered<T> { | |||||||
|                     } |                     } | ||||||
|                 }, |                 }, | ||||||
|             } |             } | ||||||
|             self.reserve_read_buf(); |  | ||||||
|             match self.read_from_io() { |             match self.read_from_io() { | ||||||
|                 Ok(0) => { |                 Ok(0) => { | ||||||
|                     trace!("parse eof"); |                     trace!("parse eof"); | ||||||
| @@ -88,8 +87,17 @@ impl<T: AsyncRead + AsyncWrite> Buffered<T> { | |||||||
|  |  | ||||||
|     fn read_from_io(&mut self) -> io::Result<usize> { |     fn read_from_io(&mut self) -> io::Result<usize> { | ||||||
|         use bytes::BufMut; |         use bytes::BufMut; | ||||||
|  |         // TODO: Investigate if we still need these unsafe blocks | ||||||
|  |         if self.read_buf.remaining_mut() < INIT_BUFFER_SIZE { | ||||||
|  |             self.read_buf.reserve(INIT_BUFFER_SIZE); | ||||||
|  |             unsafe { // Zero out unused memory | ||||||
|  |                 let buf = self.read_buf.bytes_mut(); | ||||||
|  |                 let len = buf.len(); | ||||||
|  |                 ptr::write_bytes(buf.as_mut_ptr(), 0, len); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         self.read_blocked = false; |         self.read_blocked = false; | ||||||
|         unsafe { |         unsafe { // Can we use AsyncRead::read_buf instead? | ||||||
|             let n = match self.io.read(self.read_buf.bytes_mut()) { |             let n = match self.io.read(self.read_buf.bytes_mut()) { | ||||||
|                 Ok(n) => n, |                 Ok(n) => n, | ||||||
|                 Err(e) => { |                 Err(e) => { | ||||||
| @@ -104,19 +112,6 @@ impl<T: AsyncRead + AsyncWrite> Buffered<T> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn reserve_read_buf(&mut self) { |  | ||||||
|         use bytes::BufMut; |  | ||||||
|         if self.read_buf.remaining_mut() >= INIT_BUFFER_SIZE { |  | ||||||
|             return |  | ||||||
|         } |  | ||||||
|         self.read_buf.reserve(INIT_BUFFER_SIZE); |  | ||||||
|         unsafe { |  | ||||||
|             let buf = self.read_buf.bytes_mut(); |  | ||||||
|             let len = buf.len(); |  | ||||||
|             ptr::write_bytes(buf.as_mut_ptr(), 0, len); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     pub fn buffer<B: AsRef<[u8]>>(&mut self, buf: B) -> usize { |     pub fn buffer<B: AsRef<[u8]>>(&mut self, buf: B) -> usize { | ||||||
|         self.write_buf.buffer(buf.as_ref()) |         self.write_buf.buffer(buf.as_ref()) | ||||||
|     } |     } | ||||||
| @@ -163,7 +158,6 @@ impl<T: AsyncRead + AsyncWrite> MemRead for Buffered<T> { | |||||||
|             trace!("Buffered.read_mem read_buf is not empty, slicing {}", n); |             trace!("Buffered.read_mem read_buf is not empty, slicing {}", n); | ||||||
|             Ok(self.read_buf.split_to(n).freeze()) |             Ok(self.read_buf.split_to(n).freeze()) | ||||||
|         } else { |         } else { | ||||||
|             self.reserve_read_buf(); |  | ||||||
|             let n = try!(self.read_from_io()); |             let n = try!(self.read_from_io()); | ||||||
|             Ok(self.read_buf.split_to(::std::cmp::min(len, n)).freeze()) |             Ok(self.read_buf.split_to(::std::cmp::min(len, n)).freeze()) | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user