public static async Task <IStream> GetClientStream(Http2BufferedPipe inPipe, Http2BufferedPipe outPipe)
        {
            var resultStream = await CreateClientConnectionAndStream(
                StreamState.Open, null, inPipe, outPipe);

            await inPipe.WriteHeaders(resultStream.hEncoder, 1u, false, DefaultStatusHeaders);

            return(resultStream.stream);
        }
        public static async Task WriteData(byte[] data, Http2BufferedPipe inPipe)
        {
            var fh = new FrameHeader
            {
                Type     = FrameType.Data,
                StreamId = 1,
                Flags    = (byte)DataFrameFlags.EndOfStream,
                Length   = data.Length,
            };
            await inPipe.WriteFrameHeaderWithTimeout(fh);

            await inPipe.WriteWithTimeout(new ArraySegment <byte>(data));
        }
        public static async Task <IStream> GetServerStream(IEnumerable <KeyValuePair <string, string> > headerFields, Http2BufferedPipe inPipe, Http2BufferedPipe outPipe)
        {
            var getHeaders = new List <HeaderField>();

            foreach (var header in headerFields)
            {
                getHeaders.Add(
                    new HeaderField
                {
                    Name = header.Key, Value = header.Value
                });
            }
            var resultStream = await CreateServerConnectionAndStream(getHeaders.ToArray(),
                                                                     StreamState.Open, null, inPipe, outPipe);

            await resultStream.stream.WriteHeadersAsync(DefaultStatusHeaders, false);

            await outPipe.ReadAndDiscardHeaders(1u, false);

            return(resultStream.stream);
        }