Skip to main content

VortexStorage

Trait VortexStorage 

Source
pub trait VortexStorage {
    // Required methods
    fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>>;
    fn put(&mut self, key: &[u8], value: &[u8]) -> Result<()>;
    fn delete(&mut self, key: &[u8]) -> Result<()>;
    fn scan(&self, start: &[u8], end: &[u8]) -> Result<Vec<(Vec<u8>, Vec<u8>)>>;
    fn write_batch(&mut self, ops: Vec<StorageOp>) -> Result<()>;
    fn flush(&mut self) -> Result<()>;
    fn snapshot(&self) -> Result<Vec<(Vec<u8>, Vec<u8>)>>;
}
Expand description

Persistent storage boundary trait.

In production: real filesystem, RocksDB, SQLite, etc. In simulation: SimStorage with crash/corruption fault injection.

Required Methods§

Source

fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>>

Get the value for a key.

Source

fn put(&mut self, key: &[u8], value: &[u8]) -> Result<()>

Put a key-value pair.

Source

fn delete(&mut self, key: &[u8]) -> Result<()>

Delete a key.

Source

fn scan(&self, start: &[u8], end: &[u8]) -> Result<Vec<(Vec<u8>, Vec<u8>)>>

Scan a range of keys [start, end).

Source

fn write_batch(&mut self, ops: Vec<StorageOp>) -> Result<()>

Apply a batch of operations atomically.

Source

fn flush(&mut self) -> Result<()>

Flush pending writes to durable storage.

Source

fn snapshot(&self) -> Result<Vec<(Vec<u8>, Vec<u8>)>>

Create a point-in-time snapshot.

Implementors§