pub enum DispatchImpact {
Unchanged,
Changed {
conversation_id: ConversationId,
effects: BTreeMap<DispatchEffect, BTreeSet<DispatchTarget>>,
settled_epochs: Vec<u64>,
candidate_lane_drained: bool,
},
}Expand description
Complete request-level post-commit dispatch impact.
Variants§
Unchanged
No committed subcommit changed dispatch permission.
Changed
At least one truthful effect occurred for one conversation.
Fields
conversation_id: ConversationIdConversation whose locked authority produced the effects.
effects: BTreeMap<DispatchEffect, BTreeSet<DispatchTarget>>Effect map. Individual truthful effects may have no current binding target. May be empty when only a settlement cleared.
settled_epochs: Vec<u64>Marker settlement epochs this request’s durable drains CLEARED (participant contract §0.16 condition 2).
A separate lane from effects on purpose: an effect names a
participant BINDING eligible to be told about changed dispatch
permission, and a connection refused MarkerSettlementBackpressure
holds no binding — that is precisely why the amendment needs a
pushed wake instead of a ParticipantDelivery. Routing settlements
through DispatchTarget would therefore be routing them to the one
population that cannot receive them.
candidate_lane_drained: boolWhether this request’s durable drains removed at least one head of the conversation’s immutable-candidate lane, marker or binding terminal alike.
A connection fate refused by candidate-lane Precedence is parked
until exactly this happens, so this is the tell that wakes it. It is
a lane of its own for the same reason settled_epochs is: the
parked fate belongs to a connection that has already gone, so no
DispatchTarget can name it.
Implementations§
Source§impl DispatchImpact
impl DispatchImpact
Sourcepub const fn conversation_id(&self) -> Option<ConversationId>
pub const fn conversation_id(&self) -> Option<ConversationId>
Returns the changed conversation, if any.
Sourcepub fn settled_epochs(&self) -> &[u64]
pub fn settled_epochs(&self) -> &[u64]
Returns the marker settlement epochs cleared by this request.
Sourcepub const fn candidate_lane_drained(&self) -> bool
pub const fn candidate_lane_drained(&self) -> bool
Returns whether a durable drain removed a candidate-lane head.
Sourcepub const fn effects(
&self,
) -> Option<&BTreeMap<DispatchEffect, BTreeSet<DispatchTarget>>>
pub const fn effects( &self, ) -> Option<&BTreeMap<DispatchEffect, BTreeSet<DispatchTarget>>>
Returns the effect map for a changed impact.
Sourcepub fn target_union(&self) -> BTreeSet<DispatchTarget>
pub fn target_union(&self) -> BTreeSet<DispatchTarget>
Unions and deduplicates all exact targets without applying effect precedence.
Trait Implementations§
Source§impl Clone for DispatchImpact
impl Clone for DispatchImpact
Source§impl Debug for DispatchImpact
impl Debug for DispatchImpact
impl Eq for DispatchImpact
Source§impl PartialEq for DispatchImpact
impl PartialEq for DispatchImpact
impl StructuralPartialEq for DispatchImpact
Auto Trait Implementations§
impl Freeze for DispatchImpact
impl RefUnwindSafe for DispatchImpact
impl Send for DispatchImpact
impl Sync for DispatchImpact
impl Unpin for DispatchImpact
impl UnsafeUnpin for DispatchImpact
impl UnwindSafe for DispatchImpact
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.