MCPcopy Index your code
hub / github.com/Firstyear/opensuse-proxy-cache / cache_mgr

Function cache_mgr

opensuse-proxy-cache/src/memcache.rs:28–58  ·  view source on GitHub ↗
(
    map: Arc<HashMap<String, Arc<MemCacheObj>>>,
    mut submit_rx: Receiver<MemCacheMeta>,
)

Source from the content-addressed store, hash-verified

26}
27
28async fn cache_mgr(
29 map: Arc<HashMap<String, Arc<MemCacheObj>>>,
30 mut submit_rx: Receiver<MemCacheMeta>,
31) {
32 // Wait on the channel, and when we get something proceed from there.
33 while let Some(meta) = submit_rx.recv().await {
34 log::error!("mem_cache_mgr got -> {:?}", meta.req_path);
35 let MemCacheMeta {
36 req_path, headers, content, blob, refresh
37 } = meta;
38
39 let etag = headers
40 .iter()
41 .find_map(|(hv, hk)| {
42 if hv == "etag" {
43 Some(hk.clone())
44 } else {
45 None
46 }
47 })
48 .unwrap_or_else(|| "".to_string());
49
50 let obj = Arc::new(MemCacheObj {
51 etag, refresh, headers, content, blob
52 });
53
54 let mut wrtxn = map.write();
55 let _prev = wrtxn.insert(req_path, obj);
56 wrtxn.commit();
57 }
58}
59
60pub struct MemCache {
61 map: Arc<HashMap<String, Arc<MemCacheObj>>>,

Callers 1

newMethod · 0.70

Calls 1

insertMethod · 0.80

Tested by

no test coverage detected