summaryrefslogtreecommitdiffstats
path: root/src/swarm/blob.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-26 04:20:52 +0100
committertv <tv@krebsco.de>2026-10-26 04:20:52 +0100
commit7b7dcb5a77061cb69d368de263a02b5ad26fbf51 (patch)
treed3255ce629cb60059cb55191dc206d0f64ca645e /src/swarm/blob.rs
parentd668ce2ff8f308e54c1c7a2c145cb3479cab899d (diff)
unify lock logic
Diffstat (limited to 'src/swarm/blob.rs')
-rw-r--r--src/swarm/blob.rs13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/swarm/blob.rs b/src/swarm/blob.rs
index 42cfbf3..58522fa 100644
--- a/src/swarm/blob.rs
+++ b/src/swarm/blob.rs
@@ -29,6 +29,7 @@ use tokio::sync::{Semaphore, mpsc};
use tokio::time::Instant;
use tracing::{debug, info, warn};
+use crate::locks::MutexExt;
use crate::state::AppState;
use crate::transport::{BlobBody, BlobId, BlobMessage, ParsedMessage};
@@ -80,25 +81,19 @@ impl Blobs {
fn fetches(
&self,
) -> MutexGuard<'_, HashMap<BlobId, mpsc::UnboundedSender<(String, BlobBody)>>> {
- self.fetches
- .lock()
- .unwrap_or_else(|poisoned| poisoned.into_inner())
+ self.fetches.lock_or_recover()
}
fn cached(&self, id: BlobId) -> Option<Arc<Prepared>> {
self.cache
- .lock()
- .unwrap_or_else(|poisoned| poisoned.into_inner())
+ .lock_or_recover()
.as_ref()
.filter(|(cached, _)| *cached == id)
.map(|(_, prepared)| Arc::clone(prepared))
}
fn remember(&self, id: BlobId, prepared: Arc<Prepared>) {
- *self
- .cache
- .lock()
- .unwrap_or_else(|poisoned| poisoned.into_inner()) = Some((id, prepared));
+ *self.cache.lock_or_recover() = Some((id, prepared));
}
}