// // Summary: // Removes a username id from a given chat room by updating the chat room's active connection pool. // // Returns: // ChatRoomConnectionPool - an updated chat room connection pool without the user connection. // // Raises: // ObjectDoesNotExistException - the chat room or the user was not found. public async Task <Tuple <ChatRoomConnectionPool, string> > RemoveUserFromChatRoomConnectionPool(string chatRoomName, string userName) { var chatRoomConnectionPool = await GetChatRoomConnectionPool(chatRoomName); var user = await _userService.GetUser(userName); var chatRoomId = chatRoomConnectionPool.ChatRoomId; var serverInstanceId = GlobalState.ServerInstanceId; var removedConnectionId = ChatRoomLogic.GetConnectionIdFromChatRoomConnectionPool(user.Id, chatRoomConnectionPool); var updatedChatRoomConnectionPool = ChatRoomLogic.DecrementChatRoomConnectionPool(serverInstanceId, user.Id, chatRoomConnectionPool); await _redis.SetKey(chatRoomId, updatedChatRoomConnectionPool, null); return(new Tuple <ChatRoomConnectionPool, string>(updatedChatRoomConnectionPool, removedConnectionId)); }