/// <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); }
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); } }