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
+7 -1
View File
@@ -2325,8 +2325,10 @@ async fn get_disk_info(drive_path: PathBuf) -> Result<(Info, bool)> {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use tokio::io::BufWriter;
use utils::fs::open_file; use utils::fs::open_file;
use utils::fs::O_RDWR; use utils::fs::O_RDWR;
use utils::fs::O_TRUNC;
use super::*; use super::*;
@@ -2423,7 +2425,7 @@ mod test {
} }
}; };
let mut f = match open_file("./testfile.txt", O_CREATE | O_RDWR).await { let f = match open_file("./testfile.txt", O_CREATE | O_RDWR | O_TRUNC).await {
Ok(res) => res, Ok(res) => res,
Err(err) => { Err(err) => {
println!("openfile err {:?}", err); println!("openfile err {:?}", err);
@@ -2431,6 +2433,8 @@ mod test {
} }
}; };
let buf = BufWriter::new(Vec::new());
let opts = WalkDirOptions { let opts = WalkDirOptions {
bucket: "dada".to_owned(), bucket: "dada".to_owned(),
recursive: true, recursive: true,
@@ -2439,5 +2443,7 @@ mod test {
if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await { if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await {
println!("walk_dir err {:?}", err); println!("walk_dir err {:?}", err);
} }
MetacacheReader::new()
} }
} }
+13 -13
View File
@@ -3,6 +3,8 @@ use std::io::Write;
use std::pin::Pin; use std::pin::Pin;
use std::task::{Context, Poll}; use std::task::{Context, Poll};
use tokio::fs::File; use tokio::fs::File;
use tokio::io::BufReader;
use tokio::io::BufWriter;
use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf}; use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};
#[derive(Default)] #[derive(Default)]
@@ -10,6 +12,7 @@ pub enum Reader {
#[default] #[default]
NotUse, NotUse,
File(File), File(File),
Buffer(BufReader<Vec<u8>>),
} }
impl AsyncRead for Reader { impl AsyncRead for Reader {
@@ -19,6 +22,9 @@ impl AsyncRead for Reader {
let file = Pin::new(file); let file = Pin::new(file);
file.poll_read(cx, buf) file.poll_read(cx, buf)
} }
Reader::Buffer(buffer) => {
todo!()
}
Reader::NotUse => Poll::Ready(Ok(())), Reader::NotUse => Poll::Ready(Ok(())),
} }
} }
@@ -29,36 +35,30 @@ pub enum Writer {
#[default] #[default]
NotUse, NotUse,
File(File), File(File),
Buffer(BufWriter<Vec<u8>>),
} }
impl AsyncWrite for Writer { impl AsyncWrite for Writer {
fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> { fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<io::Result<usize>> {
match self.get_mut() { match self.get_mut() {
Writer::File(file) => { Writer::File(file) => Pin::new(file).poll_write(cx, buf),
// Create a pinned reference from the file Writer::Buffer(buff) => Pin::new(buff).poll_write(cx, buf),
let file = Pin::new(file);
file.poll_write(cx, buf)
}
Writer::NotUse => Poll::Ready(Ok(0)), Writer::NotUse => Poll::Ready(Ok(0)),
} }
} }
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> { fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() { match self.get_mut() {
Writer::File(file) => { Writer::File(file) => Pin::new(file).poll_flush(cx),
let file = Pin::new(file); Writer::Buffer(buff) => Pin::new(buff).poll_flush(cx),
file.poll_flush(cx)
}
Writer::NotUse => Poll::Ready(Ok(())), Writer::NotUse => Poll::Ready(Ok(())),
} }
} }
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> { fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
match self.get_mut() { match self.get_mut() {
Writer::File(file) => { Writer::File(file) => Pin::new(file).poll_shutdown(cx),
let file = Pin::new(file); Writer::Buffer(buff) => Pin::new(buff).poll_shutdown(cx),
file.poll_shutdown(cx)
}
Writer::NotUse => Poll::Ready(Ok(())), Writer::NotUse => Poll::Ready(Ok(())),
} }
} }