MCPcopy Create free account
hub / github.com/Firstyear/opensuse-proxy-cache / update_all_userdata

Method update_all_userdata

arc-disk-cache/src/lib.rs:724–776  ·  view source on GitHub ↗
(&self, check: C, mut func: F)

Source from the content-addressed store, hash-verified

722 }
723
724 pub fn update_all_userdata<F, C>(&self, check: C, mut func: F)
725 where
726 C: Fn(&D) -> bool,
727 F: FnMut(&mut D),
728 {
729 let mut wrtxn = self.cache.write_stats(TraceStat::default());
730
731 let keys: Vec<_> = wrtxn
732 .iter()
733 .filter_map(|(k, mref)| {
734 if check(&mref.userdata) {
735 Some(k.clone())
736 } else {
737 None
738 }
739 })
740 .collect();
741
742 for k in keys {
743 if let Some(mref) = wrtxn.get_mut(&k, false) {
744 func(&mut mref.userdata);
745
746 let objmeta = CacheObjMeta {
747 key: mref.key.clone(),
748 path: mref.fhandle.path.clone(),
749 crc: mref.fhandle.crc,
750 userdata: mref.userdata.clone(),
751 };
752
753 // This will truncate the metadata if it does exist.
754 let m_file = File::create(&mref.fhandle.meta_path)
755 .map(BufWriter::new)
756 .map_err(|e| {
757 error!("Failed to open metadata {:?}", e);
758 })
759 .unwrap();
760
761 serde_json::to_writer(m_file, &objmeta)
762 .map_err(|e| {
763 error!("Failed to write metadata {:?}", e);
764 })
765 .unwrap();
766
767 info!("Persisted metadata for {:?}", &mref.fhandle.meta_path);
768 }
769 }
770
771 debug!("commit");
772 let stats = wrtxn.commit();
773 let mut stat_guard = self.stats.write();
774 (*stat_guard).update(stats);
775 stat_guard.commit();
776 }
777
778 // Remove a key
779 pub fn remove(&self, k: K) {

Callers

nothing calls this directly

Calls 1

updateMethod · 0.80

Tested by

no test coverage detected