]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
common/intrusive_lru: implement plain, non-creational get().
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 10 Mar 2020 22:47:52 +0000 (23:47 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 7 Jul 2020 10:46:10 +0000 (12:46 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/common/intrusive_lru.h

index 31bbde38e65d4778f86f06611b2622f335c7cb25..422c24a14fb615eb8deda188b93eea97d717015a 100644 (file)
@@ -148,6 +148,19 @@ public:
     }
   }
 
+  /**
+   * Returns the TRef corresponding to k if it exists or
+   * nullptr otherwise.
+   */
+  TRef get(const K &k) {
+    if (auto iter = lru_set.find(k); iter != std::end(lru_set)) {
+      access(*iter);
+      return TRef(static_cast<T*>(&*iter));
+    } else {
+      return nullptr;
+    }
+  }
+
   void set_target_size(size_t target_size) {
     lru_target_size = target_size;
     evict();