From 7c12e41d078d08311847f33653a21639e200db61 Mon Sep 17 00:00:00 2001 From: Chris Constantine Date: Thu, 1 Jun 2023 06:35:03 -0700 Subject: [PATCH] io: add `AsyncRead`/`AsyncWrite` passthrough for `Inspect` (#5739) --- tokio-util/src/io/inspect.rs | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tokio-util/src/io/inspect.rs b/tokio-util/src/io/inspect.rs index ec5bb97e6..c860b8035 100644 --- a/tokio-util/src/io/inspect.rs +++ b/tokio-util/src/io/inspect.rs @@ -52,6 +52,42 @@ impl AsyncRead for InspectReader { } } +impl AsyncWrite for InspectReader { + fn poll_write( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll> { + self.project().reader.poll_write(cx, buf) + } + + fn poll_flush( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll> { + self.project().reader.poll_flush(cx) + } + + fn poll_shutdown( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll> { + self.project().reader.poll_shutdown(cx) + } + + fn poll_write_vectored( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[IoSlice<'_>], + ) -> Poll> { + self.project().reader.poll_write_vectored(cx, bufs) + } + + fn is_write_vectored(&self) -> bool { + self.reader.is_write_vectored() + } +} + pin_project! { /// An adapter that lets you inspect the data that's being written. /// @@ -132,3 +168,13 @@ impl AsyncWrite for InspectWriter { self.writer.is_write_vectored() } } + +impl AsyncRead for InspectWriter { + fn poll_read( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll> { + self.project().writer.poll_read(cx, buf) + } +}