fn proposed_block()

in librabft-v2/src/record_store.rs [611:634]


    fn proposed_block(
        &self,
        pacemaker: &dyn Pacemaker<Context>,
    ) -> Option<(BlockHash<Context::HashValue>, Round, Context::Author)> {
        if self.epoch_id != pacemaker.active_epoch()
            || self.current_round != pacemaker.active_round()
        {
            // Pacemaker is behind. We have already cleaned up proposals at this round.
            return None;
        }
        if let Some(leader) = pacemaker.active_leader() {
            match &self.current_proposed_block {
                None => None,
                Some(hash) => {
                    let block = self.block(*hash).unwrap();
                    assert_eq!(block.value.round, self.current_round);
                    assert_eq!(block.value.author, leader);
                    Some((*hash, block.value.round, block.value.author))
                }
            }
        } else {
            None
        }
    }