]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/simple_cache: parameterize map<> comparator
authorSage Weil <sage@redhat.com>
Thu, 23 Jul 2015 13:16:09 +0000 (09:16 -0400)
committerSage Weil <sage@redhat.com>
Fri, 7 Aug 2015 14:16:03 +0000 (10:16 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/simple_cache.hpp

index 30abd0a3ad8d23807e00bc2c54e67107b78f9ded..8038306adf8b559fffa3ee31d84ae13feebb9302 100644 (file)
 #include "common/Mutex.h"
 #include "common/Cond.h"
 
-template <class K, class V>
+template <class K, class V, class C = std::less<K> >
 class SimpleLRU {
   Mutex lock;
   size_t max_size;
-  map<K, typename list<pair<K, V> >::iterator> contents;
+  map<K, typename list<pair<K, V> >::iterator, C> contents;
   list<pair<K, V> > lru;
-  map<K, V> pinned;
+  map<K, V, C> pinned;
 
   void trim_cache() {
     while (lru.size() > max_size) {
@@ -52,7 +52,7 @@ public:
 
   void clear_pinned(K e) {
     Mutex::Locker l(lock);
-    for (typename map<K, V>::iterator i = pinned.begin();
+    for (typename map<K, V, C>::iterator i = pinned.begin();
         i != pinned.end() && i->first <= e;
         pinned.erase(i++)) {
       if (!contents.count(i->first))
@@ -64,7 +64,7 @@ public:
 
   void clear(K key) {
     Mutex::Locker l(lock);
-    typename map<K, typename list<pair<K, V> >::iterator>::iterator i =
+    typename map<K, typename list<pair<K, V> >::iterator, C>::iterator i =
       contents.find(key);
     if (i == contents.end())
       return;