rdedup_lib/aio/
backend.rs1use std::io;
2use std::path::PathBuf;
3use std::sync::mpsc;
4
5use sgdata::SGData;
6
7pub trait Lock {}
11
12pub trait Backend: Send + Sync {
17 fn lock_exclusive(&self) -> io::Result<Box<dyn Lock>>;
22 fn lock_shared(&self) -> io::Result<Box<dyn Lock>>;
27
28 fn new_thread(&self) -> io::Result<Box<dyn BackendThread>>;
30}
31
32pub trait BackendThread: Send {
33 fn remove_dir_all(&mut self, path: PathBuf) -> io::Result<()>;
34
35 fn rename(
36 &mut self,
37 src_path: PathBuf,
38 dst_path: PathBuf,
39 ) -> io::Result<()>;
40
41 fn write(
42 &mut self,
43 path: PathBuf,
44 sg: SGData,
45 idempotent: bool,
46 ) -> io::Result<()>;
47
48 fn read(&mut self, path: PathBuf) -> io::Result<SGData>;
49
50 fn remove(&mut self, path: PathBuf) -> io::Result<()>;
51
52 fn read_metadata(&mut self, path: PathBuf) -> io::Result<super::Metadata>;
53 fn list(&mut self, path: PathBuf) -> io::Result<Vec<PathBuf>>;
54
55 fn list_recursively(
56 &mut self,
57 path: PathBuf,
58 tx: mpsc::Sender<io::Result<Vec<PathBuf>>>,
59 );
60}