mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-08 22:33:22 +00:00
test metacache
This commit is contained in:
+13
-13
@@ -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(())),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user