jopemachine_raft

Struct JointConfig

source
pub struct JointConfig { /* private fields */ }
Expand description

A configuration of two groups of (possibly overlapping) majority configurations. Decisions require the support of both majorities.

Implementations§

source§

impl Configuration

source

pub fn new(voters: HashSet<u64, BuildHasherDefault<FxHasher>>) -> Configuration

Creates a new configuration using the given IDs.

source

pub fn with_capacity(cap: usize) -> Configuration

Creates an empty configuration with given capacity.

source

pub fn committed_index( &self, use_group_commit: bool, l: &impl AckedIndexer, ) -> (u64, bool)

Returns the largest committed index for the given joint quorum. An index is jointly committed if it is committed in both constituent majorities.

The bool flag indicates whether the index is computed by group commit algorithm successfully. It’s true only when both majorities use group commit.

source

pub fn vote_result(&self, check: impl Fn(u64) -> Option<bool>) -> VoteResult

Takes a mapping of voters to yes/no (true/false) votes and returns a result indicating whether the vote is pending, lost, or won. A joint quorum requires both majority quorums to vote in favor.

source

pub fn clear(&mut self)

Clears all IDs.

source

pub fn is_singleton(&self) -> bool

Returns true if (and only if) there is only one voting member (i.e. the leader) in the current configuration.

source

pub fn ids(&self) -> Union<'_>

Returns an iterator over two hash set without cloning.

source

pub fn contains(&self, id: u64) -> bool

Check if an id is a voter.

Trait Implementations§

source§

impl Clone for Configuration

source§

fn clone(&self) -> Configuration

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Configuration

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Configuration

source§

fn default() -> Configuration

Returns the “default value” for a type. Read more
source§

impl PartialEq for Configuration

source§

fn eq(&self, other: &Configuration) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Configuration

source§

impl StructuralPartialEq for Configuration

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> SendSyncUnwindSafe for T
where T: Send + Sync + UnwindSafe + ?Sized,