protected override void CheckRequest() { BasePacket basePacket = new BasePacket(); basePacket.Parse(_recv); //DedicatedGameServer gameServer = new DedicatedGameServer(); //gameServer.Parse(endPoint, basePacket.InstantKey); _gameServer = new GameServer(); QRSession client = (QRSession)_session.GetInstance(); _gameServer.Parse(client.RemoteEndPoint, basePacket.InstantKey); //_gameServer = QRServer.GameServerList.GetOrAdd(endPoint, gameServer); //Save server information. _dataPartition = Encoding.ASCII.GetString(_recv.Skip(5).ToArray()); //keep this for debug string[] temp = _dataPartition.Split("\0\0", StringSplitOptions.RemoveEmptyEntries); _playerPos = _dataPartition.IndexOf("player_\0", StringComparison.Ordinal); _teamPos = _dataPartition.IndexOf("team_t\0", StringComparison.Ordinal); if (_playerPos != -1 && _teamPos != -1) { _reportType = HeartBeatReportType.ServerTeamPlayerData; } else if (_playerPos != -1) { //normal heart beat _reportType = HeartBeatReportType.ServerPlayerData; } else if (_playerPos == -1 && _teamPos == -1) { _reportType = HeartBeatReportType.ServerData; //if (PeerGroup.PeerGroupKeyList.Contains(_gameServer.ServerData.KeyValue["gamename"]) // && !_gameServer.ServerData.KeyValue.ContainsKey("hostport")) //{ // _gameServer.IsPeerServer = true; //} //GameServer.DeleteServer( // endPoint, // _gameServer.ServerData.KeyValue["gamename"] // ); } else { _errorCode = QRErrorCode.Parse; return; } base.CheckRequest(); }
protected override void CheckRequest() { base.CheckRequest(); BasePacket basePacket = new BasePacket(); if (!basePacket.Parse(_recv)) { _errorCode = QRErrorCode.Parse; return; } //Save server information. _dataPartition = Encoding.ASCII.GetString(_recv.Skip(5).ToArray()); _playerPos = _dataPartition.IndexOf("player_\0", StringComparison.Ordinal); _teamPos = _dataPartition.IndexOf("team_t\0", StringComparison.Ordinal); if (_playerPos != -1 && _teamPos != -1) { _reportType = HeartBeatReportType.ServerTeamPlayerData; } else if (_playerPos != -1) { //normal heart beat _reportType = HeartBeatReportType.ServerPlayerData; } else if (_playerPos == -1 && _teamPos == -1) { _reportType = HeartBeatReportType.ServerData; } else { _errorCode = QRErrorCode.Parse; return; } _session.SetInstantKey(basePacket.InstantKey); }