Exemple #1
0
 void set_size(size_t new_size) {
   list<VPtr> to_release;
   {
     Mutex::Locker l(lock);
     max_size = new_size;
     trim_cache(&to_release);
   }
 }
Exemple #2
0
 void lru_add(K key, VPtr val, list<VPtr> *to_release) {
   if (contents.count(key)) {
     lru.splice(lru.begin(), lru, contents[key]);
   } else {
     lru.push_front(make_pair(key, val));
     contents[key] = lru.begin();
     trim_cache(to_release);
   }
 }
Exemple #3
0
 void lru_add(const K& key, const VPtr& val, list<VPtr> *to_release) {
   typename map<K, typename list<pair<K, VPtr> >::iterator>::iterator i =
     contents.find(key);
   if (i != contents.end()) {
     lru.splice(lru.begin(), lru, i->second);
   } else {
     ++size;
     lru.push_front(make_pair(key, val));
     contents[key] = lru.begin();
     trim_cache(to_release);
   }
 }
Exemple #4
0
 void set_size(size_t new_size) {
   Mutex::Locker l(lock);
   max_size = new_size;
   trim_cache();
 }
Exemple #5
0
 void _add(K key, V&& value) {
   lru.emplace_front(key, std::move(value)); // can't move key because we access it below
   contents[key] = lru.begin();
   trim_cache();
 }