pub enum ChangeMembers<NID, N>{
AddVoterIds(BTreeSet<NID>),
AddVoters(BTreeMap<NID, N>),
RemoveVoters(BTreeSet<NID>),
ReplaceAllVoters(BTreeSet<NID>),
AddNodes(BTreeMap<NID, N>),
SetNodes(BTreeMap<NID, N>),
RemoveNodes(BTreeSet<NID>),
ReplaceAllNodes(BTreeMap<NID, N>),
}Expand description
Defines various actions to change the membership, including adding or removing learners or voters.
Variants§
AddVoterIds(BTreeSet<NID>)
Upgrade learners to voters.
The learners have to present or error::LearnerNotFound
error will be returned.
AddVoters(BTreeMap<NID, N>)
Add voters with corresponding nodes.
RemoveVoters(BTreeSet<NID>)
Remove voters, leave removed voters as learner or not.
ReplaceAllVoters(BTreeSet<NID>)
Replace voter ids with a new set. The node of every new voter has to already be a learner.
AddNodes(BTreeMap<NID, N>)
Add nodes to membership, as learners.
it WONT replace existing node.
Prefer using this variant instead of SetNodes whenever possible, as AddNodes ensures
safety, whereas incorrect usage of SetNodes can result in a brain split.
See: Update-Node
SetNodes(BTreeMap<NID, N>)
Add or replace nodes in membership config.
it WILL replace existing node.
Prefer using AddNodes instead of SetNodes whenever possible, as AddNodes ensures
safety, whereas incorrect usage of SetNodes can result in a brain split.
See: Update-Node
RemoveNodes(BTreeSet<NID>)
Remove nodes from membership.
If a node is still a voter, it returns
error::LearnerNotFound error.
ReplaceAllNodes(BTreeMap<NID, N>)
Replace all nodes with a new set.
Every voter has to have a corresponding node in the new
set, otherwise it returns error::LearnerNotFound error.
Trait Implementations§
Source§impl<NID, N> Clone for ChangeMembers<NID, N>
impl<NID, N> Clone for ChangeMembers<NID, N>
Source§fn clone(&self) -> ChangeMembers<NID, N>
fn clone(&self) -> ChangeMembers<NID, N>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<NID, N> Debug for ChangeMembers<NID, N>
impl<NID, N> Debug for ChangeMembers<NID, N>
Source§impl<'de, NID, N> Deserialize<'de> for ChangeMembers<NID, N>
impl<'de, NID, N> Deserialize<'de> for ChangeMembers<NID, N>
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ChangeMembers<NID, N>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ChangeMembers<NID, N>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl<NID, N> Eq for ChangeMembers<NID, N>
Source§impl<NID, N, I> From<I> for ChangeMembers<NID, N>
Convert a series of ids to a Replace operation.
impl<NID, N, I> From<I> for ChangeMembers<NID, N>
Convert a series of ids to a Replace operation.
Source§fn from(r: I) -> ChangeMembers<NID, N>
fn from(r: I) -> ChangeMembers<NID, N>
Source§impl<NID, N> PartialEq for ChangeMembers<NID, N>
impl<NID, N> PartialEq for ChangeMembers<NID, N>
Source§fn eq(&self, other: &ChangeMembers<NID, N>) -> bool
fn eq(&self, other: &ChangeMembers<NID, N>) -> bool
self and other values to be equal, and is used by ==.Source§impl<NID, N> Serialize for ChangeMembers<NID, N>
impl<NID, N> Serialize for ChangeMembers<NID, N>
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl<NID, N> StructuralPartialEq for ChangeMembers<NID, N>
Auto Trait Implementations§
impl<NID, N> Freeze for ChangeMembers<NID, N>
impl<NID, N> RefUnwindSafe for ChangeMembers<NID, N>where
NID: RefUnwindSafe,
N: RefUnwindSafe,
impl<NID, N> Send for ChangeMembers<NID, N>
impl<NID, N> Sync for ChangeMembers<NID, N>
impl<NID, N> Unpin for ChangeMembers<NID, N>
impl<NID, N> UnsafeUnpin for ChangeMembers<NID, N>
impl<NID, N> UnwindSafe for ChangeMembers<NID, N>where
NID: RefUnwindSafe,
N: RefUnwindSafe,
Blanket Implementations§
impl<T> AppData for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
impl<T> AppDataResponse for Twhere
T: OptionalSend + OptionalSync + 'static + OptionalSerde,
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.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> 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