test metacache

This commit is contained in:
weisd
2024-12-16 09:29:44 +08:00
committed by weisd
parent a46aaf3f11
commit adf4cfd76a
2 changed files with 20 additions and 14 deletions
+13 -13
View File
@@ -3,6 +3,8 @@ use std::io::Write;
use std::pin::Pin;
use std::task::{Context, Poll};
use tokio::fs::File;
use tokio::io::BufReader;
use tokio::io::BufWriter;
use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};
#[derive(Default)]
@@ -10,6 +12,7 @@ pub enum Reader {
#[default]
NotUse,
File(File),
Buffer(BufReader<Vec<u8>>),
}
impl AsyncRead for Reader {
@@ -19,6 +22,9 @@ impl AsyncRead for Reader {
let file = Pin::new(file);
file.poll_read(cx, buf)
}
Reader::Buffer(buffer) => {
todo!()
}
Reader::NotUse => Poll::Ready(Ok(())),
}
}
@@ -29,36 +35,30 @@ pub enum Writer {
#[default]
NotUse,
File(File),
Buffer(BufWriter<Vec<u8>>),
}
impl AsyncWrite for Writer {
fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> {
match self.get_mut() {
Writer::File(file) => {
// Create a pinned reference from the file
let file = Pin::new(file);
file.poll_write(cx, buf)
}
Writer::File(file) => Pin::new(file).poll_write(cx, buf),
Writer::Buffer(buff) => Pin::new(buff).poll_write(cx, buf),
Writer::NotUse => Poll::Ready(Ok(0)),
}
}
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() {
Writer::File(file) => {
let file = Pin::new(file);
file.poll_flush(cx)
}
Writer::File(file) => Pin::new(file).poll_flush(cx),
Writer::Buffer(buff) => Pin::new(buff).poll_flush(cx),
Writer::NotUse => Poll::Ready(Ok(())),
}
}
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() {
Writer::File(file) => {
let file = Pin::new(file);
file.poll_shutdown(cx)
}
Writer::File(file) => Pin::new(file).poll_shutdown(cx),
Writer::Buffer(buff) => Pin::new(buff).poll_shutdown(cx),
Writer::NotUse => Poll::Ready(Ok(())),
}
}