1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-11-01 00:12:30 +01:00
Sonarr/NzbDrone.Common/Cache/CacheManger.cs

48 lines
1.2 KiB
C#
Raw Normal View History

2013-05-01 03:11:00 +02:00
using System;
2013-05-31 01:32:50 +02:00
using System.Collections.Generic;
2013-05-01 03:11:00 +02:00
using NzbDrone.Common.EnsureThat;
namespace NzbDrone.Common.Cache
{
public interface ICacheManger
2013-05-01 03:11:00 +02:00
{
ICached<T> GetCache<T>(Type host, string name);
ICached<T> GetCache<T>(Type host);
2013-05-31 01:32:50 +02:00
//ICollection<ICached<T>> Caches<T> { get;}
void Clear();
ICollection<ICached> Caches { get; }
}
public class CacheManger : ICacheManger
{
2013-05-31 01:32:50 +02:00
private readonly ICached<ICached> _cache;
2013-05-01 03:11:00 +02:00
public CacheManger()
2013-05-01 03:11:00 +02:00
{
2013-05-31 01:32:50 +02:00
_cache = new Cached<ICached>();
2013-05-01 03:11:00 +02:00
}
public ICached<T> GetCache<T>(Type host)
2013-05-01 03:11:00 +02:00
{
Ensure.That(() => host).IsNotNull();
return GetCache<T>(host, host.FullName);
}
2013-05-31 01:32:50 +02:00
public void Clear()
{
_cache.Clear();
}
public ICollection<ICached> Caches { get { return _cache.Values; } }
public ICached<T> GetCache<T>(Type host, string name)
{
Ensure.That(() => host).IsNotNull();
Ensure.That(() => name).IsNotNullOrWhiteSpace();
return (ICached<T>)_cache.Get(host.FullName + "_" + name, () => new Cached<T>());
2013-05-01 03:11:00 +02:00
}
}
}