diff --git a/src/futures/write/generic/decoder.rs b/src/futures/write/generic/decoder.rs index 2e29a5e..0d905d1 100644 --- a/src/futures/write/generic/decoder.rs +++ b/src/futures/write/generic/decoder.rs @@ -10,7 +10,7 @@ use crate::{ util::PartialBuffer, }; use futures_core::ready; -use futures_io::{AsyncRead, AsyncWrite, IoSliceMut}; +use futures_io::{AsyncBufRead, AsyncRead, AsyncWrite, IoSliceMut}; use pin_project_lite::pin_project; #[derive(Debug)] @@ -202,3 +202,13 @@ impl AsyncRead for Decoder { self.get_pin_mut().poll_read_vectored(cx, bufs) } } + +impl AsyncBufRead for Decoder { + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } +} diff --git a/src/futures/write/generic/encoder.rs b/src/futures/write/generic/encoder.rs index e462789..fbeafe6 100644 --- a/src/futures/write/generic/encoder.rs +++ b/src/futures/write/generic/encoder.rs @@ -10,7 +10,7 @@ use crate::{ util::PartialBuffer, }; use futures_core::ready; -use futures_io::{AsyncRead, AsyncWrite, IoSliceMut}; +use futures_io::{AsyncBufRead, AsyncRead, AsyncWrite, IoSliceMut}; use pin_project_lite::pin_project; #[derive(Debug)] @@ -199,3 +199,13 @@ impl AsyncRead for Encoder { self.get_pin_mut().poll_read_vectored(cx, bufs) } } + +impl AsyncBufRead for Encoder { + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } +} diff --git a/src/futures/write/macros/decoder.rs b/src/futures/write/macros/decoder.rs index fed5943..55cb1aa 100644 --- a/src/futures/write/macros/decoder.rs +++ b/src/futures/write/macros/decoder.rs @@ -99,6 +99,19 @@ macro_rules! decoder { } } + impl<$inner: futures_io::AsyncBufRead> futures_io::AsyncBufRead for $name<$inner> { + fn poll_fill_buf( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: std::pin::Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } + } + const _: () = { fn _assert() { use crate::util::{_assert_send, _assert_sync}; diff --git a/src/futures/write/macros/encoder.rs b/src/futures/write/macros/encoder.rs index 405016a..7e0f929 100644 --- a/src/futures/write/macros/encoder.rs +++ b/src/futures/write/macros/encoder.rs @@ -96,6 +96,19 @@ macro_rules! encoder { } } + impl<$inner: futures_io::AsyncBufRead> futures_io::AsyncBufRead for $name<$inner> { + fn poll_fill_buf( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: std::pin::Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } + } + const _: () = { fn _assert() { use crate::util::{_assert_send, _assert_sync}; diff --git a/src/tokio/write/generic/decoder.rs b/src/tokio/write/generic/decoder.rs index 8b824be..d03dd30 100644 --- a/src/tokio/write/generic/decoder.rs +++ b/src/tokio/write/generic/decoder.rs @@ -11,7 +11,7 @@ use crate::{ }; use futures_core::ready; use pin_project_lite::pin_project; -use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; +use tokio::io::{AsyncBufRead, AsyncRead, AsyncWrite, ReadBuf}; #[derive(Debug)] enum State { @@ -196,3 +196,13 @@ impl AsyncRead for Decoder { self.get_pin_mut().poll_read(cx, buf) } } + +impl AsyncBufRead for Decoder { + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } +} diff --git a/src/tokio/write/generic/encoder.rs b/src/tokio/write/generic/encoder.rs index b2a8143..f5a83aa 100644 --- a/src/tokio/write/generic/encoder.rs +++ b/src/tokio/write/generic/encoder.rs @@ -11,7 +11,7 @@ use crate::{ }; use futures_core::ready; use pin_project_lite::pin_project; -use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; +use tokio::io::{AsyncBufRead, AsyncRead, AsyncWrite, ReadBuf}; #[derive(Debug)] enum State { @@ -193,3 +193,13 @@ impl AsyncRead for Encoder { self.get_pin_mut().poll_read(cx, buf) } } + +impl AsyncBufRead for Encoder { + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } +} diff --git a/src/tokio/write/macros/decoder.rs b/src/tokio/write/macros/decoder.rs index 19e6977..bc3f154 100644 --- a/src/tokio/write/macros/decoder.rs +++ b/src/tokio/write/macros/decoder.rs @@ -91,6 +91,19 @@ macro_rules! decoder { } } + impl<$inner: tokio::io::AsyncBufRead> tokio::io::AsyncBufRead for $name<$inner> { + fn poll_fill_buf( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: std::pin::Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } + } + const _: () = { fn _assert() { use crate::util::{_assert_send, _assert_sync}; diff --git a/src/tokio/write/macros/encoder.rs b/src/tokio/write/macros/encoder.rs index 46dbf32..a2a25e6 100644 --- a/src/tokio/write/macros/encoder.rs +++ b/src/tokio/write/macros/encoder.rs @@ -88,6 +88,19 @@ macro_rules! encoder { } } + impl<$inner: tokio::io::AsyncBufRead> tokio::io::AsyncBufRead for $name<$inner> { + fn poll_fill_buf( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_> + ) -> std::task::Poll> { + self.get_pin_mut().poll_fill_buf(cx) + } + + fn consume(self: std::pin::Pin<&mut Self>, amt: usize) { + self.get_pin_mut().consume(amt) + } + } + const _: () = { fn _assert() { use crate::util::{_assert_send, _assert_sync};