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); } }