49 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use serde::{Deserialize, Serialize};
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub enum LDBNatsMessage {
 | 
						|
    Command(LypheDBCommand),
 | 
						|
    Entries(KVList),
 | 
						|
    Count(u64),
 | 
						|
    Success,
 | 
						|
    BadRequest,
 | 
						|
    NotFound,
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub enum PropagationStrategy {
 | 
						|
    /// Reads will immediately be able to read this key's value as soon as it has been set
 | 
						|
    Immediate,
 | 
						|
    /// The value change will be queued along with others,
 | 
						|
    /// then in a period of either inactivity or a maximum time, all changes will be immediately
 | 
						|
    /// seen at once
 | 
						|
    Timeout,
 | 
						|
    /// The key will be removed from the cache, and thus the next read will cause a cache miss,
 | 
						|
    /// and the value will be loaded from disk
 | 
						|
    OnRead,
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub enum LypheDBCommand {
 | 
						|
    SetKeys(KVList, PropagationStrategy),
 | 
						|
    GetKeys(KeyList),
 | 
						|
    CountKeys(KeyDirectory),
 | 
						|
    /// NOT RECURSIVE
 | 
						|
    GetKeyDirectory(KeyDirectory),
 | 
						|
    DeleteKeys(KeyList),
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub struct KVList {
 | 
						|
    pub kvs: Vec<(Vec<u8>, Vec<u8>)>,
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub struct KeyList {
 | 
						|
    pub keys: Vec<Vec<u8>>,
 | 
						|
}
 | 
						|
 | 
						|
#[derive(Clone, Debug, Serialize, Deserialize)]
 | 
						|
pub struct KeyDirectory {
 | 
						|
    pub key: Vec<u8>,
 | 
						|
} |