|
|
|
|
@ -1,7 +1,8 @@
|
|
|
|
|
use std::collections::BTreeMap; |
|
|
|
|
use std::collections::{BTreeMap, HashMap}; |
|
|
|
|
|
|
|
|
|
use async_trait::async_trait; |
|
|
|
|
use futures_util::{stream::FuturesUnordered, StreamExt}; |
|
|
|
|
use lru_cache::LruCache; |
|
|
|
|
use ruma::{ |
|
|
|
|
api::federation::discovery::{ServerSigningKeys, VerifyKey}, |
|
|
|
|
signatures::Ed25519KeyPair, |
|
|
|
|
@ -148,28 +149,36 @@ lasttimelinecount_cache: {lasttimelinecount_cache}\n"
|
|
|
|
|
|
|
|
|
|
fn clear_caches(&self, amount: u32) { |
|
|
|
|
if amount > 0 { |
|
|
|
|
self.pdu_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.pdu_cache.lock().unwrap(); |
|
|
|
|
*c = LruCache::new(c.capacity()); |
|
|
|
|
} |
|
|
|
|
if amount > 1 { |
|
|
|
|
self.shorteventid_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.shorteventid_cache.lock().unwrap(); |
|
|
|
|
*c = LruCache::new(c.capacity()); |
|
|
|
|
} |
|
|
|
|
if amount > 2 { |
|
|
|
|
self.auth_chain_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.auth_chain_cache.lock().unwrap(); |
|
|
|
|
*c = LruCache::new(c.capacity()); |
|
|
|
|
} |
|
|
|
|
if amount > 3 { |
|
|
|
|
self.eventidshort_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.eventidshort_cache.lock().unwrap(); |
|
|
|
|
*c = LruCache::new(c.capacity()); |
|
|
|
|
} |
|
|
|
|
if amount > 4 { |
|
|
|
|
self.statekeyshort_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.statekeyshort_cache.lock().unwrap(); |
|
|
|
|
*c = LruCache::new(c.capacity()); |
|
|
|
|
} |
|
|
|
|
if amount > 5 { |
|
|
|
|
self.our_real_users_cache.write().unwrap().clear(); |
|
|
|
|
let c = &mut *self.our_real_users_cache.write().unwrap(); |
|
|
|
|
*c = HashMap::new(); |
|
|
|
|
} |
|
|
|
|
if amount > 6 { |
|
|
|
|
self.appservice_in_room_cache.write().unwrap().clear(); |
|
|
|
|
let c = &mut *self.appservice_in_room_cache.write().unwrap(); |
|
|
|
|
*c = HashMap::new(); |
|
|
|
|
} |
|
|
|
|
if amount > 7 { |
|
|
|
|
self.lasttimelinecount_cache.lock().unwrap().clear(); |
|
|
|
|
let c = &mut *self.lasttimelinecount_cache.lock().unwrap(); |
|
|
|
|
*c = HashMap::new(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|