fn handle_request()

in librabft-v2/src/data_sync.rs [183:207]


    fn handle_request(
        &self,
        _smr_context: &mut Context,
        request: Self::Request,
    ) -> Async<Self::Response> {
        let mut records = Vec::new();
        if let Some(store) = self.record_store_at(request.current_epoch) {
            records.push((
                request.current_epoch,
                store.unknown_records(request.known_quorum_certificates),
            ));
        }
        for i in (request.current_epoch.0 + 1)..(self.epoch_id().0 + 1) {
            let epoch_id = EpochId(i);
            let store = self
                .record_store_at(epoch_id)
                .expect("All record stores up to the current epoch should exist.");
            records.push((epoch_id, store.unknown_records(BTreeSet::new())));
        }
        let value = DataSyncResponse {
            current_epoch: self.epoch_id(),
            records,
        };
        Box::pin(future::ready(value))
    }