pub struct StorageVirtualNodes { /* private fields */ }Expand description
Storage-owner registry for derived virtual positions.
Implementations§
Source§impl StorageVirtualNodes
impl StorageVirtualNodes
Sourcepub fn new(config: VirtualNodeConfig) -> Self
pub fn new(config: VirtualNodeConfig) -> Self
Create an empty registry.
Sourcepub fn from_owners(
config: VirtualNodeConfig,
owners: impl IntoIterator<Item = Did>,
) -> Self
pub fn from_owners( config: VirtualNodeConfig, owners: impl IntoIterator<Item = Did>, ) -> Self
Create a registry from known physical owners.
Sourcepub const fn config(&self) -> VirtualNodeConfig
pub const fn config(&self) -> VirtualNodeConfig
Return the active configuration.
Sourcepub const fn is_enabled(&self) -> bool
pub const fn is_enabled(&self) -> bool
Returns whether this registry enables virtual storage ownership.
Sourcepub fn register_owner(&mut self, owner_did: Did)
pub fn register_owner(&mut self, owner_did: Did)
Register one physical owner.
Post: if virtual nodes are disabled, the registry is unchanged.
Sourcepub fn unregister_owner(&mut self, owner_did: Did)
pub fn unregister_owner(&mut self, owner_did: Did)
Remove one physical owner.
Sourcepub fn contains_owner(&self, owner_did: Did) -> bool
pub fn contains_owner(&self, owner_did: Did) -> bool
Returns whether this physical owner is registered.
Sourcepub fn positions_for_owner(&self, owner_did: Did) -> Vec<VirtualNode>
pub fn positions_for_owner(&self, owner_did: Did) -> Vec<VirtualNode>
Return all virtual positions for owner_did.
Sourcepub fn positions(&self) -> Vec<VirtualNode>
pub fn positions(&self) -> Vec<VirtualNode>
Return all registered virtual positions.
Sourcepub fn owner_for_key(&self, key: Did) -> Option<Did>
pub fn owner_for_key(&self, key: Did) -> Option<Did>
Resolve the physical owner responsible for key.
This uses Chord successor ownership: the selected virtual position is
the registered position with minimum clockwise distance from key.
Trait Implementations§
Source§impl Clone for StorageVirtualNodes
impl Clone for StorageVirtualNodes
Source§fn clone(&self) -> StorageVirtualNodes
fn clone(&self) -> StorageVirtualNodes
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StorageVirtualNodes
impl Debug for StorageVirtualNodes
impl Eq for StorageVirtualNodes
Source§impl PartialEq for StorageVirtualNodes
impl PartialEq for StorageVirtualNodes
impl StructuralPartialEq for StorageVirtualNodes
Auto Trait Implementations§
impl Freeze for StorageVirtualNodes
impl RefUnwindSafe for StorageVirtualNodes
impl Send for StorageVirtualNodes
impl Sync for StorageVirtualNodes
impl Unpin for StorageVirtualNodes
impl UnsafeUnpin for StorageVirtualNodes
impl UnwindSafe for StorageVirtualNodes
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§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<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
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 moreSource§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>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.