Пример #1
0
        /// <summary>
        /// 切换Guard模式
        /// </summary>
        public void SwitchGuardMode()
        {
            e2g_switchmode switchMode = new e2g_switchmode();

            switchMode.Mode    = 0;
            switchMode.wServer = (UInt16)_server.Id;
            _server.SendMessage(switchMode);
            _server.AppendMessage(StringDef.SwitchGuardMode, GameServer.MessageInfo.Type.Success);
        }
Пример #2
0
		void ProcessConfigGuard()
		{
			while (!_dispose)
			{
				if (_isConfigingGuard)
				{
					try
					{
						int serverCount = _gameServerList.Count;
						for (int serverIndex = 0; serverIndex < serverCount; serverIndex++)
						{
							GameServer server = _gameServerList[serverIndex] as GameServer;
							if (server.ConfigState == GameServer.ConfigGuardState.Configuring)
							{
								try
								{
                                    //重新计算GUARD所管理的服务器
                                    int iServerCount = 0;
                                    string sServerIDs = "";
                                    int nFirstConfigServerID = 0; 
                                    foreach (GameServer svr in AdminServer.TheInstance.GameServerManager.Servers)
                                    {
                                        if (server.IpAddress == svr.IpAddress)
                                        {
                                            if (svr.ConfigState == GameServer.ConfigGuardState.Configuring && nFirstConfigServerID == 0)
                                            {
                                                nFirstConfigServerID = svr.Id;
                                            }
                                            
                                            if (iServerCount == 0)
                                                sServerIDs = svr.Id.ToString();
                                            else
                                                sServerIDs = sServerIDs + "," + svr.Id.ToString();

                                            iServerCount++;
                                        }
                                    }

                                    server.LordConfig.ServerCount = iServerCount;
                                    server.LordConfig.ServerIDs = sServerIDs;
                                    server.LordConfig.BindIp = server.IpAddress;
                                    //同ipserver按顺序设置
                                    if (server.Id != nFirstConfigServerID)
                                    {
                                        server.AppendMessage("waiting config " + nFirstConfigServerID.ToString() , GameServer.MessageInfo.Type.Success);
                                        continue;
                                    }

                                    //打开UDP
                                    e2g_switchmode switchMode = new e2g_switchmode();
                                    switchMode.Mode = 1;
                                    switchMode.wServer = (UInt16)server.Id;
                                    server.SendMessage(switchMode);
                                    server.AppendMessage(StringDef.SwitchGuardMode, GameServer.MessageInfo.Type.Success);
                                    
                                    if (server.LordConfig.FSEyeIp != null && server.LordConfig.FSEyePort >= 0 && server.ConfigContent!=null)
                                    {
                                        SendConfigPackage(server);
                                        //Thread.Sleep(2000);
                                        //SendServerConfigFile(server);
                                    }
                                    else
                                    {
                                        server.ConfigState = GameServer.ConfigGuardState.Configured;
                                    }
								}
								catch (Exception exinner)
								{
									Util.DebugLog("ProcessConfigGuard.SendConfigPackage: " + exinner.Message);
								}
							}

							if (!_isConfigingGuard)
								break;

							Thread.Sleep(100);
						}
					}
					catch (Exception ex)
					{
						Util.DebugLog("ProcessConfigGuard: " + ex.Message);
					}

					Thread.Sleep(15000);
				}

				Thread.Sleep(1000);
			}
		}
Пример #3
0
		/// <summary>
		/// 切换Guard模式
		/// </summary>
		public void SwitchGuardMode()
		{
			e2g_switchmode switchMode = new e2g_switchmode();
			switchMode.Mode = 0;
            switchMode.wServer = (UInt16)_server.Id;
			_server.SendMessage(switchMode);
			_server.AppendMessage(StringDef.SwitchGuardMode, GameServer.MessageInfo.Type.Success);
		}