Exemplo n.º 1
0
        public static async Task TextMessageUsingPipeline()
        {
            var      pipe    = new Pipe();
            IMessage message = new TextMessage("Hello, world!", "msg");

            ThreadPool.QueueUserWorkItem(async state =>
            {
                await message.WriteToAsync(pipe.Writer).ConfigureAwait(false);
                pipe.Writer.Complete();
            });
            var content = new MemoryStream();

            while (true)
            {
                var read = await pipe.Reader.ReadAsync().ConfigureAwait(false);

                foreach (var chunk in read.Buffer)
                {
                    await content.WriteAsync(chunk).ConfigureAwait(false);
                }
                pipe.Reader.AdvanceTo(read.Buffer.End);
                if (read.IsCompleted)
                {
                    break;
                }
            }
            content.Seek(0, SeekOrigin.Begin);
            using (var reader = new StreamReader(content, Encoding.UTF8, false, 1024, true))
            {
                Equal("Hello, world!", reader.ReadToEnd());
            }
            content.Dispose();
        }
Exemplo n.º 2
0
        public static async Task TextMessageUsingStream()
        {
            IMessage message = new TextMessage("Hello, world!", "msg");

            using var content = new MemoryStream(1024);
            await message.WriteToAsync(content).ConfigureAwait(false);

            content.Seek(0, SeekOrigin.Begin);
            using var reader = new StreamReader(content, Encoding.UTF8, false, 1024, true);
            Equal("Hello, world!", reader.ReadToEnd());
        }
Exemplo n.º 3
0
        public static async Task TextMessageUsingPipeline()
        {
            var      pipe    = new Pipe();
            IMessage message = new TextMessage("Hello, world!", "msg");

            ThreadPool.QueueUserWorkItem(async state =>
            {
                await message.WriteToAsync(pipe.Writer).ConfigureAwait(false);
                pipe.Writer.Complete();
            });
            using var content = new MemoryStream();
            await pipe.Reader.CopyToAsync(content);

            content.Seek(0, SeekOrigin.Begin);
            using (var reader = new StreamReader(content, Encoding.UTF8, false, 1024, true))
            {
                Equal("Hello, world!", reader.ReadToEnd());
            }
        }