aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/cache/thread_safe_cache.h
diff options
context:
space:
mode:
authorivanmautin <ivanmautin@yandex-team.com>2024-06-06 16:16:48 +0300
committerivanmautin <ivanmautin@yandex-team.com>2024-06-06 16:32:57 +0300
commit7e1624f2fd672349e2f89baffeca12ef8272ec8d (patch)
tree94ace8996703dad25ce4031005691c45b9f9ad8c /library/cpp/cache/thread_safe_cache.h
parent2123e799dc1993fb65554a96fbf38f94aa588978 (diff)
downloadydb-7e1624f2fd672349e2f89baffeca12ef8272ec8d.tar.gz
add GetOrNull method to threadsafe cache
2c3ce3e36d35b563fe21b581380310ac84007f57
Diffstat (limited to 'library/cpp/cache/thread_safe_cache.h')
-rw-r--r--library/cpp/cache/thread_safe_cache.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/library/cpp/cache/thread_safe_cache.h b/library/cpp/cache/thread_safe_cache.h
index 08c899ad3d..e77d1a45fd 100644
--- a/library/cpp/cache/thread_safe_cache.h
+++ b/library/cpp/cache/thread_safe_cache.h
@@ -49,6 +49,16 @@ namespace NPrivate {
Cache.Update(key, value);
}
+ const TPtr GetOrNull(TArgs... args) {
+ Key key = Callbacks.GetKey(args...);
+ TReadGuard r(Mutex);
+ auto iter = Cache.Find(key);
+ if (iter == Cache.End()) {
+ return nullptr;
+ }
+ return iter.Value();
+ }
+
const TPtr Get(TArgs... args) const {
return GetValue<true>(args...);
}