diff options
author | Carl Lerche <me@carllerche.com> | 2019-11-20 14:27:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-20 14:27:49 -0800 |
commit | 5cd665afd7b70b184b559e6407fdf645983e1314 (patch) | |
tree | 2197d4502d01218ca6df8c076f55d83027a18230 /tokio/src/net/tcp | |
parent | 3e643c7b81736a4c2b11387a6f71aba99450270b (diff) |
chore: update `bytes` dependency to git master (#1796)
Tokio will track changes to bytes until 0.5 is released.
Diffstat (limited to 'tokio/src/net/tcp')
-rw-r--r-- | tokio/src/net/tcp/split.rs | 20 | ||||
-rw-r--r-- | tokio/src/net/tcp/stream.rs | 115 |
2 files changed, 4 insertions, 131 deletions
diff --git a/tokio/src/net/tcp/split.rs b/tokio/src/net/tcp/split.rs index 07c7c3ff..2b337c08 100644 --- a/tokio/src/net/tcp/split.rs +++ b/tokio/src/net/tcp/split.rs @@ -11,8 +11,8 @@ use crate::io::{AsyncRead, AsyncWrite}; use crate::net::TcpStream; -use bytes::{Buf, BufMut}; use std::io; +use std::mem::MaybeUninit; use std::net::Shutdown; use std::pin::Pin; use std::task::{Context, Poll}; @@ -33,7 +33,7 @@ pub(crate) fn split(stream: &mut TcpStream) -> (ReadHalf<'_>, WriteHalf<'_>) { } impl AsyncRead for ReadHalf<'_> { - unsafe fn prepare_uninitialized_buffer(&self, _: &mut [u8]) -> bool { + unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool { false } @@ -44,14 +44,6 @@ impl AsyncRead for ReadHalf<'_> { ) -> Poll<io::Result<usize>> { self.0.poll_read_priv(cx, buf) } - - fn poll_read_buf<B: BufMut>( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - self.0.poll_read_buf_priv(cx, buf) - } } impl AsyncWrite for WriteHalf<'_> { @@ -73,14 +65,6 @@ impl AsyncWrite for WriteHalf<'_> { fn poll_shutdown(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<io::Result<()>> { self.0.shutdown(Shutdown::Write).into() } - - fn poll_write_buf<B: Buf>( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - self.0.poll_write_buf_priv(cx, buf) - } } impl AsRef<TcpStream> for ReadHalf<'_> { diff --git a/tokio/src/net/tcp/stream.rs b/tokio/src/net/tcp/stream.rs index b73114b4..34d3a493 100644 --- a/tokio/src/net/tcp/stream.rs +++ b/tokio/src/net/tcp/stream.rs @@ -3,11 +3,10 @@ use crate::io::{AsyncRead, AsyncWrite, PollEvented}; use crate::net::tcp::split::{split, ReadHalf, WriteHalf}; use crate::net::ToSocketAddrs; -use bytes::{Buf, BufMut}; -use iovec::IoVec; use std::convert::TryFrom; use std::fmt; use std::io::{self, Read, Write}; +use std::mem::MaybeUninit; use std::net::{self, Shutdown, SocketAddr}; use std::pin::Pin; use std::task::{Context, Poll}; @@ -601,70 +600,6 @@ impl TcpStream { } } - pub(crate) fn poll_read_buf_priv<B: BufMut>( - &self, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - ready!(self.io.poll_read_ready(cx, mio::Ready::readable()))?; - - let r = unsafe { - // The `IoVec` type can't have a 0-length size, so we create a bunch - // of dummy versions on the stack with 1 length which we'll quickly - // overwrite. - let b1: &mut [u8] = &mut [0]; - let b2: &mut [u8] = &mut [0]; - let b3: &mut [u8] = &mut [0]; - let b4: &mut [u8] = &mut [0]; - let b5: &mut [u8] = &mut [0]; - let b6: &mut [u8] = &mut [0]; - let b7: &mut [u8] = &mut [0]; - let b8: &mut [u8] = &mut [0]; - let b9: &mut [u8] = &mut [0]; - let b10: &mut [u8] = &mut [0]; - let b11: &mut [u8] = &mut [0]; - let b12: &mut [u8] = &mut [0]; - let b13: &mut [u8] = &mut [0]; - let b14: &mut [u8] = &mut [0]; - let b15: &mut [u8] = &mut [0]; - let b16: &mut [u8] = &mut [0]; - let mut bufs: [&mut IoVec; 16] = [ - b1.into(), - b2.into(), - b3.into(), - b4.into(), - b5.into(), - b6.into(), - b7.into(), - b8.into(), - b9.into(), - b10.into(), - b11.into(), - b12.into(), - b13.into(), - b14.into(), - b15.into(), - b16.into(), - ]; - let n = buf.bytes_vec_mut(&mut bufs); - self.io.get_ref().read_bufs(&mut bufs[..n]) - }; - - match r { - Ok(n) => { - unsafe { - buf.advance_mut(n); - } - Poll::Ready(Ok(n)) - } - Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { - self.io.clear_read_ready(cx, mio::Ready::readable())?; - Poll::Pending - } - Err(e) => Poll::Ready(Err(e)), - } - } - pub(crate) fn poll_write_priv( &self, cx: &mut Context<'_>, @@ -680,36 +615,6 @@ impl TcpStream { x => Poll::Ready(x), } } - - pub(crate) fn poll_write_buf_priv<B: Buf>( - &self, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - ready!(self.io.poll_write_ready(cx))?; - - let r = { - // The `IoVec` type can't have a zero-length size, so create a dummy - // version from a 1-length slice which we'll overwrite with the - // `bytes_vec` method. - static DUMMY: &[u8] = &[0]; - let iovec = <&IoVec>::from(DUMMY); - let mut bufs = [iovec; 64]; - let n = buf.bytes_vec(&mut bufs); - self.io.get_ref().write_bufs(&bufs[..n]) - }; - match r { - Ok(n) => { - buf.advance(n); - Poll::Ready(Ok(n)) - } - Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { - self.io.clear_write_ready(cx)?; - Poll::Pending - } - Err(e) => Poll::Ready(Err(e)), - } - } } impl TryFrom<TcpStream> for mio::net::TcpStream { @@ -741,7 +646,7 @@ impl TryFrom<net::TcpStream> for TcpStream { // ===== impl Read / Write ===== impl AsyncRead for TcpStream { - unsafe fn prepare_uninitialized_buffer(&self, _: &mut [u8]) -> bool { + unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool { false } @@ -752,14 +657,6 @@ impl AsyncRead for TcpStream { ) -> Poll<io::Result<usize>> { self.poll_read_priv(cx, buf) } - - fn poll_read_buf<B: BufMut>( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - self.poll_read_buf_priv(cx, buf) - } } impl AsyncWrite for TcpStream { @@ -781,14 +678,6 @@ impl AsyncWrite for TcpStream { self.shutdown(std::net::Shutdown::Write)?; Poll::Ready(Ok(())) } - - fn poll_write_buf<B: Buf>( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut B, - ) -> Poll<io::Result<usize>> { - self.poll_write_buf_priv(cx, buf) - } } impl fmt::Debug for TcpStream { |