Optimization FileReader

This commit is contained in:
weisd
2024-11-02 23:36:04 +08:00
parent 2c26ea534f
commit 71d4f1568f
4 changed files with 14 additions and 18 deletions
+7 -11
View File
@@ -1,6 +1,6 @@
use crate::{ use crate::{
disk::{error::DiskError, DiskStore, FileReader, FileWriter, Reader}, disk::{error::DiskError, DiskStore, FileReader, FileWriter, Reader},
erasure::{ReadAt, Write}, erasure::{ReadAt, Writer},
error::{Error, Result}, error::{Error, Result},
store_api::BitrotAlgorithm, store_api::BitrotAlgorithm,
}; };
@@ -15,15 +15,11 @@ use std::{
collections::HashMap, collections::HashMap,
io::{Cursor, Read}, io::{Cursor, Read},
}; };
use tracing::{error, warn}; use tracing::error;
use tokio::{ use tokio::{
io::AsyncWriteExt,
spawn, spawn,
sync::{ sync::mpsc::{self, Sender},
mpsc::{self, Sender},
RwLock,
},
task::JoinHandle, task::JoinHandle,
}; };
@@ -152,7 +148,7 @@ pub fn bitrot_algorithm_from_string(s: &str) -> BitrotAlgorithm {
BitrotAlgorithm::HighwayHash256S BitrotAlgorithm::HighwayHash256S
} }
pub type BitrotWriter = Box<dyn Write + Send + 'static>; pub type BitrotWriter = Box<dyn Writer + Send + 'static>;
pub async fn new_bitrot_writer( pub async fn new_bitrot_writer(
disk: DiskStore, disk: DiskStore,
@@ -281,7 +277,7 @@ impl WholeBitrotWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for WholeBitrotWriter { impl Writer for WholeBitrotWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
@@ -383,7 +379,7 @@ impl StreamingBitrotWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for StreamingBitrotWriter { impl Writer for StreamingBitrotWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
@@ -507,7 +503,7 @@ impl BitrotFileWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for BitrotFileWriter { impl Writer for BitrotFileWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
+5 -5
View File
@@ -14,7 +14,7 @@ pub const FORMAT_CONFIG_FILE: &str = "format.json";
const STORAGE_FORMAT_FILE: &str = "xl.meta"; const STORAGE_FORMAT_FILE: &str = "xl.meta";
use crate::{ use crate::{
erasure::{ReadAt, Write}, erasure::{ReadAt, Writer},
error::{Error, Result}, error::{Error, Result},
file_meta::{merge_file_meta_versions, FileMeta, FileMetaShallowVersion}, file_meta::{merge_file_meta_versions, FileMeta, FileMetaShallowVersion},
store_api::{FileInfo, RawFileInfo}, store_api::{FileInfo, RawFileInfo},
@@ -657,7 +657,7 @@ pub enum FileWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for FileWriter { impl Writer for FileWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
@@ -686,7 +686,7 @@ impl BufferWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for BufferWriter { impl Writer for BufferWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
@@ -711,7 +711,7 @@ impl LocalFileWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for LocalFileWriter { impl Writer for LocalFileWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
@@ -763,7 +763,7 @@ impl RemoteFileWriter {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl Write for RemoteFileWriter { impl Writer for RemoteFileWriter {
fn as_any(&self) -> &dyn Any { fn as_any(&self) -> &dyn Any {
self self
} }
+1 -1
View File
@@ -346,7 +346,7 @@ impl Erasure {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
pub trait Write { pub trait Writer {
fn as_any(&self) -> &dyn Any; fn as_any(&self) -> &dyn Any;
async fn write(&mut self, buf: &[u8]) -> Result<()>; async fn write(&mut self, buf: &[u8]) -> Result<()>;
async fn close(&mut self) -> Result<()> { async fn close(&mut self) -> Result<()> {
+1 -1
View File
@@ -5,7 +5,7 @@ use ecstore::{
DeleteOptions, DiskInfoOptions, DiskStore, FileInfoVersions, ReadMultipleReq, ReadOptions, Reader, UpdateMetadataOpts, DeleteOptions, DiskInfoOptions, DiskStore, FileInfoVersions, ReadMultipleReq, ReadOptions, Reader, UpdateMetadataOpts,
WalkDirOptions, WalkDirOptions,
}, },
erasure::{ReadAt, Write}, erasure::{ReadAt, Writer},
peer::{LocalPeerS3Client, PeerS3Client}, peer::{LocalPeerS3Client, PeerS3Client},
store::{all_local_disk_path, find_local_disk}, store::{all_local_disk_path, find_local_disk},
store_api::{BucketOptions, DeleteBucketOptions, FileInfo, MakeBucketOptions}, store_api::{BucketOptions, DeleteBucketOptions, FileInfo, MakeBucketOptions},