Пример #1
0
    /// <summary>
    ///  Обработка сообщения LoginMessage с данными о входе\выходе пользователя в павильон
    /// </summary>
    /// <param name="outHostId"> идентификатор хоста</param>
    /// <param name="outConnectionId"> идентификатор соединения</param>
    /// <param name="outChannelId"> идентификатор канала</param>
    /// <param name="logMess"> сообщение с данными о входе</param>
    private void RecieveLogInMessage(int outHostId, int outConnectionId, int outChannelId, LoginMessage logMess)
    {
        if (GetUnloggedUser(outHostId, outConnectionId, outChannelId) != null ||
            !GetUser(outHostId, outConnectionId, outChannelId).IsLoggedIn())
        {
            ChatUser user = GetUnloggedUser(outHostId, outConnectionId, outChannelId);
            unlogedUsers.Remove(user);
            Debug.Log(logMess.ToString());
            uiController.AddLog(logMess.ToString());
            user.LogIn(logMess.Userlogin, logMess.Pavilion);
            if (!users.ContainsKey(logMess.Pavilion))
            {
                users.Add(logMess.Pavilion, new List <ChatUser>());
            }
            users[logMess.Pavilion].Add(user);
            foreach (Message message in messages)
            {
                if (message.Recipient.Equals(logMess.Userlogin) || message.Userlogin.Equals(logMess.Userlogin) || message.Recipient.StartsWith(logMess.Pavilion))
                {
                    SendMessage(message, outHostId, outConnectionId);
                }
            }
        }
        else
        {
            if (logMess.IsLogOut)
            {
                ChatUser user = GetUser(outHostId, outConnectionId, outChannelId);

                users[logMess.Pavilion].Remove(user);

                user.LogIn(null, null);

                unlogedUsers.Add(user);
            }
        }
    }