diff options
Diffstat (limited to 'MatrixRoomUtils.Core/RuntimeCache.cs')
-rw-r--r-- | MatrixRoomUtils.Core/RuntimeCache.cs | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/MatrixRoomUtils.Core/RuntimeCache.cs b/MatrixRoomUtils.Core/RuntimeCache.cs deleted file mode 100644 index 7ab3952..0000000 --- a/MatrixRoomUtils.Core/RuntimeCache.cs +++ /dev/null @@ -1,99 +0,0 @@ -using MatrixRoomUtils.Core.Extensions; -using MatrixRoomUtils.Core.Responses; -using MatrixRoomUtils.Core.StateEventTypes; - -namespace MatrixRoomUtils.Core; - -public class RuntimeCache { - public static bool WasLoaded = false; - - static RuntimeCache() => - Task.Run(async () => { - while (true) { - await Task.Delay(1000); - foreach (var (key, value) in GenericResponseCache) - if (value.Cache.Any()) - SaveObject("rory.matrixroomutils.generic_cache:" + key, value); - else - RemoveObject("rory.matrixroomutils.generic_cache:" + key); - } - }); - - public static string? LastUsedToken { get; set; } - public static AuthenticatedHomeServer CurrentHomeServer { get; set; } - public static Dictionary<string, UserInfo> LoginSessions { get; set; } = new(); - - public static Dictionary<string, HomeServerResolutionResult> HomeserverResolutionCache { get; set; } = new(); - // public static Dictionary<string, (DateTime cachedAt, ProfileResponse response)> ProfileCache { get; set; } = new(); - - public static Dictionary<string, ObjectCache<object>> GenericResponseCache { get; set; } = new(); - - public static Task Save { get; set; } = new Task(() => { Console.WriteLine("RuntimeCache.Save() was called, but no callback was set!"); }); - public static Action<string, object> SaveObject { get; set; } = (key, value) => { Console.WriteLine($"RuntimeCache.SaveObject({key}, {value}) was called, but no callback was set!"); }; - public static Action<string> RemoveObject { get; set; } = key => { Console.WriteLine($"RuntimeCache.RemoveObject({key}) was called, but no callback was set!"); }; -} - -public class UserInfo { - public ProfileResponse Profile { get; set; } = new(); - public LoginResponse LoginResponse { get; set; } - - public string AccessToken => LoginResponse.AccessToken; -} - -public class HomeServerResolutionResult { - public string Result { get; set; } - public DateTime ResolutionTime { get; set; } -} - -public class ObjectCache<T> where T : class { - public ObjectCache() => - //expiry timer - Task.Run(async () => { - while (Cache.Any()) { - await Task.Delay(1000); - foreach (var x in Cache.Where(x => x.Value.ExpiryTime < DateTime.Now).OrderBy(x => x.Value.ExpiryTime).Take(15).ToList()) - // Console.WriteLine($"Removing {x.Key} from cache"); - Cache.Remove(x.Key); - //RuntimeCache.SaveObject("rory.matrixroomutils.generic_cache:" + Name, this); - } - }); - - public Dictionary<string, GenericResult<T>> Cache { get; set; } = new(); - public string Name { get; set; } = null!; - - public GenericResult<T> this[string key] { - get { - if (Cache.ContainsKey(key)) { - // Console.WriteLine($"cache.get({key}): hit"); - // Console.WriteLine($"Found item in cache: {key} - {Cache[key].Result.ToJson(indent: false)}"); - if (Cache[key].ExpiryTime < DateTime.Now) - Console.WriteLine($"WARNING: item {key} in cache {Name} expired at {Cache[key].ExpiryTime}:\n{Cache[key].Result.ToJson(false)}"); - return Cache[key]; - } - - Console.WriteLine($"cache.get({key}): miss"); - return null; - } - set => Cache[key] = value; - // Console.WriteLine($"set({key}) = {Cache[key].Result.ToJson(indent:false)}"); - // Console.WriteLine($"new_state: {this.ToJson(indent:false)}"); - // Console.WriteLine($"New item in cache: {key} - {Cache[key].Result.ToJson(indent: false)}"); - // Console.Error.WriteLine("Full cache: " + Cache.ToJson()); - } - - public bool ContainsKey(string key) => Cache.ContainsKey(key); -} - -public class GenericResult<T> { - public GenericResult() { - //expiry timer - } - - public GenericResult(T? result, DateTime? expiryTime = null) : this() { - Result = result; - ExpiryTime = expiryTime; - } - - public T? Result { get; set; } - public DateTime? ExpiryTime { get; set; } = DateTime.Now; -} \ No newline at end of file |