private void ProcessNewUsers(IEnumerable <User> users) { if (users == null) { return; } var usersArray = users as User[] ?? users.ToArray(); if (!usersArray.Any()) { return; } _lastUserId = usersArray.Last().Id; lock (UsersStorage) { foreach (var user in usersArray) { if (!UsersStorage.ContainsKey(user.Id)) { UsersStorage.Add(user.Id, user); } } } NewUsersEvent?.Invoke(this, usersArray); }
public void SetUserInfo(int userId, UserInfo userInfo) { lock (UsersStorage) { if (!UsersStorage.ContainsKey(userId)) { throw new ArgumentException("No such user exists"); } var user = UsersStorage[userId].CloneJson(); user.UserInfo = userInfo; UsersStorage[userId] = user; if (_newUserInfoHandlers.ContainsKey(userId)) { _newUserInfoHandlers[userId]?.Invoke(this, UsersStorage[userId]); } } }
public void SetUser(User user) { lock (UsersStorage) { if (UsersStorage.ContainsKey(user.Id)) { UsersStorage[user.Id] = user; if (_newUserInfoHandlers.ContainsKey(user.Id)) { _newUserInfoHandlers[user.Id]?.Invoke(this, user); } } else { UsersStorage.Add(user.Id, user); NewUsersEvent?.Invoke(this, new[] { user }); } } }