public async ValueTask <RS_LOGON_PROOF> ReadAsync(ChannelReader <byte> reader)
        {
            byte[] a = await reader.ReadArrayAsync(32);

            byte[] m1 = await reader.ReadArrayAsync(20);

            await reader.ReadVoidAsync(22);

            return(new RS_LOGON_PROOF(a, m1));
        }
        public async ValueTask <RS_LOGON_CHALLENGE> ReadAsync(ChannelReader <byte> reader)
        {
            await reader.ReadVoidAsync(1);

            var lengthArray = await reader.ReadArrayAsync(2);

            var length = BitConverter.ToInt16(lengthArray);
            var data   = await reader.ReadArrayAsync(length);

            // Read account name from packet
            var accountLength = data[29];
            var account       = new byte[accountLength];

            Array.Copy(data, 30, account, 0, accountLength);
            var accountName = Encoding.UTF8.GetString(account);

            // Get the client build from packet.
            int clientBuild = BitConverter.ToInt16(new[] { data[7], data[8] }, 0);

            return(new RS_LOGON_CHALLENGE(account, accountName, clientBuild));
        }
Beispiel #3
0
        public async ValueTask <CMD_XFER_RESUME> ReadAsync(ChannelReader <byte> reader)
        {
            await reader.ReadVoidAsync(8);

            return(new CMD_XFER_RESUME());
        }