1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use disk::fs::FileSystem;
use disk::manager::{self, DiskManager};
use futures_cpupool::Builder;
const DEFAULT_PENDING_SIZE: usize = 10;
const DEFAULT_COMPLETED_SIZE: usize = 10;
pub struct DiskManagerBuilder {
builder: Builder,
pending_size: usize,
completed_size: usize
}
impl DiskManagerBuilder {
pub fn new() -> DiskManagerBuilder {
DiskManagerBuilder{ builder: Builder::new(), pending_size: DEFAULT_PENDING_SIZE,
completed_size: DEFAULT_COMPLETED_SIZE }
}
pub fn with_worker_config(&mut self, config: Builder) -> &mut DiskManagerBuilder {
self.builder = config;
self
}
pub fn with_pending_buffer_size(&mut self, size: usize) -> &mut DiskManagerBuilder {
self.pending_size = size;
self
}
pub fn with_completed_buffer_size(&mut self, size: usize) -> &mut DiskManagerBuilder {
self.completed_size = size;
self
}
pub fn build<F>(self, fs: F) -> DiskManager<F>
where F: FileSystem + Send + Sync + 'static {
manager::new_manager(self.pending_size, self.completed_size, fs, self.builder)
}
}