pub struct PeerGovernor { /* private fields */ }Expand description
Per-peer policy + health state owner.
Snapshot/restore: full state is captured in
FrameworkSnapshot (work). Pre-Stage-5, restore
rebuilds the governor from scratch - blocklist + allowlist
settings on NodeConfig are re-applied at construction time.
Implementations§
Source§impl PeerGovernor
impl PeerGovernor
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct a fresh governor with no blocklist, no allowlist, and the default failure threshold.
Sourcepub fn with_failure_threshold(self, threshold: u32) -> Self
pub fn with_failure_threshold(self, threshold: u32) -> Self
Configure the failure threshold (consecutive failures
before a peer is marked down). Default
DEFAULT_FAILURE_THRESHOLD.
Sourcepub fn block(&mut self, peer: PeerId)
pub fn block(&mut self, peer: PeerId)
Add a peer to the blocklist. Subsequent inbound envelopes from this peer are dropped; subsequent outbound sends fail.
Sourcepub fn set_allowlist(&mut self, allowlist: Option<HashSet<PeerId>>)
pub fn set_allowlist(&mut self, allowlist: Option<HashSet<PeerId>>)
Set (or clear) the allowlist. When Some, only peers in
the allowlist may communicate; everyone else is denied.
None means “open” (default).
Sourcepub fn peer_health(&self, peer: PeerId) -> Option<PeerHealth>
pub fn peer_health(&self, peer: PeerId) -> Option<PeerHealth>
Per-peer health snapshot read; returns None if no
success/failure has ever been recorded for peer.
Sourcepub fn check_inbound(&self, peer: PeerId) -> Decision
pub fn check_inbound(&self, peer: PeerId) -> Decision
Inbound consultation - called from the engine’s Phase 1 envelope router before any slot is written.
Sourcepub fn check_outbound(
&self,
peer: PeerId,
backoff: &BackoffTable,
now_ns: u64,
) -> Decision
pub fn check_outbound( &self, peer: PeerId, backoff: &BackoffTable, now_ns: u64, ) -> Decision
Outbound consultation - called from the compiler-inserted
PeerHealthGate syscall op upstream of every wire::Send.
Returns Deny(Cooldown { retry_ns }) when the peer is in
failure cooldown, prompting the gate to reschedule.
Sourcepub fn record_success(
&mut self,
peer: PeerId,
now_ns: u64,
) -> LifecycleTransition
pub fn record_success( &mut self, peer: PeerId, now_ns: u64, ) -> LifecycleTransition
Record a successful exchange with peer at now_ns.
Resets the consecutive-failure counter; clears down.
Returns the lifecycle transition the engine should
surface as an EngineStep::PeerUp.
Sourcepub fn record_failure(
&mut self,
peer: PeerId,
now_ns: u64,
) -> LifecycleTransition
pub fn record_failure( &mut self, peer: PeerId, now_ns: u64, ) -> LifecycleTransition
Record a failure for peer at now_ns. Returns
WentDown when the failure pushes the streak across the
threshold.
Sourcepub fn tracked_peers(&self) -> usize
pub fn tracked_peers(&self) -> usize
Number of distinct peers with health state recorded.
Sourcepub fn blocklist(&self) -> &HashSet<PeerId>
pub fn blocklist(&self) -> &HashSet<PeerId>
Read-only view of the blocklist. Used by snapshot capture.
Sourcepub fn iter_health(&self) -> impl Iterator<Item = (PeerId, PeerHealth)> + '_
pub fn iter_health(&self) -> impl Iterator<Item = (PeerId, PeerHealth)> + '_
Iterate (PeerId, PeerHealth) entries for snapshot capture.
Sourcepub fn failure_threshold(&self) -> u32
pub fn failure_threshold(&self) -> u32
Current failure threshold (consecutive failures to mark a peer down). Used by snapshot capture.
Sourcepub fn restore_health(&mut self, peer: PeerId, health: PeerHealth)
pub fn restore_health(&mut self, peer: PeerId, health: PeerHealth)
Replace a peer’s health state directly. Used by
Node::restore to re-seed health from a snapshot entry.
Sourcepub fn set_failure_threshold(&mut self, threshold: u32)
pub fn set_failure_threshold(&mut self, threshold: u32)
Overwrite the failure threshold. Used by Node::restore.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PeerGovernor
impl RefUnwindSafe for PeerGovernor
impl Send for PeerGovernor
impl Sync for PeerGovernor
impl Unpin for PeerGovernor
impl UnsafeUnpin for PeerGovernor
impl UnwindSafe for PeerGovernor
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedComponent for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request