summaryrefslogtreecommitdiffstats
path: root/tokio/src/net/tcp
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-11-20 14:27:49 -0800
committerGitHub <noreply@github.com>2019-11-20 14:27:49 -0800
commit5cd665afd7b70b184b559e6407fdf645983e1314 (patch)
tree2197d4502d01218ca6df8c076f55d83027a18230 /tokio/src/net/tcp
parent3e643c7b81736a4c2b11387a6f71aba99450270b (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.rs20
-rw-r--r--tokio/src/net/tcp/stream.rs115
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 {