コード例 #1
0
        /// <summary>
        /// Обработчик команды диспетчера
        /// </summary>
        /// <param name="Stream">поток</param>
        /// <param name="Cmd">команда</param>
        private void DispatcherCommandHandler(NetStreamReaderWriter Stream, NetCommand Cmd)
        {
            try
            {
                switch (Cmd.cmd)
                {
                // Зарегистрировался новый сервер
                case "!serverregistered":
                {
                    string[] param = Cmd.parameters.Split(new char[] { ' ' });
                    if (param.Length < 2)
                    {
                        UiWriteLog("Неверный формат команды");
                        break;
                    }

                    string ip   = param[0];
                    string port = param[1];
                    Stream.WriteCmd(AnsAddServer(ip, int.Parse(port)));
                }
                break;

                // Сервер разрегистрировался
                case "!serverunregistered":
                {
                    string[] param = Cmd.parameters.Split(new char[] { ' ' });
                    if (param.Length < 2)
                    {
                        UiWriteLog("Неверный формат команды");
                        break;
                    }

                    string ip   = param[0];
                    string port = param[1];
                    Stream.WriteCmd(AnsDeleteServer(ip, int.Parse(port)));
                }
                break;

                // Регистрация и анрегистрация клиентов
                case "!clientregistered":
                case "!clientunregistered":
                    Stream.WriteCmd(CreateCommand("!ok", "Вас понял!"));
                    NetCommand CloneCmd = Cmd.Clone();
                    CloneCmd.Ip     = m_ServerIP.ToString();
                    CloneCmd.Port   = m_ServerPort;
                    CloneCmd.sender = "msgserver";
                    SendCmdToAllClients(CloneCmd);
                    break;

                // Неизвестная команда
                default:
                {
                    Stream.WriteCmd(CreateCommand("!unknowncommand",
                                                  "К сожалению сервер не знает такой команды"));
                    UiWriteLog("Такая команда неизвестна серверу!");
                }
                break;
                }
            }
            catch (Exception ex)
            {
                Debug.Write(" > Ошибка в DispatcherCommandHandler: " + ex.Message);
            }
        }