From 7b9f2b61a414472b6d7afc7b78bc88c3b4f8a05e Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 10 Mar 2020 23:47:52 +0100 Subject: [PATCH] common/intrusive_lru: implement plain, non-creational get(). Signed-off-by: Radoslaw Zarzynski --- src/common/intrusive_lru.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/common/intrusive_lru.h b/src/common/intrusive_lru.h index 31bbde38e65..422c24a14fb 100644 --- a/src/common/intrusive_lru.h +++ b/src/common/intrusive_lru.h @@ -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(&*iter)); + } else { + return nullptr; + } + } + void set_target_size(size_t target_size) { lru_target_size = target_size; evict(); -- 2.39.5