in librabft-v2/src/node.rs [179:202]
fn process_pacemaker_actions(
&mut self,
pacemaker_actions: PacemakerUpdateActions<Context>,
clock: NodeTime,
context: &mut Context,
) -> NodeUpdateActions<Context> {
let actions = NodeUpdateActions {
next_scheduled_update: pacemaker_actions.next_scheduled_update,
should_broadcast: pacemaker_actions.should_broadcast,
should_query_all: pacemaker_actions.should_query_all,
should_send: pacemaker_actions.should_send,
};
if let Some(round) = pacemaker_actions.should_create_timeout {
self.record_store
.create_timeout(context.author(), round, context);
// Prevent voting at a round for which we have created a timeout already.
self.latest_voted_round.max_update(round);
}
if let Some(previous_qc_hash) = pacemaker_actions.should_propose_block {
self.record_store
.propose_block(context, previous_qc_hash, clock);
}
actions
}