using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
namespace Umbraco.Core.Cache
{
///
/// A cache provider that caches items in the HttpContext.Items
///
internal class HttpRequestCacheProvider : DictionaryCacheProdiverBase
{
private readonly Func _context;
public HttpRequestCacheProvider(HttpContext context)
{
_context = () => new HttpContextWrapper(context);
}
public HttpRequestCacheProvider(Func context)
{
_context = context;
}
protected override DictionaryCacheWrapper DictionaryCache
{
get
{
var ctx = _context();
return new DictionaryCacheWrapper(
ctx.Items,
o => ctx.Items[o],
o => ctx.Items.Remove(o));
}
}
public override T GetCacheItem(string cacheKey, Func getCacheItem)
{
var ctx = _context();
var ck = GetCacheKey(cacheKey);
if (ctx.Items[ck] == null)
{
ctx.Items[ck] = getCacheItem();
}
return (T)ctx.Items[ck];
}
}
}