From 09f2dfd083c4fcdce4c5ca7376353906eb025c42 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 24 Oct 2026 18:18:29 +0200 Subject: put remake content into blobs --- src/state.rs | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src/state.rs') diff --git a/src/state.rs b/src/state.rs index 0f30732..1ea5aae 100644 --- a/src/state.rs +++ b/src/state.rs @@ -640,6 +640,17 @@ impl AppState { self.transport.local_id() } + /// Peers that are active and last said they are on our epoch. + pub(crate) async fn active_peers_on_local_epoch(&self) -> Vec { + let epoch = self.local_epoch(); + self.peer_summaries() + .await + .into_iter() + .filter(|peer| peer.active && peer.epoch == Some(epoch)) + .map(|peer| peer.id) + .collect() + } + pub(crate) fn lock_rtt(&self) -> std::sync::MutexGuard<'_, crate::swarm::rtt::RttTable> { self.rtt .lock() @@ -1037,18 +1048,19 @@ impl Host for AppState { ) -> impl Future> + Send { let state = self.clone(); async move { - let epoch = state.local_epoch(); - let peers: Vec = state - .peer_summaries() - .await - .into_iter() - .filter(|peer| peer.active && peer.epoch == Some(epoch)) - .map(|peer| peer.id) - .collect(); + let peers = state.active_peers_on_local_epoch().await; crate::swarm::blob::fetch_change(&state, hash, peers).await } } + fn fetch_content(&self, hash: [u8; 32]) -> impl Future>> + Send { + let state = self.clone(); + async move { + let peers = state.active_peers_on_local_epoch().await; + crate::swarm::blob::fetch_content(&state, hash, peers).await + } + } + fn request_sync(&self) { crate::swarm::source::resync_everyone(self); } -- cgit v1.3.1