pub enum PeerRingAction {
None,
SomeEntry(EntryLookupEvidence),
EntryMisses(Vec<PlacementMiss>),
Some(Did),
RemoteAction(Did, RemoteAction),
MultiActions(Vec<PeerRingAction>),
}Expand description
Describes either a completed peer-ring operation or work to continue remotely.
Variants§
None
No result, the whole manipulation is done internally.
SomeEntry(EntryLookupEvidence)
Found an entry together with lookup evidence.
EntryMisses(Vec<PlacementMiss>)
Observed placement misses without a hit.
Some(Did)
Found some node.
RemoteAction(Did, RemoteAction)
Trigger a remote action.
MultiActions(Vec<PeerRingAction>)
Trigger multiple remote actions.
Implementations§
Source§impl PeerRingAction
impl PeerRingAction
Sourcepub fn is_none(&self) -> bool
pub fn is_none(&self) -> bool
Returns true if the action is PeerRingAction::None.
Sourcepub fn is_some(&self) -> bool
pub fn is_some(&self) -> bool
Returns true if the action is PeerRingAction::Some.
Sourcepub fn is_some_entry(&self) -> bool
pub fn is_some_entry(&self) -> bool
Returns true if the action is PeerRingAction::SomeEntry.
Sourcepub fn is_remote(&self) -> bool
pub fn is_remote(&self) -> bool
Returns true if the action is PeerRingAction::RemoteAction.
Sourcepub fn is_multi(&self) -> bool
pub fn is_multi(&self) -> bool
Returns true if the action is PeerRingAction::MultiActions.
Trait Implementations§
Source§impl Chord<PeerRingAction> for PeerRing
impl Chord<PeerRingAction> for PeerRing
Source§fn join(&self, did: Did) -> Result<PeerRingAction>
fn join(&self, did: Did) -> Result<PeerRingAction>
Join a DHT containing a node identified by
did.Source§fn find_successor(&self, did: Did) -> Result<PeerRingAction>
fn find_successor(&self, did: Did) -> Result<PeerRingAction>
Ask DHT for the successor of Did.
May return a remote action for the successor is recorded in another node.
Source§fn notify(&self, did: Did) -> Result<Did>
fn notify(&self, did: Did) -> Result<Did>
Notify the DHT that a node is its predecessor.
According to the paper, this method should be called periodically.
This method should return the predecessor after updating.
Source§fn fix_fingers(&self) -> Result<PeerRingAction>
fn fix_fingers(&self) -> Result<PeerRingAction>
Fix finger table by finding the successor for each finger.
According to the paper, this method should be called periodically.
According to the paper, only one finger should be fixed at a time.
Source§impl<const REDUNDANT: u16> ChordStorage<PeerRingAction, REDUNDANT> for PeerRing
impl<const REDUNDANT: u16> ChordStorage<PeerRingAction, REDUNDANT> for PeerRing
Source§fn entry_lookup<'life0, 'async_trait>(
&'life0 self,
entry_key: Did,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn entry_lookup<'life0, 'async_trait>(
&'life0 self,
entry_key: Did,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Look up an
Entry by its ring key.
Always finds resource by DHT, ignoring the local cache.Source§fn entry_operate<'life0, 'async_trait>(
&'life0 self,
op: EntryOperation,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn entry_operate<'life0, 'async_trait>(
&'life0 self,
op: EntryOperation,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Store
entry if it’s between current node and the successor of current node,
otherwise find the responsible node and return as Action.Source§impl ChordStorageCache<PeerRingAction> for PeerRing
impl ChordStorageCache<PeerRingAction> for PeerRing
Source§impl ChordStorageRepair<PeerRingAction> for PeerRing
impl ChordStorageRepair<PeerRingAction> for PeerRing
Source§fn republish_local_entries<'life0, 'async_trait>(
&'life0 self,
redundancy: u16,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn republish_local_entries<'life0, 'async_trait>(
&'life0 self,
redundancy: u16,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Republish every locally stored entry to its current affine owners. Read more
Source§fn read_repair_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
entry: Entry,
misses: &'life1 [PlacementMiss],
redundancy: u16,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_repair_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
entry: Entry,
misses: &'life1 [PlacementMiss],
redundancy: u16,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Copy a found entry only to placement keys observed missing during lookup. Read more
Source§impl ChordStorageSync<PeerRingAction> for PeerRing
impl ChordStorageSync<PeerRingAction> for PeerRing
Source§fn sync_entries_with_successor<'life0, 'async_trait>(
&'life0 self,
new_successor: Did,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_entries_with_successor<'life0, 'async_trait>(
&'life0 self,
new_successor: Did,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
When the successor of a node is updated, it needs to check if there are
Entrys that are no longer between current node and new_successor,
and copy them to the new successor.
Source§fn acknowledge_synced_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
acks: &'life1 [SyncedEntryAck],
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn acknowledge_synced_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
acks: &'life1 [SyncedEntryAck],
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete local entries whose placement keys and exact values were durably
stored by the successor during sync. Read more
Source§impl Clone for PeerRingAction
impl Clone for PeerRingAction
Source§fn clone(&self) -> PeerRingAction
fn clone(&self) -> PeerRingAction
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 CorrectChord<PeerRingAction> for PeerRing
impl CorrectChord<PeerRingAction> for PeerRing
Source§fn update_successor<'life0, 'async_trait>(
&'life0 self,
did: impl 'async_trait + LiveDid,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_successor<'life0, 'async_trait>(
&'life0 self,
did: impl 'async_trait + LiveDid,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Hook of updating successor
Source§fn extend_successor<'life0, 'life1, 'async_trait>(
&'life0 self,
dids: &'life1 [impl 'async_trait + LiveDid],
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn extend_successor<'life0, 'life1, 'async_trait>(
&'life0 self,
dids: &'life1 [impl 'async_trait + LiveDid],
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Hook of updating successor
Source§fn join_then_sync<'life0, 'async_trait>(
&'life0 self,
did: impl 'async_trait + LiveDid,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn join_then_sync<'life0, 'async_trait>(
&'life0 self,
did: impl 'async_trait + LiveDid,
) -> Pin<Box<dyn Future<Output = Result<PeerRingAction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Join Operation in the paper. Read more
Source§fn pre_stabilize(&self) -> Result<PeerRingAction>
fn pre_stabilize(&self) -> Result<PeerRingAction>
Steps before Stabilize Operation. Read more
Source§impl Debug for PeerRingAction
impl Debug for PeerRingAction
Source§impl From<Vec<PeerRingAction>> for PeerRingAction
impl From<Vec<PeerRingAction>> for PeerRingAction
Source§fn from(actions: Vec<PeerRingAction>) -> Self
fn from(actions: Vec<PeerRingAction>) -> Self
Converts to this type from the input type.
Source§impl PartialEq for PeerRingAction
impl PartialEq for PeerRingAction
impl StructuralPartialEq for PeerRingAction
Auto Trait Implementations§
impl Freeze for PeerRingAction
impl RefUnwindSafe for PeerRingAction
impl Send for PeerRingAction
impl Sync for PeerRingAction
impl Unpin for PeerRingAction
impl UnsafeUnpin for PeerRingAction
impl UnwindSafe for PeerRingAction
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,
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.