Exemple #1
0
        public static ChatRoomConnectionPool BuildChatRoomConnectionPoolEmpty(Guid chatRoomId)
        {
            var emptyChatConnectionPool = new ChatRoomConnectionPool()
            {
                ChatRoomId             = chatRoomId,
                TotalActiveConnections = 0,                          // no users
                ActiveConnectionsLimit = 6,
                ServerInstances        = new List <ServerInstance>() // no servers hosting this room
            };

            return(emptyChatConnectionPool);
        }
Exemple #2
0
        //
        // Summary:
        //   Gets all the users connected to a given chat room across all application instances hosting such room.
        //   If the room is not found, it raises an exception.
        //
        // Raises:
        //   ObjectDoesNotExistException - if the chat room was not found.
        public async Task <ChatRoomConnectionPool> GetChatRoomConnectionPool(string chatRoomName)
        {
            _logger.LogInformation("Getting connection store for chat room name: {chatRoomName:l}", chatRoomName);
            var chatRoom = await GetChatRoom(chatRoomName);

            _logger.LogInformation("Chat room exists, attempting to retrieve a previous connection pool from Redis...");
            var chatRoomActiveConnectionPool = await _redis.GetKey <ChatRoomConnectionPool>(chatRoom.Id);

            if (chatRoomActiveConnectionPool != null)
            {
                return(chatRoomActiveConnectionPool);
            }

            _logger.LogInformation("Chat room had no previous connection pool on Redis. Creating a new one...");
            var newChatRoomConnectionPool = new ChatRoomConnectionPool
            {
                ChatRoomId             = chatRoom.Id,
                ActiveConnectionsLimit = chatRoom.ActiveConnectionsLimit,
                TotalActiveConnections = 0,
                ServerInstances        = new List <ServerInstance>()
            };

            return(newChatRoomConnectionPool);
        }
Exemple #3
0
        public static ChatRoomConnectionPool BuildChatRoomConnectionPoolTwoInstances(Guid chatRoomId, int activeConnectionsLimit, Guid instanceId1, Guid instanceId2)
        {
            var connectedUserId1 = Guid.NewGuid();
            var connectedUserId2 = Guid.NewGuid();
            var connectedUserId3 = Guid.NewGuid();
            var connectedUserId4 = Guid.NewGuid();

            var connectedUser1 = new ConnectedUser
            {
                UserId       = connectedUserId1,
                ConnectionId = "connection 1"
            };

            var connectedUser2 = new ConnectedUser
            {
                UserId       = connectedUserId2,
                ConnectionId = "connection 2"
            };

            var connectedUser3 = new ConnectedUser
            {
                UserId       = connectedUserId3,
                ConnectionId = "connection 3"
            };

            var connectedUser4 = new ConnectedUser
            {
                UserId       = connectedUserId4,
                ConnectionId = "connection 4"
            };

            var serverInstance1 = new ServerInstance()
            {
                ServerInstanceId = instanceId1,
                ConnectedUsers   = new List <ConnectedUser>()
                {
                    connectedUser1, connectedUser2
                }
            };

            var serverInstance2 = new ServerInstance()
            {
                ServerInstanceId = instanceId2,
                ConnectedUsers   = new List <ConnectedUser>()
                {
                    connectedUser3, connectedUser4
                }
            };

            var chatRoomConnectionPool = new ChatRoomConnectionPool()
            {
                ChatRoomId             = chatRoomId,
                ActiveConnectionsLimit = activeConnectionsLimit,
                TotalActiveConnections = 4,
                ServerInstances        = new List <ServerInstance>()
                {
                    serverInstance1, serverInstance2
                }
            };

            return(chatRoomConnectionPool);
        }