use tokio::io::{AsyncRead, AsyncReadExt};
pub struct ProxyReader {
read_stream: Box<dyn AsyncRead + Unpin + Send>,
}
impl ProxyReader {
pub fn new<R>(read_stream: R) -> Self
where
R: AsyncRead + Unpin + Send + 'static,
{
Self {
read_stream: Box::new(read_stream),
}
}
pub async fn read(&mut self, buffer: &mut [u8]) -> std::io::Result<usize> {
self.read_stream.read_exact(buffer).await
}
pub async fn read_to_end(&mut self, buffer: &mut Vec<u8>) -> std::io::Result<usize> {
self.read_stream.read_to_end(buffer).await
}
}