Example #1
0
        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);
        }