Make Resource aware of its own hash (#4187)

* Fix future message handler field name

* Add Resource::hash()

* Move all remaining resource types from core-types to graphene-resources

* Review
This commit is contained in:
Timon
2026-05-31 23:08:01 +00:00
committed by GitHub
parent 78679a5ba2
commit e32ff4b7f0
11 changed files with 96 additions and 92 deletions

View File

@@ -53,7 +53,7 @@ impl MmapResourceStorage {
let path = self.path_for(hash);
let mmap = Self::open_mmap(&path)?;
let resource = Resource::new(MmappedBytes(mmap));
let resource = Resource::new_unchecked(MmappedBytes(mmap), *hash);
self.cache.write().unwrap_or_else(|poisoned| poisoned.into_inner()).insert(*hash, resource.clone());
Some(resource)

View File

@@ -81,7 +81,7 @@ impl ResourceStorage for OpfsResourceStorage {
let mut bytes = None;
if !guard.cache.contains_key(&hash) {
let resource_bytes = Arc::<[u8]>::from(data);
guard.cache.insert(hash, Resource::new(resource_bytes.clone()));
guard.cache.insert(hash, Resource::new_unchecked(resource_bytes.clone(), hash));
bytes = Some(resource_bytes);
}
@@ -302,7 +302,7 @@ async fn read_from_opfs(inner: Arc<Mutex<Inner>>, hash: ResourceHash) -> Option<
return None;
}
let resource = Resource::new(bytes);
let resource = Resource::new_unchecked(bytes, hash);
let mut guard = inner.lock().unwrap();
if let Some(resource) = guard.cache.get(&hash) {
return Some(resource.clone());