pub struct ConversationConfig {
pub commit_inactivity_duration: Duration,
pub freeze_duration: Duration,
pub recovery_inactivity_duration: Duration,
pub proposal_expiration: Duration,
pub consensus_timeout: Duration,
pub pending_update_max_epochs: u32,
pub max_reelection_attempts: u32,
pub voting_delay: Duration,
pub election_voting_delay: Duration,
pub liveness_criteria_yes: bool,
}Expand description
Per-conversation timing config. Plug-in domains (scoring, steward list)
own their own configs on the respective plug-ins — see
crate::core::ScoringConfig and crate::core::StewardListConfig.
Fields§
§commit_inactivity_duration: DurationRFC §Inactivity Timer #1: how long the epoch steward has to commit approved proposals before honest members enter the freeze round.
freeze_duration: DurationFreeze window before deterministic selection. Defaults to
commit_inactivity_duration / 2.
recovery_inactivity_duration: DurationRFC §Inactivity Timer #2: shorter inactivity window applied during Layer 2 / Layer 3 recovery so retries don’t burn a full epoch.
proposal_expiration: DurationHow long a proposal stays active before expiring (RFC §Creating Voting Proposal).
consensus_timeout: Duration§pending_update_max_epochs: u32Max age (in epochs) of a buffered membership update. If the epoch steward fails to commit a buffered Add/Remove for this many consecutive epochs, the entry is dropped.
max_reelection_attempts: u32Max steward-election retries within one MLS epoch before the app
surfaces “reelection stuck”. 0 disables retry entirely.
voting_delay: DurationPer-member window to cast a manual vote before the app auto-casts
using liveness_criteria_yes. Relationship invariant:
voting_delay < consensus_timeout < commit_inactivity_duration. See
DEFAULT_VOTING_DELAY.
election_voting_delay: DurationAuto-vote delay for steward-election proposals (see
DEFAULT_ELECTION_VOTING_DELAY).
liveness_criteria_yes: boolWhether silent voters count as YES at consensus_timeout (RFC
§Creating Voting Proposal). See DEFAULT_LIVENESS_CRITERIA_YES.
Also used by the auto-vote timer as the cast value.
Implementations§
Source§impl ConversationConfig
impl ConversationConfig
Sourcepub fn voting_delay_for(&self, kind: ProposalKind) -> Duration
pub fn voting_delay_for(&self, kind: ProposalKind) -> Duration
Auto-vote delay for the given proposal kind.
Sourcepub fn apply_timing(&mut self, timing: &TimingConfig)
pub fn apply_timing(&mut self, timing: &TimingConfig)
Overwrite the duration fields from a wire TimingConfig. Used on
the joiner side when applying ConversationSync. Non-timing fields
(liveness_criteria_yes, pending_update_max_epochs) are not in
TimingConfig and stay untouched.
Trait Implementations§
Source§impl Clone for ConversationConfig
impl Clone for ConversationConfig
Source§fn clone(&self) -> ConversationConfig
fn clone(&self) -> ConversationConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ConversationConfig
impl Debug for ConversationConfig
Source§impl Default for ConversationConfig
impl Default for ConversationConfig
Source§impl From<&ConversationConfig> for TimingConfig
Build the wire TimingConfig from a ConversationConfig. Used on
the steward side when sending ConversationSync to joiners.
impl From<&ConversationConfig> for TimingConfig
Build the wire TimingConfig from a ConversationConfig. Used on
the steward side when sending ConversationSync to joiners.
Source§fn from(config: &ConversationConfig) -> Self
fn from(config: &ConversationConfig) -> Self
Auto Trait Implementations§
impl Freeze for ConversationConfig
impl RefUnwindSafe for ConversationConfig
impl Send for ConversationConfig
impl Sync for ConversationConfig
impl Unpin for ConversationConfig
impl UnsafeUnpin for ConversationConfig
impl UnwindSafe for ConversationConfig
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Declassify for T
impl<T> Declassify for T
type Declassified = T
fn declassify(self) -> T
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>
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>
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