pub struct StorageManager<Id, Element> { /* private fields */ }
Expand description
This manager handles if multiple storage options have been specified It can load resources from one storage aspect and will
Implementations§
Source§impl<Id, Element> StorageManager<Id, Element>
impl<Id, Element> StorageManager<Id, Element>
Sourcepub fn open_or_create(
storage_builder: StorageBuilder<true>,
instance: u64,
) -> Result<Self, StorageError>
pub fn open_or_create( storage_builder: StorageBuilder<true>, instance: u64, ) -> Result<Self, StorageError>
Constructs the StorageManager from the instance identifier and the settings given by the StorageBuilder.
use cellular_raza_core::storage::*;
let builder = StorageBuilder::new()
.location("/tmp")
.init();
let manager = StorageManager::<usize, f64>::open_or_create(builder, 0)?;
Sourcepub fn clone_to_new_instance(&self, storage_instance: u64) -> Self
pub fn clone_to_new_instance(&self, storage_instance: u64) -> Self
Uses an existing storage manager to construct a new one.
let builder = StorageBuilder::new()
.location("/tmp")
.init();
let manager = StorageManager::<usize, f64>::open_or_create(builder, 0)?;
let manager2 = manager.clone_to_new_instance(1);
Sourcepub fn extract_builder(&self) -> StorageBuilder<true>
pub fn extract_builder(&self) -> StorageBuilder<true>
Extracts all information given by the StorageBuilder when constructing
Sourcepub fn get_instance(&self) -> u64
pub fn get_instance(&self) -> u64
Get the instance of this object.
These instances should not be overlapping, ie. there should not be two objects existing in parallel with the same instance number.
Trait Implementations§
Source§impl<Id: Clone, Element: Clone> Clone for StorageManager<Id, Element>
impl<Id: Clone, Element: Clone> Clone for StorageManager<Id, Element>
Source§fn clone(&self) -> StorageManager<Id, Element>
fn clone(&self) -> StorageManager<Id, Element>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<Id, Element> StorageInterfaceLoad<Id, Element> for StorageManager<Id, Element>
impl<Id, Element> StorageInterfaceLoad<Id, Element> for StorageManager<Id, Element>
Source§fn load_single_element(
&self,
iteration: u64,
identifier: &Id,
) -> Result<Option<Element>, StorageError>
fn load_single_element( &self, iteration: u64, identifier: &Id, ) -> Result<Option<Element>, StorageError>
Loads a single element from the storage solution if the element exists.
Source§fn load_all_elements_at_iteration(
&self,
iteration: u64,
) -> Result<HashMap<Id, Element>, StorageError>
fn load_all_elements_at_iteration( &self, iteration: u64, ) -> Result<HashMap<Id, Element>, StorageError>
Gets a snapshot of all elements at a given iteration. Read more
Source§fn get_all_iterations(&self) -> Result<Vec<u64>, StorageError>
fn get_all_iterations(&self) -> Result<Vec<u64>, StorageError>
Get all iteration values which have been saved.
Source§fn load_element_history(
&self,
identifier: &Id,
) -> Result<HashMap<u64, Element>, StorageError>
fn load_element_history( &self, identifier: &Id, ) -> Result<HashMap<u64, Element>, StorageError>
Loads the elements history, meaning every occurrence of the element in the storage.
This function by default provides the results in ordered fashion such that the time
direction is retained.
Furthermore this function assumes that a given index occurs over the course of a complete
time segment with no interceptions. Read more
Source§fn load_all_elements(
&self,
) -> Result<BTreeMap<u64, HashMap<Id, Element>>, StorageError>
fn load_all_elements( &self, ) -> Result<BTreeMap<u64, HashMap<Id, Element>>, StorageError>
Loads all elements for every iteration.
This will yield the complete storage and may result in extremely large allocations of
memory.
Source§fn load_all_element_histories(
&self,
) -> Result<HashMap<Id, BTreeMap<u64, Element>>, StorageError>
fn load_all_element_histories( &self, ) -> Result<HashMap<Id, BTreeMap<u64, Element>>, StorageError>
Similarly to the load_all_elements function,
but this function returns all elements as their histories.
Source§impl<Id, Element> StorageInterfaceStore<Id, Element> for StorageManager<Id, Element>
impl<Id, Element> StorageInterfaceStore<Id, Element> for StorageManager<Id, Element>
Source§fn store_single_element(
&mut self,
iteration: u64,
identifier: &Id,
element: &Element,
) -> Result<(), StorageError>
fn store_single_element( &mut self, iteration: u64, identifier: &Id, element: &Element, ) -> Result<(), StorageError>
Saves a single element at given iteration.
Source§fn store_batch_elements<'a, I>(
&'a mut self,
iteration: u64,
identifiers_elements: I,
) -> Result<(), StorageError>where
Id: 'a + Serialize,
Element: 'a + Serialize,
I: Clone + IntoIterator<Item = (&'a Id, &'a Element)>,
fn store_batch_elements<'a, I>(
&'a mut self,
iteration: u64,
identifiers_elements: I,
) -> Result<(), StorageError>where
Id: 'a + Serialize,
Element: 'a + Serialize,
I: Clone + IntoIterator<Item = (&'a Id, &'a Element)>,
Stores a batch of multiple elements with identifiers all at the same iteration.
Auto Trait Implementations§
impl<Id, Element> Freeze for StorageManager<Id, Element>
impl<Id, Element> !RefUnwindSafe for StorageManager<Id, Element>
impl<Id, Element> Send for StorageManager<Id, Element>
impl<Id, Element> Sync for StorageManager<Id, Element>
impl<Id, Element> Unpin for StorageManager<Id, Element>
impl<Id, Element> !UnwindSafe for StorageManager<Id, Element>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more