using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tango.FSE.BL
{
///
/// Represents an in-memory global cache manager.
///
public class MemoryCacheManager
{
private Dictionary _cacheDictionaries;
private static MemoryCacheManager _instance;
///
/// Gets the default singleton instance.
///
public static MemoryCacheManager Default
{
get
{
if (_instance == null)
{
_instance = new MemoryCacheManager();
}
return _instance;
}
}
///
/// Initializes a new instance of the class.
///
public MemoryCacheManager()
{
_cacheDictionaries = new Dictionary();
}
///
/// Gets the specified or creates and return a new one.
///
///
/// The name.
///
public MemoryCacheDictionary GetOrCreateCache(String name) where TValue : class
{
if (_cacheDictionaries.ContainsKey(name))
{
return _cacheDictionaries[name] as MemoryCacheDictionary;
}
else
{
var cacheDictionary = new MemoryCacheDictionary(name);
_cacheDictionaries[name] = cacheDictionary;
return cacheDictionary;
}
}
///
/// Gets the specified or creates and return a new one.
///
///
/// The name.
///
public MemoryCacheDoubleKeyDictionary GetOrCreateCache(String name) where TValue : class
{
if (_cacheDictionaries.ContainsKey(name))
{
return _cacheDictionaries[name] as MemoryCacheDoubleKeyDictionary;
}
else
{
var cacheDictionary = new MemoryCacheDoubleKeyDictionary(name);
_cacheDictionaries[name] = cacheDictionary;
return cacheDictionary;
}
}
///
/// Clears all stored by this manager.
///
public void ClearAll()
{
foreach (var cacheDictionary in _cacheDictionaries)
{
cacheDictionary.Value.Clear();
}
}
}
}