From 57f7e07c13a1a692602022af4fc32c6ac352bb72 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Fri, 22 Apr 2022 16:19:08 +0530 Subject: Reland "perf(http): optimize ReadableStreams backed by a resource" (#14346) --- ext/net/io.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'ext/net/io.rs') diff --git a/ext/net/io.rs b/ext/net/io.rs index 17b86af17..02caf7473 100644 --- a/ext/net/io.rs +++ b/ext/net/io.rs @@ -70,13 +70,13 @@ where pub async fn read( self: Rc, mut buf: ZeroCopyBuf, - ) -> Result { + ) -> Result<(usize, ZeroCopyBuf), AnyError> { let mut rd = self.rd_borrow_mut().await; let nread = rd .read(&mut buf) .try_or_cancel(self.cancel_handle()) .await?; - Ok(nread) + Ok((nread, buf)) } pub async fn write( @@ -103,7 +103,10 @@ impl Resource for TcpStreamResource { "tcpStream".into() } - fn read(self: Rc, buf: ZeroCopyBuf) -> AsyncResult { + fn read_return( + self: Rc, + buf: ZeroCopyBuf, + ) -> AsyncResult<(usize, ZeroCopyBuf)> { Box::pin(self.read(buf)) } @@ -160,7 +163,7 @@ impl UnixStreamResource { pub async fn read( self: Rc, _buf: ZeroCopyBuf, - ) -> Result { + ) -> Result<(usize, ZeroCopyBuf), AnyError> { unreachable!() } pub async fn write( @@ -182,7 +185,10 @@ impl Resource for UnixStreamResource { "unixStream".into() } - fn read(self: Rc, buf: ZeroCopyBuf) -> AsyncResult { + fn read_return( + self: Rc, + buf: ZeroCopyBuf, + ) -> AsyncResult<(usize, ZeroCopyBuf)> { Box::pin(self.read(buf)) } -- cgit v1.2.3