Exemplo n.º 1
0
        public DefaultHttp2FrameWriterTest()
        {
            _http2HeadersEncoder = new DefaultHttp2HeadersEncoder(
                NeverSensitiveDetector.Instance, new HpackEncoder(false, 16, 0));

            _frameWriter = new DefaultHttp2FrameWriter(new DefaultHttp2HeadersEncoder(
                                                           NeverSensitiveDetector.Instance, new HpackEncoder(false, 16, 0)));

            _outbound = Unpooled.Buffer();

            _expectedOutbound = Unpooled.Empty;

            _promise = new TaskCompletionSource();

            _channel = new Mock <IChannel>();

            Task localAnswer(object msg)
            {
                if (msg is IByteBuffer buf)
                {
                    _outbound.WriteBytes(buf);
                }
                ReferenceCountUtil.Release(msg);
                return(TaskUtil.Completed);
            }

            Task localAnswer0(object msg, IPromise promise)
            {
                if (msg is IByteBuffer buf)
                {
                    _outbound.WriteBytes(buf);
                }
                ReferenceCountUtil.Release(msg);
                return(TaskUtil.Completed);
            }

            _ctx = new Mock <IChannelHandlerContext>();
            _ctx.Setup(x => x.WriteAsync(It.IsAny <object>())).Returns <object>(localAnswer);
            _ctx.Setup(x => x.WriteAsync(It.IsAny <object>(), It.IsAny <IPromise>())).Returns <object, IPromise>(localAnswer0);
            _ctx.Setup(x => x.Allocator).Returns(UnpooledByteBufferAllocator.Default);
            _ctx.Setup(x => x.Channel).Returns(_channel.Object);
        }
Exemplo n.º 2
0
        protected virtual void SetInitialServerChannelPipeline(IChannel ch)
        {
            this.serverConnectedChannel = ch;
            var p = ch.Pipeline;
            IHttp2FrameWriter frameWriter = new DefaultHttp2FrameWriter();

            this.serverConnection.Remote.FlowController = new DefaultHttp2RemoteFlowController(this.serverConnection);
            this.serverConnection.Local.FlowController  = new DefaultHttp2LocalFlowController(this.serverConnection).FrameWriter(frameWriter);
            IHttp2ConnectionEncoder encoder = new CompressorHttp2ConnectionEncoder(
                new DefaultHttp2ConnectionEncoder(this.serverConnection, frameWriter));
            IHttp2ConnectionDecoder decoder =
                new DefaultHttp2ConnectionDecoder(this.serverConnection, encoder, new DefaultHttp2FrameReader());
            Http2ConnectionHandler connectionHandler = new Http2ConnectionHandlerBuilder()
            {
                FrameListener = new DelegatingDecompressorFrameListener(this.serverConnection, this.serverListener.Object)
            }
            .Codec(decoder, encoder).Build();

            p.AddLast(connectionHandler);
        }
Exemplo n.º 3
0
        protected virtual void SetInitialChannelPipeline(IChannel ch)
        {
            var p = ch.Pipeline;
            IHttp2FrameWriter frameWriter = new DefaultHttp2FrameWriter();

            this.clientConnection.Remote.FlowController = new DefaultHttp2RemoteFlowController(this.clientConnection);
            this.clientConnection.Local.FlowController  = new DefaultHttp2LocalFlowController(this.clientConnection).FrameWriter(frameWriter);
            this.clientEncoder = new CompressorHttp2ConnectionEncoder(
                new DefaultHttp2ConnectionEncoder(this.clientConnection, frameWriter));

            IHttp2ConnectionDecoder decoder =
                new DefaultHttp2ConnectionDecoder(this.clientConnection, this.clientEncoder,
                                                  new DefaultHttp2FrameReader());

            this.clientHandler = new Http2ConnectionHandlerBuilder()
            {
                FrameListener = new DelegatingDecompressorFrameListener(this.clientConnection, this.clientListener.Object),
                // By default tests don't wait for server to gracefully shutdown streams
                GracefulShutdownTimeout = TimeSpan.Zero
            }
            .Codec(decoder, this.clientEncoder).Build();
            p.AddLast(this.clientHandler);
        }