protected override void GenerateServersInfo()
        {
            foreach (var room in _peerGroup.PeerRooms)
            {
                //add has key flag
                _dataList.Add((byte)GameServerFlags.HasKeysFlag);
                //in group list server ip is group id

                byte[] groupid = ByteTools.GetBytes(int.Parse(room.KeyValue["groupid"]), true);

                _dataList.AddRange(groupid);

                foreach (var key in _request.Keys)
                {
                    _dataList.Add(SBStringFlag.NTSStringFlag);
                    _dataList.AddRange(Encoding.ASCII.GetBytes(room.KeyValue[key]));
                    _dataList.Add(SBStringFlag.StringSpliter);
                }
            }
        }
예제 #2
0
        protected override void ConstructResponse()
        {
            _dataList.Add((byte)SBServerResponseType.PushServerMessage);

            byte[] info = GenerateServerInfo().ToArray();

            // we add server info here
            _dataList.AddRange(info);
            LogWriter.ToLog("[Plain] " +
                            StringExtensions.ReplaceUnreadableCharToHex(info));

            byte[] msgLength =
                ByteTools.GetBytes((short)(info.Length + 2), true);

            _dataList.InsertRange(0, msgLength);

            SBSession session = (SBSession)_session.GetInstance();

            GOAEncryption enc = new GOAEncryption(session.EncState);

            _sendingBuffer   = enc.Encrypt(_dataList.ToArray());
            session.EncState = enc.State;
        }