Struct linera_views::backends::value_splitting::ValueSplittingStore
source · pub struct ValueSplittingStore<K> { /* private fields */ }
Expand description
A key-value store with no size limit for values.
It wraps a key-value store, potentially with a size limit, and automatically
splits up large values into smaller ones. A single logical key-value pair is
stored as multiple smaller key-value pairs in the wrapped store.
See the README.md
for additional details.
Implementations§
Trait Implementations§
source§impl<K> AdminKeyValueStore for ValueSplittingStore<K>
impl<K> AdminKeyValueStore for ValueSplittingStore<K>
§type Config = <K as AdminKeyValueStore>::Config
type Config = <K as AdminKeyValueStore>::Config
The configuration needed to interact with a new store.
source§async fn connect(
config: &Self::Config,
namespace: &str,
root_key: &[u8],
) -> Result<Self, Self::Error>
async fn connect( config: &Self::Config, namespace: &str, root_key: &[u8], ) -> Result<Self, Self::Error>
Connects to an existing namespace using the given configuration.
source§fn clone_with_root_key(&self, root_key: &[u8]) -> Result<Self, Self::Error>
fn clone_with_root_key(&self, root_key: &[u8]) -> Result<Self, Self::Error>
Takes a connection and creates a new one with a different
root_key
.source§async fn list_all(config: &Self::Config) -> Result<Vec<String>, Self::Error>
async fn list_all(config: &Self::Config) -> Result<Vec<String>, Self::Error>
Obtains the list of existing namespaces.
source§async fn list_root_keys(
config: &Self::Config,
namespace: &str,
) -> Result<Vec<Vec<u8>>, Self::Error>
async fn list_root_keys( config: &Self::Config, namespace: &str, ) -> Result<Vec<Vec<u8>>, Self::Error>
Lists the root keys of the namespace.
It is possible that some root keys have no keys.
source§async fn delete_all(config: &Self::Config) -> Result<(), Self::Error>
async fn delete_all(config: &Self::Config) -> Result<(), Self::Error>
Deletes all the existing namespaces.
source§async fn exists(
config: &Self::Config,
namespace: &str,
) -> Result<bool, Self::Error>
async fn exists( config: &Self::Config, namespace: &str, ) -> Result<bool, Self::Error>
Tests if a given namespace exists.
source§async fn create(
config: &Self::Config,
namespace: &str,
) -> Result<(), Self::Error>
async fn create( config: &Self::Config, namespace: &str, ) -> Result<(), Self::Error>
Creates a namespace. Returns an error if the namespace exists.
source§async fn delete(
config: &Self::Config,
namespace: &str,
) -> Result<(), Self::Error>
async fn delete( config: &Self::Config, namespace: &str, ) -> Result<(), Self::Error>
Deletes the given namespace.
source§impl<K: Clone> Clone for ValueSplittingStore<K>
impl<K: Clone> Clone for ValueSplittingStore<K>
source§fn clone(&self) -> ValueSplittingStore<K>
fn clone(&self) -> ValueSplittingStore<K>
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<K> ReadableKeyValueStore for ValueSplittingStore<K>
impl<K> ReadableKeyValueStore for ValueSplittingStore<K>
source§const MAX_KEY_SIZE: usize = _
const MAX_KEY_SIZE: usize = _
The maximal size of keys that can be stored.
source§fn max_stream_queries(&self) -> usize
fn max_stream_queries(&self) -> usize
Retrieve the number of stream queries.
source§async fn read_value_bytes(
&self,
key: &[u8],
) -> Result<Option<Vec<u8>>, Self::Error>
async fn read_value_bytes( &self, key: &[u8], ) -> Result<Option<Vec<u8>>, Self::Error>
Retrieves a
Vec<u8>
from the database using the provided key
.source§async fn contains_key(&self, key: &[u8]) -> Result<bool, Self::Error>
async fn contains_key(&self, key: &[u8]) -> Result<bool, Self::Error>
Tests whether a key exists in the database
source§async fn contains_keys(
&self,
keys: Vec<Vec<u8>>,
) -> Result<Vec<bool>, Self::Error>
async fn contains_keys( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<bool>, Self::Error>
Tests whether a list of keys exist in the database
source§async fn read_multi_values_bytes(
&self,
keys: Vec<Vec<u8>>,
) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
async fn read_multi_values_bytes( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<Option<Vec<u8>>>, Self::Error>
Retrieves multiple
Vec<u8>
from the database using the provided keys
.source§async fn find_keys_by_prefix(
&self,
key_prefix: &[u8],
) -> Result<Self::Keys, Self::Error>
async fn find_keys_by_prefix( &self, key_prefix: &[u8], ) -> Result<Self::Keys, Self::Error>
Finds the
key
matching the prefix. The prefix is not included in the returned keys.source§async fn find_key_values_by_prefix(
&self,
key_prefix: &[u8],
) -> Result<Self::KeyValues, Self::Error>
async fn find_key_values_by_prefix( &self, key_prefix: &[u8], ) -> Result<Self::KeyValues, Self::Error>
Finds the
(key,value)
pairs matching the prefix. The prefix is not included in the returned keys.source§impl<K> TestKeyValueStore for ValueSplittingStore<K>
impl<K> TestKeyValueStore for ValueSplittingStore<K>
source§impl<K> WithError for ValueSplittingStore<K>
impl<K> WithError for ValueSplittingStore<K>
§type Error = ValueSplittingError<<K as WithError>::Error>
type Error = ValueSplittingError<<K as WithError>::Error>
The error type.
source§impl<K> WritableKeyValueStore for ValueSplittingStore<K>
impl<K> WritableKeyValueStore for ValueSplittingStore<K>
Auto Trait Implementations§
impl<K> Freeze for ValueSplittingStore<K>where
K: Freeze,
impl<K> RefUnwindSafe for ValueSplittingStore<K>where
K: RefUnwindSafe,
impl<K> Send for ValueSplittingStore<K>where
K: Send,
impl<K> Sync for ValueSplittingStore<K>where
K: Sync,
impl<K> Unpin for ValueSplittingStore<K>where
K: Unpin,
impl<K> UnwindSafe for ValueSplittingStore<K>where
K: UnwindSafe,
Blanket Implementations§
source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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 moreCreates a shared type from an unshared type.
source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.
source§impl<TraitVariantBlanketType> LocalAdminKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: AdminKeyValueStore,
impl<TraitVariantBlanketType> LocalAdminKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: AdminKeyValueStore,
§type Config = <TraitVariantBlanketType as AdminKeyValueStore>::Config
type Config = <TraitVariantBlanketType as AdminKeyValueStore>::Config
The configuration needed to interact with a new store.
source§async fn connect(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
root_key: &[u8],
) -> Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>
async fn connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>
Connects to an existing namespace using the given configuration.
source§fn clone_with_root_key(
&self,
root_key: &[u8],
) -> Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>
fn clone_with_root_key( &self, root_key: &[u8], ) -> Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>
Takes a connection and creates a new one with a different
root_key
.source§async fn list_all(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
) -> Result<Vec<String>, <TraitVariantBlanketType as WithError>::Error>
async fn list_all( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, ) -> Result<Vec<String>, <TraitVariantBlanketType as WithError>::Error>
Obtains the list of existing namespaces.
source§async fn list_root_keys(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
) -> Result<Vec<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>
async fn list_root_keys( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<Vec<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>
Lists the root keys of the namespace.
It is possible that some root keys have no keys.
source§fn delete_all(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
) -> impl Future<Output = Result<(), <TraitVariantBlanketType as WithError>::Error>>
fn delete_all( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, ) -> impl Future<Output = Result<(), <TraitVariantBlanketType as WithError>::Error>>
Deletes all the existing namespaces.
source§async fn exists(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>
async fn exists( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>
Tests if a given namespace exists.
source§async fn create(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
) -> Result<(), <TraitVariantBlanketType as WithError>::Error>
async fn create( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>
Creates a namespace. Returns an error if the namespace exists.
source§async fn delete(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
) -> Result<(), <TraitVariantBlanketType as WithError>::Error>
async fn delete( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>
Deletes the given namespace.
source§fn maybe_create_and_connect(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
root_key: &[u8],
) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>
fn maybe_create_and_connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>
Initializes a storage if missing and provides it.
source§fn recreate_and_connect(
config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config,
namespace: &str,
root_key: &[u8],
) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>
fn recreate_and_connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>
Creates a new storage. Overwrites it if this namespace already exists.
source§impl<TraitVariantBlanketType> LocalReadableKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: ReadableKeyValueStore,
impl<TraitVariantBlanketType> LocalReadableKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: ReadableKeyValueStore,
source§const MAX_KEY_SIZE: usize = const MAX_KEY_SIZE: usize = <Self as ReadableKeyValueStore>::MAX_KEY_SIZE;
const MAX_KEY_SIZE: usize = const MAX_KEY_SIZE: usize = <Self as ReadableKeyValueStore>::MAX_KEY_SIZE;
The maximal size of keys that can be stored.
§type Keys = <TraitVariantBlanketType as ReadableKeyValueStore>::Keys
type Keys = <TraitVariantBlanketType as ReadableKeyValueStore>::Keys
Returns type for key search operations.
§type KeyValues = <TraitVariantBlanketType as ReadableKeyValueStore>::KeyValues
type KeyValues = <TraitVariantBlanketType as ReadableKeyValueStore>::KeyValues
Returns type for key-value search operations.
source§fn max_stream_queries(&self) -> usize
fn max_stream_queries(&self) -> usize
Retrieve the number of stream queries.
source§async fn read_value_bytes(
&self,
key: &[u8],
) -> Result<Option<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>
async fn read_value_bytes( &self, key: &[u8], ) -> Result<Option<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>
Retrieves a
Vec<u8>
from the database using the provided key
.source§async fn contains_key(
&self,
key: &[u8],
) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>
async fn contains_key( &self, key: &[u8], ) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>
Tests whether a key exists in the database
source§async fn contains_keys(
&self,
keys: Vec<Vec<u8>>,
) -> Result<Vec<bool>, <TraitVariantBlanketType as WithError>::Error>
async fn contains_keys( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<bool>, <TraitVariantBlanketType as WithError>::Error>
Tests whether a list of keys exist in the database
source§async fn read_multi_values_bytes(
&self,
keys: Vec<Vec<u8>>,
) -> Result<Vec<Option<Vec<u8>>>, <TraitVariantBlanketType as WithError>::Error>
async fn read_multi_values_bytes( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<Option<Vec<u8>>>, <TraitVariantBlanketType as WithError>::Error>
Retrieves multiple
Vec<u8>
from the database using the provided keys
.source§async fn find_keys_by_prefix(
&self,
key_prefix: &[u8],
) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::Keys, <TraitVariantBlanketType as WithError>::Error>
async fn find_keys_by_prefix( &self, key_prefix: &[u8], ) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::Keys, <TraitVariantBlanketType as WithError>::Error>
Finds the
key
matching the prefix. The prefix is not included in the returned keys.source§async fn find_key_values_by_prefix(
&self,
key_prefix: &[u8],
) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::KeyValues, <TraitVariantBlanketType as WithError>::Error>
async fn find_key_values_by_prefix( &self, key_prefix: &[u8], ) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::KeyValues, <TraitVariantBlanketType as WithError>::Error>
Finds the
(key,value)
pairs matching the prefix. The prefix is not included in the returned keys.source§impl<TraitVariantBlanketType> LocalWritableKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: WritableKeyValueStore,
impl<TraitVariantBlanketType> LocalWritableKeyValueStore for TraitVariantBlanketTypewhere
TraitVariantBlanketType: WritableKeyValueStore,
source§const MAX_VALUE_SIZE: usize = const MAX_VALUE_SIZE: usize = <Self as WritableKeyValueStore>::MAX_VALUE_SIZE;
const MAX_VALUE_SIZE: usize = const MAX_VALUE_SIZE: usize = <Self as WritableKeyValueStore>::MAX_VALUE_SIZE;
The maximal size of values that can be stored.
source§impl<T> MockResults for T
impl<T> MockResults for T
§type Results = T
type Results = T
The mock native type of the results for the
MockInstance
.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>
Reads length
bytes from memory from the provided location
.
source§fn write(
&mut self,
instance: &mut &mut I,
location: GuestPointer,
bytes: &[u8],
) -> Result<(), RuntimeError>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes
to memory at the provided location
.
source§impl<T> Upcastable for T
impl<T> Upcastable for T
source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref