radicle: use a struct to help announce success counts
It is easy to mix up the order of a tuple, so a struct is introduced instead to ensure that the correct counts are used.
This commit is contained in:
parent
5a0c14cf61
commit
aa7dcd92db
|
|
@ -153,7 +153,7 @@ impl Announcer {
|
|||
|
||||
/// Get the [`Progress`] of the [`Announcer`].
|
||||
pub fn progress(&self) -> Progress {
|
||||
let (synced, preferred) = self.success_counts();
|
||||
let SuccessCounts { preferred, synced } = self.success_counts();
|
||||
let unsynced = self.to_sync.len().saturating_sub(synced);
|
||||
Progress {
|
||||
preferred,
|
||||
|
|
@ -174,7 +174,7 @@ impl Announcer {
|
|||
}
|
||||
|
||||
fn is_target_reached(&self) -> Option<SuccessfulOutcome> {
|
||||
let (preferred, synced) = self.success_counts();
|
||||
let SuccessCounts { preferred, synced } = self.success_counts();
|
||||
let reached_preferred = self.target.preferred_seeds.is_empty()
|
||||
|| preferred >= self.target.preferred_seeds.len();
|
||||
|
||||
|
|
@ -188,19 +188,41 @@ impl Announcer {
|
|||
}
|
||||
}
|
||||
|
||||
fn success_counts(&self) -> (usize, usize) {
|
||||
fn success_counts(&self) -> SuccessCounts {
|
||||
self.synced
|
||||
.keys()
|
||||
.fold((0, 0), |(mut preferred, mut succeeded), nid| {
|
||||
succeeded += 1;
|
||||
.fold(SuccessCounts::default(), |counts, nid| {
|
||||
if self.target.preferred_seeds.contains(nid) {
|
||||
preferred += 1;
|
||||
counts.preferred().synced()
|
||||
} else {
|
||||
counts.synced()
|
||||
}
|
||||
(preferred, succeeded)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct SuccessCounts {
|
||||
preferred: usize,
|
||||
synced: usize,
|
||||
}
|
||||
|
||||
impl SuccessCounts {
|
||||
fn synced(self) -> Self {
|
||||
Self {
|
||||
synced: self.synced + 1,
|
||||
..self
|
||||
}
|
||||
}
|
||||
|
||||
fn preferred(self) -> Self {
|
||||
Self {
|
||||
preferred: self.preferred + 1,
|
||||
..self
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration of the [`Announcer`].
|
||||
pub struct AnnouncerConfig {
|
||||
local_node: NodeId,
|
||||
|
|
|
|||
Loading…
Reference in New Issue