public IAsyncBinaryReader CreateReader()
            {
                stream.Position = 0L;
                var sequence = new ChunkSequence(stream.ToArray(), 3);

                return(IAsyncBinaryReader.Create(sequence.ToReadOnlySequence()));
            }
            public IAsyncBinaryReader CreateReader()
            {
                stream.Position = 0L;
                var sequence = ToReadOnlySequence <byte>(stream.ToArray(), 3);

                return(IAsyncBinaryReader.Create(sequence));
            }
Example #3
0
        public static void EncodeAsString(BufferWriter <byte> writer, Encoding encoding)
        {
            var encodingContext = new EncodingContext(encoding, true);

            using (writer)
            {
                var g   = Guid.NewGuid();
                var bi  = new BigInteger(RandomBytes(64));
                var dt  = DateTime.Now;
                var dto = DateTimeOffset.Now;
                writer.WriteInt64(42L, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteUInt64(12UL, LengthFormat.PlainLittleEndian, in encodingContext, provider: InvariantCulture);
                writer.WriteInt32(34, LengthFormat.PlainBigEndian, in encodingContext, provider: InvariantCulture);
                writer.WriteUInt32(78, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteInt16(90, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteUInt16(12, LengthFormat.Plain, in encodingContext, format: "X", provider: InvariantCulture);
                writer.WriteUInt16(12, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteByte(10, LengthFormat.Plain, in encodingContext, format: "X", provider: InvariantCulture);
                writer.WriteSByte(11, LengthFormat.Plain, in encodingContext, format: "X", provider: InvariantCulture);
                writer.WriteByte(10, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteSByte(11, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteGuid(g, LengthFormat.Plain, in encodingContext);
                writer.WriteGuid(g, LengthFormat.Plain, in encodingContext, format: "X");
                writer.WriteDateTime(dt, LengthFormat.Plain, in encodingContext, format: "O", provider: InvariantCulture);
                writer.WriteDateTimeOffset(dto, LengthFormat.Plain, in encodingContext, format: "O", provider: InvariantCulture);
                writer.WriteDateTime(dt, LengthFormat.Plain, in encodingContext, format: "O", provider: InvariantCulture);
                writer.WriteDateTimeOffset(dto, LengthFormat.Plain, in encodingContext, format: "O", provider: InvariantCulture);
                writer.WriteDecimal(42.5M, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteSingle(32.2F, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteDouble(56.6D, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);
                writer.WriteBigInteger(bi, LengthFormat.Plain, in encodingContext, provider: InvariantCulture);

                var decodingContext = new DecodingContext(encoding, true);
                var reader          = IAsyncBinaryReader.Create(writer.WrittenMemory);
                Equal(42L, reader.ReadInt64(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(12UL, reader.ReadUInt64(LengthFormat.PlainLittleEndian, in decodingContext, provider: InvariantCulture));
                Equal(34, reader.ReadInt32(LengthFormat.PlainBigEndian, in decodingContext, provider: InvariantCulture));
                Equal(78U, reader.ReadUInt32(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(90, reader.ReadInt16(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal("C", reader.ReadString(LengthFormat.Plain, in decodingContext));
                Equal(12, reader.ReadUInt16(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal("A", reader.ReadString(LengthFormat.Plain, in decodingContext));
                Equal("B", reader.ReadString(LengthFormat.Plain, in decodingContext));
                Equal(10, reader.ReadByte(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(11, reader.ReadSByte(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(g, reader.ReadGuid(LengthFormat.Plain, in decodingContext));
                Equal(g, reader.ReadGuid(LengthFormat.Plain, in decodingContext, "X"));
                Equal(dt, reader.ReadDateTime(LengthFormat.Plain, in decodingContext, style: DateTimeStyles.RoundtripKind, provider: InvariantCulture));
                Equal(dto, reader.ReadDateTimeOffset(LengthFormat.Plain, in decodingContext, style: DateTimeStyles.RoundtripKind, provider: InvariantCulture));
                Equal(dt, reader.ReadDateTime(LengthFormat.Plain, in decodingContext, formats: new[] { "O" }, style: DateTimeStyles.RoundtripKind, provider: InvariantCulture));
                Equal(dto, reader.ReadDateTimeOffset(LengthFormat.Plain, in decodingContext, formats: new[] { "O" }, style: DateTimeStyles.RoundtripKind, provider: InvariantCulture));
                Equal(42.5M, reader.ReadDecimal(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(32.2F, reader.ReadSingle(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(56.6D, reader.ReadDouble(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
                Equal(bi, reader.ReadBigInteger(LengthFormat.Plain, in decodingContext, provider: InvariantCulture));
            }
        }
Example #4
0
        public static async Task ReadWriteBlittableTypeUsingReader()
        {
            using var ms = new MemoryStream();
            ms.Write(10M);
            ms.Position = 0;
            var reader = IAsyncBinaryReader.Create(ms, new byte[128]);

            Equal(10M, await reader.ReadAsync <decimal>());
        }
Example #5
0
        public static async Task ReadBlittableType()
        {
            var ms = new MemoryStream(1024);

            ms.Write(10M);
            ms.Position = 0;
            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(ms.ToArray());

            Equal(10M, await reader.ReadAsync <decimal>());
        }
Example #6
0
 private static async Task ReadWriteStringUsingEncodingAsync(string value, Encoding encoding, int bufferSize, StringLengthEncoding? lengthEnc)
 {
     var writer = new ArrayBufferWriter<byte>();
     writer.WriteString(value.AsSpan(), encoding, bufferSize, lengthEnc);
     IAsyncBinaryReader reader = IAsyncBinaryReader.Create(writer.WrittenMemory);
     var result = await (lengthEnc is null ?
         reader.ReadStringAsync(encoding.GetByteCount(value), encoding) :
         reader.ReadStringAsync(lengthEnc.GetValueOrDefault(), encoding));
     Equal(value, result);
 }
        public static async Task CopyToStream()
        {
            var content = new byte[] { 1, 5, 8, 9 };
            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(new ChunkSequence <byte>(content, 2).ToReadOnlySequence());

            using var ms = new MemoryStream();
            await reader.CopyToAsync(ms);

            ms.Position = 0;
            Equal(content, ms.ToArray());
        }
Example #8
0
        private static async Task ReadWriteStringUsingEncodingAsync(string value, Encoding encoding, StringLengthEncoding?lengthEnc)
        {
            using var ms = new MemoryStream();
            await ms.WriteStringAsync(value.AsMemory(), encoding, lengthEnc);

            ms.Position = 0;
            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(ms.ToArray());
            var result = await(lengthEnc is null ?
                               reader.ReadStringAsync(encoding.GetByteCount(value), encoding) :
                               reader.ReadStringAsync(lengthEnc.Value, encoding));

            Equal(value, result);
        }
Example #9
0
 public static async Task ReadBlittableTypes(bool littleEndian)
 {
     var writer = new ArrayBufferWriter<byte>();
     writer.Write(10M);
     writer.WriteInt64(42L, littleEndian);
     writer.WriteInt32(44, littleEndian);
     writer.WriteInt16(46, littleEndian);
     IAsyncBinaryReader reader = IAsyncBinaryReader.Create(writer.WrittenMemory);
     Equal(10M, await reader.ReadAsync<decimal>());
     Equal(42L, await reader.ReadInt64Async(littleEndian));
     Equal(44, await reader.ReadInt32Async(littleEndian));
     Equal(46, await reader.ReadInt16Async(littleEndian));
 }
Example #10
0
        public static async Task ReadMemory()
        {
            var sequence = new ChunkSequence <byte>(new byte[] { 1, 5, 8, 9 }, 2).ToReadOnlySequence();

            False(sequence.IsSingleSegment);
            var result = new byte[3];
            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(sequence);
            await reader.ReadAsync(result);

            Equal(1, result[0]);
            Equal(5, result[1]);
            Equal(8, result[2]);
        }
        public static async Task CopyToPipe()
        {
            var expected = new byte[] { 1, 5, 8, 9 };
            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(new ChunkSequence <byte>(expected, 2).ToReadOnlySequence());
            var pipe = new Pipe();
            await reader.CopyToAsync(pipe.Writer);

            await pipe.Writer.CompleteAsync();

            var actual = new byte[expected.Length];
            await pipe.Reader.ReadBlockAsync(actual);

            Equal(expected, actual);
        }
Example #12
0
        private static async Task ReadWriteStringUsingEncodingAsync(string value, Encoding encoding, int bufferSize, LengthFormat?lengthEnc)
        {
            using var ms = new MemoryStream();
            var buffer = new byte[bufferSize];
            await ms.WriteStringAsync(value.AsMemory(), encoding, buffer, lengthEnc);

            ms.Position = 0;
            var reader = IAsyncBinaryReader.Create(ms, buffer);
            var result = await(lengthEnc is null ?
                               reader.ReadStringAsync(encoding.GetByteCount(value), encoding) :
                               reader.ReadStringAsync(lengthEnc.Value, encoding));

            Equal(value, result);
        }
Example #13
0
        public static async Task ReadWriteMemoryUsingReader()
        {
            using var ms = new MemoryStream();
            ms.Write(new byte[] { 1, 5, 7, 9 });
            ms.Position = 0;
            var reader = IAsyncBinaryReader.Create(ms, new byte[128]);
            var memory = new byte[4];
            await reader.ReadAsync(memory);

            Equal(1, memory[0]);
            Equal(5, memory[1]);
            Equal(7, memory[2]);
            Equal(9, memory[3]);
        }
Example #14
0
        public static async Task ReadBlittableTypes(bool littleEndian)
        {
            var bi     = new BigInteger(RandomBytes(32));
            var writer = new ArrayBufferWriter <byte>();

            writer.Write(10M);
            writer.WriteInt64(42L, littleEndian);
            writer.WriteInt32(44, littleEndian);
            writer.WriteInt16(46, littleEndian);
            writer.WriteBigInteger(in bi, littleEndian, LengthFormat.Compressed);

            IAsyncBinaryReader reader = IAsyncBinaryReader.Create(writer.WrittenMemory);

            Equal(10M, await reader.ReadAsync <decimal>());
            Equal(42L, await reader.ReadInt64Async(littleEndian));
            Equal(44, await reader.ReadInt32Async(littleEndian));
            Equal(46, await reader.ReadInt16Async(littleEndian));
            Equal(bi, await reader.ReadBigIntegerAsync(LengthFormat.Compressed, littleEndian));
        }
        public static void ReadBlittableType(bool littleEndian)
        {
            var writer = new ArrayBufferWriter <byte>();

            writer.Write(10M);
            writer.WriteInt64(42L, littleEndian);
            writer.WriteUInt64(43UL, littleEndian);
            writer.WriteInt32(44, littleEndian);
            writer.WriteUInt32(45U, littleEndian);
            writer.WriteInt16(46, littleEndian);
            writer.WriteUInt16(47, littleEndian);

            var reader = IAsyncBinaryReader.Create(writer.WrittenMemory);

            Equal(10M, reader.Read <decimal>());
            Equal(42L, reader.ReadInt64(littleEndian));
            Equal(43UL, reader.ReadUInt64(littleEndian));
            Equal(44, reader.ReadInt32(littleEndian));
            Equal(45U, reader.ReadUInt32(littleEndian));
            Equal(46, reader.ReadInt16(littleEndian));
            Equal(47, reader.ReadUInt16(littleEndian));
        }
 public IAsyncBinaryReader CreateReader() => IAsyncBinaryReader.Create(buffer.WrittenMemory);
Example #17
0
 ValueTask <TResult> IDataTransferObject.TransformAsync <TResult, TTransformation>(TTransformation transformation, CancellationToken token)
 => transformation.TransformAsync(IAsyncBinaryReader.Create(Content), token);
 public IAsyncBinaryReader CreateReader() => IAsyncBinaryReader.Create(pipe.Reader);
 public IAsyncBinaryReader CreateReader()
 {
     stream.Position = 0L;
     return(IAsyncBinaryReader.Create(stream, buffer));
 }
 public IAsyncBinaryReader CreateReader() => IAsyncBinaryReader.Create(stream.ToArray());