pub struct RingBackend { /* private fields */ }Implementations§
Source§impl RingBackend
impl RingBackend
pub async fn new(config: DistributedConfig) -> Result<Self>
Trait Implementations§
Source§impl DistributedBackend for RingBackend
impl DistributedBackend for RingBackend
Source§fn barrier<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn barrier<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Two-phase barrier using a monotonic sequence number.
Phase 1 (propagate): send the barrier token with a unique sequence
number around the ring; each node forwards it after receiving from its
predecessor. When the token reaches the initiator after world_size - 1
hops, every node has observed it.
Phase 2 (acknowledge): send the sequence number back around the ring in the same direction to signal completion. When a node receives the acknowledgement it knows all nodes have finished Phase 1 and may proceed.
The monotonic counter prevents tokens from a crashed/slow previous round from being mistaken for tokens from the current round.
Source§fn world_size(&self) -> usize
fn world_size(&self) -> usize
Get the total number of nodes.
Auto Trait Implementations§
impl !Freeze for RingBackend
impl !RefUnwindSafe for RingBackend
impl Send for RingBackend
impl Sync for RingBackend
impl Unpin for RingBackend
impl UnsafeUnpin for RingBackend
impl !UnwindSafe for RingBackend
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> 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 more