Struct brb::deterministic_brb::DeterministicBRB [−][src]
DeterministicBRB – the heart and soul of BRB.
Fields
membership: State<A, SA, S>
The identity of a process
pending_proof: HashMap<Msg<A, BRBDT::Op>, BTreeMap<A, S>>
Msgs this process has initiated and is waiting on BFT agreement for from the network.
received: VClock<A>
The clock representing the most recently received messages from each process.
These are messages that have been acknowledged but not yet
This clock must at all times be greator or equal to the delivered
clock.
delivered: VClock<A>
The clock representing the most recent msgs we’ve delivered to the underlying datatype dt
.
history_from_source: BTreeMap<A, Vec<(Msg<A, BRBDT::Op>, BTreeMap<A, S>)>>
History is maintained to onboard new members
dt: BRBDT
The state of the datatype that we are running BFT over. This can be the causal bank described in AT2, or it can be a CRDT.
Implementations
impl<A: Actor<S>, SA: SigningActor<A, S>, S: Sig, BRBDT: BRBDataType<A>> DeterministicBRB<A, SA, S, BRBDT>
[src]
pub fn new() -> Self
[src]
returns a new DeterministicBRB
pub fn actor(&self) -> A
[src]
returns the Actor
pub fn peers(&self) -> Result<BTreeSet<A>, Error<A, S, BRBDT::ValidationError>>
[src]
returns a set of known peers
pub fn force_join(&mut self, peer: A)
[src]
Locally adds a peer to voting group without going through the regular brb_membership join + voting process.
pub fn force_leave(&mut self, peer: A)
[src]
Locally removes a peer from voting group without going through the regular brb_membership leave + voting process.
pub fn request_membership(
&mut self,
actor: A
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
[src]
&mut self,
actor: A
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
Proposes membership for an Actor.
The node proposing membership must already be a voting member and thus typically will be proposing to add a different non-voting actor.
In other words, a node may not directly propose to add itself, but instead must have a sponsor.
pub fn kill_peer(
&mut self,
actor: A
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
[src]
&mut self,
actor: A
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
Proposes that a member be removed from the voting group.
The node proposing membership must already be a voting member and may propose that self or another member be removed.
See https://github.com/maidsafe/brb/issues/18
pub fn anti_entropy(
&self,
peer: A
) -> Result<Packet<A, S, BRBDT::Op>, Error<A, S, BRBDT::ValidationError>>
[src]
&self,
peer: A
) -> Result<Packet<A, S, BRBDT::Op>, Error<A, S, BRBDT::ValidationError>>
Sends an AntiEntropy packet to the given peer, indicating the last generation we have seen.
The remote peer should respond with history since our last-seen generation to bring our peer up-to-date.
If we have not seen any generation, then this becomes a means to bootstrap our node from the “genesis” generation.
pub fn exec_op(
&self,
op: BRBDT::Op
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
[src]
&self,
op: BRBDT::Op
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
Initiates an operation for the BRBDataType being secured by BRB.
pub fn handle_packet(
&mut self,
packet: Packet<A, S, BRBDT::Op>
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
[src]
&mut self,
packet: Packet<A, S, BRBDT::Op>
) -> Result<Vec<Packet<A, S, BRBDT::Op>>, Error<A, S, BRBDT::ValidationError>>
handles an incoming BRB Packet.
Trait Implementations
impl<A: Debug + Actor<S>, SA: Debug + SigningActor<A, S>, S: Debug + Sig, BRBDT: Debug + BRBDataType<A>> Debug for DeterministicBRB<A, SA, S, BRBDT> where
BRBDT::Op: Debug,
BRBDT::Op: Debug,
[src]
BRBDT::Op: Debug,
BRBDT::Op: Debug,
impl<A: Actor<S>, SA: SigningActor<A, S>, S: Sig, BRBDT: BRBDataType<A>> Default for DeterministicBRB<A, SA, S, BRBDT>
[src]
Auto Trait Implementations
impl<A, SA, S, BRBDT> RefUnwindSafe for DeterministicBRB<A, SA, S, BRBDT> where
A: RefUnwindSafe,
BRBDT: RefUnwindSafe,
S: RefUnwindSafe,
SA: RefUnwindSafe,
<BRBDT as BRBDataType<A>>::Op: RefUnwindSafe,
A: RefUnwindSafe,
BRBDT: RefUnwindSafe,
S: RefUnwindSafe,
SA: RefUnwindSafe,
<BRBDT as BRBDataType<A>>::Op: RefUnwindSafe,
impl<A, SA, S, BRBDT> Send for DeterministicBRB<A, SA, S, BRBDT> where
A: Send,
BRBDT: Send,
S: Send,
SA: Send,
<BRBDT as BRBDataType<A>>::Op: Send,
A: Send,
BRBDT: Send,
S: Send,
SA: Send,
<BRBDT as BRBDataType<A>>::Op: Send,
impl<A, SA, S, BRBDT> Sync for DeterministicBRB<A, SA, S, BRBDT> where
A: Sync,
BRBDT: Sync,
S: Sync,
SA: Sync,
<BRBDT as BRBDataType<A>>::Op: Sync,
A: Sync,
BRBDT: Sync,
S: Sync,
SA: Sync,
<BRBDT as BRBDataType<A>>::Op: Sync,
impl<A, SA, S, BRBDT> Unpin for DeterministicBRB<A, SA, S, BRBDT> where
A: Unpin,
BRBDT: Unpin,
SA: Unpin,
<BRBDT as BRBDataType<A>>::Op: Unpin,
A: Unpin,
BRBDT: Unpin,
SA: Unpin,
<BRBDT as BRBDataType<A>>::Op: Unpin,
impl<A, SA, S, BRBDT> UnwindSafe for DeterministicBRB<A, SA, S, BRBDT> where
A: RefUnwindSafe + UnwindSafe,
BRBDT: UnwindSafe,
S: RefUnwindSafe,
SA: UnwindSafe,
<BRBDT as BRBDataType<A>>::Op: RefUnwindSafe + UnwindSafe,
A: RefUnwindSafe + UnwindSafe,
BRBDT: UnwindSafe,
S: RefUnwindSafe,
SA: UnwindSafe,
<BRBDT as BRBDataType<A>>::Op: RefUnwindSafe + UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,