From adf4cfd76a2fb5dc98e8ea7f995ec7792aba3c2f Mon Sep 17 00:00:00 2001 From: weisd Date: Mon, 16 Dec 2024 09:29:44 +0800 Subject: [PATCH] test metacache --- ecstore/src/disk/local.rs | 8 +++++++- ecstore/src/io.rs | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/ecstore/src/disk/local.rs b/ecstore/src/disk/local.rs index 7a11bb5b..aac07a21 100644 --- a/ecstore/src/disk/local.rs +++ b/ecstore/src/disk/local.rs @@ -2325,8 +2325,10 @@ async fn get_disk_info(drive_path: PathBuf) -> Result<(Info, bool)> { #[cfg(test)] mod test { + use tokio::io::BufWriter; use utils::fs::open_file; use utils::fs::O_RDWR; + use utils::fs::O_TRUNC; 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, Err(err) => { println!("openfile err {:?}", err); @@ -2431,6 +2433,8 @@ mod test { } }; + let buf = BufWriter::new(Vec::new()); + let opts = WalkDirOptions { bucket: "dada".to_owned(), recursive: true, @@ -2439,5 +2443,7 @@ mod test { if let Err(err) = disk.walk_dir(opts, crate::io::Writer::File(f)).await { println!("walk_dir err {:?}", err); } + + MetacacheReader::new() } } diff --git a/ecstore/src/io.rs b/ecstore/src/io.rs index cdaabaeb..a4d9c3cc 100644 --- a/ecstore/src/io.rs +++ b/ecstore/src/io.rs @@ -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>), } 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>), } impl AsyncWrite for Writer { fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { 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> { 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> { 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(())), } }