Пример #1
0
        //
        // 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));
        }