pub struct ConsensusVotingState {
pub round: usize,
pub proposals: HashMap<usize, Array1<f64>>,
pub votes: HashMap<usize, Vec<usize>>,
pub voting_weights: HashMap<usize, f64>,
pub consensus_threshold: f64,
pub round_timeout: Duration,
pub round_start: Option<Instant>,
}Expand description
Consensus voting state for distributed decision making
Fields§
§round: usizeCurrent round number
proposals: HashMap<usize, Array1<f64>>Parameter proposals from nodes
votes: HashMap<usize, Vec<usize>>Votes for each proposal
voting_weights: HashMap<usize, f64>Voting weights based on trust
consensus_threshold: f64Minimum votes required for consensus
round_timeout: DurationTimeout for voting rounds
round_start: Option<Instant>Round start time
Implementations§
Source§impl ConsensusVotingState
impl ConsensusVotingState
pub fn new(_consensusthreshold: f64) -> Self
Sourcepub fn start_round(&mut self)
pub fn start_round(&mut self)
Start a new consensus round
Sourcepub fn add_proposal(&mut self, nodeid: usize, parameters: Array1<f64>)
pub fn add_proposal(&mut self, nodeid: usize, parameters: Array1<f64>)
Add a parameter proposal
Sourcepub fn vote(&mut self, voter_id: usize, proposalid: usize, weight: f64)
pub fn vote(&mut self, voter_id: usize, proposalid: usize, weight: f64)
Cast a vote for a proposal
Sourcepub fn check_consensus(&self) -> Option<(usize, Array1<f64>)>
pub fn check_consensus(&self) -> Option<(usize, Array1<f64>)>
Check if consensus has been reached
Sourcepub fn is_timeout(&self) -> bool
pub fn is_timeout(&self) -> bool
Check if round has timed out
Trait Implementations§
Source§impl Clone for ConsensusVotingState
impl Clone for ConsensusVotingState
Source§fn clone(&self) -> ConsensusVotingState
fn clone(&self) -> ConsensusVotingState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ConsensusVotingState
impl RefUnwindSafe for ConsensusVotingState
impl Send for ConsensusVotingState
impl Sync for ConsensusVotingState
impl Unpin for ConsensusVotingState
impl UnwindSafe for ConsensusVotingState
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.