Пример #1
0
        /// <summary>
        /// Querys the serverinfos
        /// </summary>
        public override void GetServerInfo()
        {
            if (!IsOnline)
            {
                return;
            }
            Query(_QUERY_INFO);
            AddParams(ResponseString.Split('\\'));

            Query(_QUERY_RULES);
            AddParams(ResponseString.Split('\\'));

            Query(_QUERY_PLAYERS);
            ParsePlayers();
        }
        public ICollection <Message> GetMessageList()
        {
            string ResponseString;

            List <Message> ReturnArray = new List <Message>();

            WriteMessage("LIST\r\n");
            ResponseString = GetResponse();
            if (!ResponseString.StartsWith("+OK", StringComparison.InvariantCultureIgnoreCase))
            {
                throw new Pop3Exception(ResponseString);
            }
            bool Done = false;

            while (!Done)
            {
                Regex TempRegex = new Regex(Regex.Escape("+") + "OK.*\r\n");
                if (!ResponseString.EndsWith("\r\n.\r\n", StringComparison.InvariantCulture))
                {
                    while (!ResponseString.EndsWith("\r\n.\r\n", StringComparison.InvariantCulture))
                    {
                        ResponseString += GetResponse();
                    }
                }
                ResponseString = TempRegex.Replace(ResponseString, "");
                string[] Seperator = { "\r\n" };
                string[] Values    = ResponseString.Split(Seperator, StringSplitOptions.RemoveEmptyEntries);
                foreach (string Value in Values)
                {
                    string[] NewSeperator = { " " };
                    string[] Pair         = Value.Split(NewSeperator, StringSplitOptions.RemoveEmptyEntries);
                    if (Pair.Length > 1)
                    {
                        Message TempMessage = new Message();
                        TempMessage.MessageNumber = Int32.Parse(Pair[0], CultureInfo.InvariantCulture);
                        TempMessage.MessageSize   = Int32.Parse(Pair[1], CultureInfo.InvariantCulture);
                        TempMessage.Retrieved     = false;
                        ReturnArray.Add(TempMessage);
                    }
                    else
                    {
                        Done = true;
                        break;
                    }
                }
            }
            return(ReturnArray);
        }
Пример #3
0
        private void ParsePlayers()
        {
            if (!IsOnline)
            {
                return;
            }

            if (_params.ContainsKey("numplayers"))
            {
                _players = new PlayerCollection();                // Int16.Parse( _params["numplayers"] ) );
            }

            string key, val;
            int    pNr;

            string[] parts = ResponseString.Split('\\');
            for (int i = 1; i < parts.Length; i++)
            {
                if (parts[i] == "queryid" || parts[i] == "final")
                {
                    i++;
                    continue;
                }

                key = parts[i].Substring(0, parts[i].IndexOf("_"));
                pNr = Int16.Parse(parts[i].Substring(parts[i].IndexOf("_") + 1));
                val = parts[++i];

                if (key == "teamname")
                {
                    _teams.Add(val);
                }

                try
                {
                    if (_players[pNr] == null)
                    {
                        _players.Insert(pNr, new Player());
                    }
                }
                catch (ArgumentOutOfRangeException)
                {
                    _players.Insert(pNr, new Player());
                }

                switch (key)
                {
                case "playername":
                case "player":
                    _players[pNr].Name = val;
                    break;

                case "score":
                case "frags":
                    _players[pNr].Score = Int16.Parse(val);
                    break;

                case "ping":
                    _players[pNr].Ping = Int16.Parse(val);
                    break;

                case "team":
                    _players[pNr].Team = val;
                    break;

                default:
                    _players[pNr].Parameters.Add(key, val);
                    break;
                }
            }
        }