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: usize
Current 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: f64
Minimum votes required for consensus
round_timeout: Duration
Timeout 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.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.