From bda2dfb12704e73278917126d56e7eaf6881d23f Mon Sep 17 00:00:00 2001 From: Piotr Szmyd Date: Wed, 10 Oct 2012 22:37:13 +0200 Subject: [PATCH] #19122: Added ICache.IsValid and ICache.TryGet methods. Work Item: 19122 --HG-- branch : 1.x --- src/Orchard/Caching/Cache.cs | 18 ++++++++++++++++++ src/Orchard/Caching/ICache.cs | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/Orchard/Caching/Cache.cs b/src/Orchard/Caching/Cache.cs index 5836377db..b618fc2ad 100644 --- a/src/Orchard/Caching/Cache.cs +++ b/src/Orchard/Caching/Cache.cs @@ -23,6 +23,24 @@ namespace Orchard.Caching { return entry.Result; } + public bool TryGet(TKey key, out TResult value){ + CacheEntry cacheEntry; + if (_entries.TryGetValue(key, out cacheEntry)){ + value = cacheEntry.Result; + return true; + } + value = default(TResult); + return false; + } + + public bool IsValid(TKey key){ + CacheEntry currentEntry; + if (_entries.TryGetValue(key, out currentEntry)){ + return currentEntry.Tokens.Any(t => !t.IsCurrent); + } + return false; + } + private CacheEntry AddEntry(TKey k, Func, TResult> acquire) { var entry = CreateEntry(k, acquire); PropagateTokens(entry); diff --git a/src/Orchard/Caching/ICache.cs b/src/Orchard/Caching/ICache.cs index 691484d95..24fbb8b4d 100644 --- a/src/Orchard/Caching/ICache.cs +++ b/src/Orchard/Caching/ICache.cs @@ -3,5 +3,7 @@ namespace Orchard.Caching { public interface ICache { TResult Get(TKey key, Func, TResult> acquire); + bool IsValid(TKey key); + bool TryGet(TKey key, out TResult value); } }