Exemple #1
0
        /// <summary>
        /// This thread will attempt to retrieve messages from a channel queue to route it to the
        /// correct place on the UI where it should be posted.
        /// </summary>
        private void messageParser()
        {
            while (consoleOpen)
            {
                MessageInfo retrievedMessage = irc.parseMessage();

                if (retrievedMessage != null)
                {
                    if (retrievedMessage.header == IRCMessageType.OTHER)
                    {
                        retrievedMessage.channel = chatTab;
                        MessagestoPost.Enqueue(retrievedMessage);
                    }
                    else if (retrievedMessage.header == IRCMessageType.PRIVMSG)
                    {
                        if (botChannels.ContainsKey(retrievedMessage.channel))
                        {
                            User recordUser = channelArray[retrievedMessage.channel].returnUser(retrievedMessage.theUser.name);
                            if (recordUser != null)
                            {
                                User.lazyUpdate(recordUser, retrievedMessage.theUser, out recordUser);
                                retrievedMessage.theUser = recordUser;
                            }
                            irc.chatMessageQ.Enqueue(retrievedMessage);
                        }
                        else
                        {
                            MessagestoPost.Enqueue(retrievedMessage);
                        }
                        MessageInfo copyMI = new MessageInfo(retrievedMessage.theUser.name, retrievedMessage.channel, "");
                        copyMI.header = IRCMessageType.JOIN;
                        UsersToUpdate.Enqueue(copyMI);
                        updateUserView();
                    }
                    else if (retrievedMessage.header == IRCMessageType.PART ||
                             retrievedMessage.header == IRCMessageType.JOIN)
                    {
                        UsersToUpdate.Enqueue(retrievedMessage);
                        updateUserView();
                    }
                    else if (retrievedMessage.header == IRCMessageType.OP ||
                             retrievedMessage.header == IRCMessageType.DEOP)
                    {
                        UsersToUpdate.Enqueue(retrievedMessage);
                        updateUserView();
                    }
                }
                Thread.Sleep(1);
            }
        }