Struct StorageManager
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§
§impl<Id, Element> StorageManager<Id, Element>
impl<Id, Element> StorageManager<Id, Element>
pub fn open_or_create(
storage_builder: StorageBuilder<true>,
instance: u64,
) -> Result<StorageManager<Id, Element>, StorageError>
Available on crate feature cpu_os_threads
only.
pub fn open_or_create( storage_builder: StorageBuilder<true>, instance: u64, ) -> Result<StorageManager<Id, Element>, StorageError>
cpu_os_threads
only.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)?;
pub fn extract_builder(&self) -> StorageBuilder<true>
Available on crate feature cpu_os_threads
only.
pub fn extract_builder(&self) -> StorageBuilder<true>
cpu_os_threads
only.Extracts all information given by the StorageBuilder when constructing
pub fn get_instance(&self) -> u64
Available on crate feature cpu_os_threads
only.
pub fn get_instance(&self) -> u64
cpu_os_threads
only.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§
§impl<Id, Element> Clone for StorageManager<Id, Element>
impl<Id, Element> Clone for StorageManager<Id, Element>
§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 more§impl<Id, Element> Debug for StorageManager<Id, Element>
impl<Id, Element> Debug for StorageManager<Id, Element>
§impl<Id, Element> StorageInterfaceLoad<Id, Element> for StorageManager<Id, Element>
impl<Id, Element> StorageInterfaceLoad<Id, Element> for StorageManager<Id, Element>
§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.
§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
§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.
§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
§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.
§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.
§impl<Id, Element> StorageInterfaceStore<Id, Element> for StorageManager<Id, Element>
impl<Id, Element> StorageInterfaceStore<Id, Element> for StorageManager<Id, Element>
§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.
§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.