Add linear view into a storage (#571)

This commit is contained in:
Julien Cretin
2022-12-07 13:00:41 +01:00
committed by GitHub
parent 0d0460f016
commit f6e9e00b87
3 changed files with 393 additions and 13 deletions

View File

@@ -16,23 +16,16 @@ use crate::{BufferOptions, BufferStorage, Store, StoreDriverOff};
#[derive(Clone)]
pub struct Config {
word_size: usize,
page_size: usize,
num_pages: usize,
max_word_writes: usize,
max_page_erases: usize,
pub word_size: usize,
pub page_size: usize,
pub num_pages: usize,
pub max_word_writes: usize,
pub max_page_erases: usize,
}
impl Config {
pub fn new_driver(&self) -> StoreDriverOff {
let options = BufferOptions {
word_size: self.word_size,
page_size: self.page_size,
max_word_writes: self.max_word_writes,
max_page_erases: self.max_page_erases,
strict_mode: true,
};
StoreDriverOff::new(options, self.num_pages)
StoreDriverOff::new(self.into(), self.num_pages)
}
pub fn new_store(&self) -> Store<BufferStorage> {
@@ -40,6 +33,18 @@ impl Config {
}
}
impl<'a> From<&'a Config> for BufferOptions {
fn from(config: &'a Config) -> Self {
BufferOptions {
word_size: config.word_size,
page_size: config.page_size,
max_word_writes: config.max_word_writes,
max_page_erases: config.max_page_erases,
strict_mode: true,
}
}
}
pub const MINIMAL: Config = Config {
word_size: 4,
page_size: 64,