use disk::fs::FileSystem;
use disk::manager::{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) -> DiskManagerBuilder {
self.builder = config;
self
}
pub fn with_sink_buffer_capacity(mut self, size: usize) -> DiskManagerBuilder {
self.pending_size = size;
self
}
pub fn with_stream_buffer_capacity(mut self, size: usize) -> DiskManagerBuilder {
self.completed_size = size;
self
}
pub fn worker_config(&mut self) -> &mut Builder {
&mut self.builder
}
pub fn sink_buffer_capacity(&self) -> usize {
self.pending_size
}
pub fn stream_buffer_capacity(&self) -> usize {
self.completed_size
}
pub fn build<F>(self, fs: F) -> DiskManager<F>
where F: FileSystem + Send + Sync + 'static {
DiskManager::from_builder(self, fs)
}
}