Ejemplo n.º 1
0
        public async Task SendPacket(ServerMessageBase <Opcode> message)
        {
            var data = this.Crypt.Encode(message);

            await this.Send(data);

            message.Dispose();
        }
Ejemplo n.º 2
0
        // https://github.com/drolean/Servidor-Wow/blob/master/Common/Helpers/Utils.cs#L13
        public byte[] Encode(ServerMessageBase <World.Opcode> message)
        {
            var data    = message.Get();
            var index   = 0;
            var newSize = data.Length + 2;
            var header  = new byte[4];

            if (newSize > 0x7FFF)
            {
                header[index++] = (byte)(0x80 | (0xFF & (newSize >> 16)));
            }

            header[index++] = (byte)(0xFF & (newSize >> 8));
            header[index++] = (byte)(0xFF & (newSize >> 0));
            header[index++] = (byte)(0xFF & (int)message.Opcode);
            header[index]   = (byte)(0xFF & ((int)message.Opcode >> 8));

            if (this.IsInitialized)
            {
                header = this.Encrypt(header);
            }

            return(header.Concat(data).ToArray());
        }