using System; using System.Collections.Generic; namespace Asb.Base.V2; public class SysAuthenticatorClientCache : SynchronizedKeyedCollection { private static readonly SysAuthenticatorClientCache clientConnections = new SysAuthenticatorClientCache(); private static object cacheLockObject = new object(); private SysAuthenticatorClientCache() { } public static IEnumerable GetAllClientAuthenticators() { List list = new List(); lock (cacheLockObject) { list.AddRange(clientConnections.Items); return list; } } public static void AddClientAuthenticator(SystemAuthenticationClientAuthentication clientAuthenticator) { if (clientAuthenticator == null) { return; } lock (cacheLockObject) { if (!clientConnections.Contains(clientAuthenticator.ConnectionId)) { clientConnections.Add(clientAuthenticator); } } } public static SystemAuthenticationClientAuthentication GetClientAuthenticator(Guid connectionId) { SystemAuthenticationClientAuthentication result = null; lock (cacheLockObject) { if (clientConnections.Contains(connectionId)) { result = clientConnections[connectionId]; } } return result; } public static SystemAuthenticationClientAuthentication RemoveClientAuthenticator(Guid connectionId) { SystemAuthenticationClientAuthentication result = null; lock (cacheLockObject) { if (clientConnections.Contains(connectionId)) { result = clientConnections[connectionId]; clientConnections.Remove(connectionId); } } return result; } protected override Guid GetKeyForItem(SystemAuthenticationClientAuthentication item) { return item.ConnectionId; } }