pub struct MembershipCore<P> { /* private fields */ }Expand description
The pure membership compute core: the SWIM state machine over a keyed peer
map, driven by heartbeats and a logical clock. Emits PeerChangeEvents.
Implementations§
Source§impl<P: Ord + Clone> MembershipCore<P>
impl<P: Ord + Clone> MembershipCore<P>
pub fn new(config: MembershipConfig) -> Self
Sourcepub fn join(&mut self, peer: P, now: u64) -> Vec<PeerChangeEvent<P>>
pub fn join(&mut self, peer: P, now: u64) -> Vec<PeerChangeEvent<P>>
Join a peer (or refresh a re-joining one): Alive with a fresh detector.
Sourcepub fn heartbeat(&mut self, peer: P, now: u64) -> Vec<PeerChangeEvent<P>>
pub fn heartbeat(&mut self, peer: P, now: u64) -> Vec<PeerChangeEvent<P>>
Record a heartbeat. An unknown peer is a join; a Suspect/Dead peer
returns to Alive (SWIM refutation).
Sourcepub fn leave(&mut self, peer: P, _now: u64) -> Vec<PeerChangeEvent<P>>
pub fn leave(&mut self, peer: P, _now: u64) -> Vec<PeerChangeEvent<P>>
Graceful departure.
Sourcepub fn tick(&mut self, now: u64) -> Vec<PeerChangeEvent<P>>
pub fn tick(&mut self, now: u64) -> Vec<PeerChangeEvent<P>>
Advance the clock: escalate Alive → Suspect (phi crossed) and
Suspect → Dead (timeout elapsed).
Auto Trait Implementations§
impl<P> Freeze for MembershipCore<P>
impl<P> RefUnwindSafe for MembershipCore<P>where
BTreeMap<P, PeerRecord>: RefUnwindSafe,
impl<P> Send for MembershipCore<P>
impl<P> Sync for MembershipCore<P>
impl<P> Unpin for MembershipCore<P>
impl<P> UnsafeUnpin for MembershipCore<P>where
BTreeMap<P, PeerRecord>: UnsafeUnpin,
impl<P> UnwindSafe for MembershipCore<P>where
BTreeMap<P, PeerRecord>: UnwindSafe,
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