diff options
Diffstat (limited to 'tokio/src/net/unix/stream.rs')
-rw-r--r-- | tokio/src/net/unix/stream.rs | 115 |
1 files changed, 2 insertions, 113 deletions
diff --git a/tokio/src/net/unix/stream.rs b/tokio/src/net/unix/stream.rs index 7a226994..a430fa17 100644 --- a/tokio/src/net/unix/stream.rs +++ b/tokio/src/net/unix/stream.rs @@ -3,11 +3,10 @@ use crate::io::{AsyncRead, AsyncWrite, PollEvented}; use crate::net::unix::split::{split, ReadHalf, WriteHalf}; use crate::net::unix::ucred::{self, UCred}; -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::Shutdown; use std::os::unix::io::{AsRawFd, RawFd}; use std::os::unix::net::{self, SocketAddr}; @@ -137,7 +136,7 @@ impl TryFrom<net::UnixStream> for UnixStream { } impl AsyncRead for UnixStream { - unsafe fn prepare_uninitialized_buffer(&self, _: &mut [u8]) -> bool { + unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool { false } @@ -148,14 +147,6 @@ impl AsyncRead for UnixStream { ) -> 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 UnixStream { @@ -174,14 +165,6 @@ impl AsyncWrite for UnixStream { fn poll_shutdown(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<io::Result<()>> { 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 UnixStream { @@ -212,70 +195,6 @@ impl UnixStream { } } - 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<'_>, @@ -291,36 +210,6 @@ impl UnixStream { 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 fmt::Debug for UnixStream { |