public UserDetails GetOrCreateUser(string username, string connectionid) { try { GroupLock.EnterUpgradeableReadLock(); UserDetails userdetails = null; if (!Users.TryGetValue(connectionid, out userdetails)) { try { GroupLock.EnterWriteLock(); if (!Users.TryGetValue(connectionid, out userdetails)) { userdetails = new UserDetails() { ConnectionId = connectionid, Code = "", UserName = username, Rating = Single.MaxValue }; TryElevateUserToOwner(userdetails); Users.Add(connectionid, userdetails); } } finally { GroupLock.ExitWriteLock(); } } return(userdetails); } finally { GroupLock.ExitUpgradeableReadLock(); } }
public bool RemoveUser(UserDetails user) { try { GroupLock.EnterWriteLock(); if (IsOwner(user)) { Owner = null; } return(Users.Remove(user.ConnectionId)); } finally { GroupLock.ExitWriteLock(); } }