slightly fewer msg/op for efficient broadcast

This commit is contained in:
Joe Ardent 2025-09-12 15:27:22 -07:00
parent f2af9d6a5a
commit 19cbde32fd

View file

@ -58,18 +58,22 @@ impl BCaster {
} else { } else {
self.store.clone() self.store.clone()
}; };
for v in self.store.iter().filter(|_| rng.gen_bool(0.20)) { for v in self.store.iter().filter(|_| rng.gen_bool(0.10)) {
goss.insert(*v); goss.insert(*v);
} }
if !goss.is_empty() && rng.gen_bool(0.5) { if !goss.is_empty() && rng.gen_bool(0.6) {
let goss: Vec<_> = goss.into_iter().collect(); let goss: Vec<_> = goss.into_iter().collect();
let payload: Payload = [("goss".to_string(), goss.into())].into_iter().collect(); let payload: Payload = [("goss".to_string(), goss.into())].into_iter().collect();
let body = Body::from_type("gossip").with_payload(payload); let body = Body::from_type("gossip").with_payload(payload);
runner.send(node, body.clone()); runner.send(node, body.clone());
let other = &self.others[rng.gen_range(0..self.others.len())];
runner.send(other, body);
} }
} }
let other = &self.others[rng.gen_range(0..self.others.len())];
let goss: Vec<_> = self.store.iter().cloned().collect();
let payload: Payload = [("goss".to_string(), goss.into())].into_iter().collect();
let body = Body::from_type("gossip").with_payload(payload);
runner.send(other, body);
} }
} }