Struct paxos_rust::proposer::Proposer [−][src]
pub struct Proposer<T> { pub id: u64, pub messenger: Option<Box<Messenger<T>>>, pub value: Option<Arc<T>>, pub proposal_n: u64, pub last_accepted_n: u64, pub promises_received: HashMap<u64, HashSet<PromiseData<T>>>, pub accepted_received: HashMap<u64, HashSet<AcceptedData<T>>>, pub quorum: u8, }
A Proposer advocates a client request, attempting to convince the Acceptors to agree on it, and acting as a coordinator to move the protocol forward when conflicts occur.
Fields
id: u64
Proposer
's ID
messenger: Option<Box<Messenger<T>>>
Messenger
specifying communication with other nodes
value: Option<Arc<T>>
The proposed value
proposal_n: u64
The highest proposal number seen
last_accepted_n: u64
The last proposal that was accepted
promises_received: HashMap<u64, HashSet<PromiseData<T>>>
Promises received (proposal_n => data)
accepted_received: HashMap<u64, HashSet<AcceptedData<T>>>
Accepted messages received (proposal_n => data)
quorum: u8
The minimum number of Acceptor
s needed to continue
Methods
impl<T: 'static> Proposer<T> where
T: Eq + Hash + Clone,
[src]
impl<T: 'static> Proposer<T> where
T: Eq + Hash + Clone,
pub fn new(id: u64, quorum: u8) -> Self
[src]
pub fn new(id: u64, quorum: u8) -> Self
Creates a new Proposer
.
pub fn prepare(&mut self, value: T)
[src]
pub fn prepare(&mut self, value: T)
The first phase. Creates a proposal.
pub fn receive_promise(&mut self, msg: Message<T>)
[src]
pub fn receive_promise(&mut self, msg: Message<T>)
Receives a Promise
message from an Acceptor
.
pub fn accept(&mut self)
[src]
pub fn accept(&mut self)
The second phase. Sets a value for the proposal, and builds an Accept
request.
pub fn receive_accepted(&mut self, msg: Message<T>)
[src]
pub fn receive_accepted(&mut self, msg: Message<T>)
Receives an Accepted
message from an Acceptor
.