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))
}