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