示例#1
0
        public async Task TestPeekAndBreake()
        {
            var reader = new NetworkReader(baseStream);

            Assert.AreEqual <char?>('\u2661', await reader.PeekCharAsync().ConfigureAwait(false));
            Assert.AreEqual(
                BitConverter.ToString(new byte[] { 0xe2 }),
                BitConverter.ToString(await reader.ReadBytesAsync(1))
                );
            Assert.AreEqual(
                BitConverter.ToString(new byte[] { 0x99, 0xa1, 0x0d, 0x0a }),
                BitConverter.ToString(await reader.ReadBytesAsync(4))
                );
        }
示例#2
0
        public async Task TestReadUntil()
        {
            var baseStream = new MemoryStream(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            var reader     = new NetworkReader(baseStream);
            var readed     = await reader.ReadUntilAsync(new byte[] { 4, 5, 6 }).ConfigureAwait(false);

            Assert.AreEqual("00-01-02-03", BitConverter.ToString(readed.ToArray()));
            Assert.AreEqual("04-05-06-07-08-09", BitConverter.ToString(await reader.ReadBytesAsync(6).ConfigureAwait(false)));
        }
示例#3
0
        public async Task TestBrokenRead()
        {
            var reader = new NetworkReader(baseStream);

            // remove the first byte to kill the char
            Assert.AreEqual(
                BitConverter.ToString(new byte[] { 0xe2 }),
                BitConverter.ToString(await reader.ReadBytesAsync(1))
                );
            // read an undefined char
            Assert.AreEqual(65533, (int)(await reader.ReadCharAsync().ConfigureAwait(false)));
        }
示例#4
0
        public async Task TestReadBytes()
        {
            var reader = new NetworkReader(baseStream);
            await reader.ReadLineAsync().ConfigureAwait(false);

            await reader.ReadLineAsync().ConfigureAwait(false);

            var buffer = await reader.ReadBytesAsync(8).ConfigureAwait(false);

            Assert.AreEqual(
                BitConverter.ToString(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }),
                BitConverter.ToString(buffer)
                );
        }
示例#5
0
        public async Task <int> DeserializeAsync(Stream stream, int maxLength = int.MaxValue)
        {
            using (var br = new NetworkReader(stream, Encoding.UTF8, true))
            {
                uint length;
                br.ReadVarInt(out length);

                if (length > 0 && length < maxLength)
                {
                    byte dataLength = br.ReadVarInt(out packetId);

                    data = new ArraySegment <byte>(new byte[length - dataLength]);
                    await br.ReadBytesAsync(data.Array, 0, data.Count);
                }

                return((int)length);
            }
        }