Files
SPT-Server-Build/Libraries/Core/Services/InMemoryCacheService.cs
T
2025-01-26 16:55:19 +00:00

55 lines
1.2 KiB
C#

using Core.Utils.Cloners;
using SptCommon.Annotations;
namespace Core.Services;
[Injectable(InjectionType.Singleton)]
public class InMemoryCacheService(
ICloner _cloner
)
{
protected Dictionary<string, object?> _cacheData = new();
// Store data into an in-memory object
// key to store data against
// Data to store in cache
public void StoreByKey<T>(string key, T dataToCache)
{
_cacheData[key] = _cloner.Clone(dataToCache);
}
// Retrieve data stored by a key
// key
// Stored data
public T? GetDataByKey<T>(string key)
{
if (_cacheData.ContainsKey(key))
{
return (T)_cacheData[key];
}
return default;
}
// Does data exist against the provided key
// Key to check for data against
// true if exists
public bool HasStoredDataByKey(string key)
{
return _cacheData.ContainsKey(key);
}
// Remove data stored against key
// Key to remove data against
public void ClearDataStoredByKey(string key)
{
_cacheData.Remove(key);
}
// Remove all data stored
public void ClearCache()
{
_cacheData.Clear();
}
}