diff options
| author | tv <tv@krebsco.de> | 2026-10-24 18:18:29 +0200 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-24 18:18:29 +0200 |
| commit | 09f2dfd083c4fcdce4c5ca7376353906eb025c42 (patch) | |
| tree | e13141f10e3854408bd70d18d1bf31581abe5458 /src/state.rs | |
| parent | 371e52cb48bae99232547f6fae6a0487a85c2d04 (diff) | |
put remake content into blobs
Diffstat (limited to 'src/state.rs')
| -rw-r--r-- | src/state.rs | 28 |
1 files changed, 20 insertions, 8 deletions
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<String> { + 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<Output = Result<automerge::Change>> + Send { let state = self.clone(); async move { - let epoch = state.local_epoch(); - let peers: Vec<String> = 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<Output = Result<Vec<u8>>> + 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); } |
