Example usage for io.netty.handler.codec.http2 Http2Connection numActiveStreams

List of usage examples for io.netty.handler.codec.http2 Http2Connection numActiveStreams

Introduction

In this page you can find the example usage for io.netty.handler.codec.http2 Http2Connection numActiveStreams.

Prototype

int numActiveStreams();

Source Link

Document

Gets the number of streams that are actively in use (i.e.

Usage

From source file:io.grpc.netty.NettyServerHandler.java

License:Apache License

private NettyServerHandler(ChannelPromise channelUnused, final Http2Connection connection,
        ServerTransportListener transportListener,
        List<? extends ServerStreamTracer.Factory> streamTracerFactories, TransportTracer transportTracer,
        Http2ConnectionDecoder decoder, Http2ConnectionEncoder encoder, Http2Settings settings,
        int maxMessageSize, long keepAliveTimeInNanos, long keepAliveTimeoutInNanos,
        long maxConnectionIdleInNanos, long maxConnectionAgeInNanos, long maxConnectionAgeGraceInNanos,
        final KeepAliveEnforcer keepAliveEnforcer) {
    super(channelUnused, decoder, encoder, settings);

    final MaxConnectionIdleManager maxConnectionIdleManager;
    if (maxConnectionIdleInNanos == MAX_CONNECTION_IDLE_NANOS_DISABLED) {
        maxConnectionIdleManager = null;
    } else {//ww w. j  a va2s  .c  o m
        maxConnectionIdleManager = new MaxConnectionIdleManager(maxConnectionIdleInNanos) {
            @Override
            void close(ChannelHandlerContext ctx) {
                if (gracefulShutdown == null) {
                    gracefulShutdown = new GracefulShutdown("max_idle", null);
                    gracefulShutdown.start(ctx);
                    ctx.flush();
                }
            }
        };
    }

    connection.addListener(new Http2ConnectionAdapter() {
        @Override
        public void onStreamActive(Http2Stream stream) {
            if (connection.numActiveStreams() == 1) {
                keepAliveEnforcer.onTransportActive();
                if (maxConnectionIdleManager != null) {
                    maxConnectionIdleManager.onTransportActive();
                }
            }
        }

        @Override
        public void onStreamClosed(Http2Stream stream) {
            if (connection.numActiveStreams() == 0) {
                keepAliveEnforcer.onTransportIdle();
                if (maxConnectionIdleManager != null) {
                    maxConnectionIdleManager.onTransportIdle();
                }
            }
        }
    });

    checkArgument(maxMessageSize >= 0, "maxMessageSize must be >= 0");
    this.maxMessageSize = maxMessageSize;
    this.keepAliveTimeInNanos = keepAliveTimeInNanos;
    this.keepAliveTimeoutInNanos = keepAliveTimeoutInNanos;
    this.maxConnectionIdleManager = maxConnectionIdleManager;
    this.maxConnectionAgeInNanos = maxConnectionAgeInNanos;
    this.maxConnectionAgeGraceInNanos = maxConnectionAgeGraceInNanos;
    this.keepAliveEnforcer = checkNotNull(keepAliveEnforcer, "keepAliveEnforcer");

    streamKey = encoder.connection().newKey();
    this.transportListener = checkNotNull(transportListener, "transportListener");
    this.streamTracerFactories = checkNotNull(streamTracerFactories, "streamTracerFactories");
    this.transportTracer = checkNotNull(transportTracer, "transportTracer");

    // Set the frame listener on the decoder.
    decoder().frameListener(new FrameListener());
}

From source file:io.vertx.core.http.impl.Http2ConnectionBase.java

License:Open Source License

private void checkShutdownHandler() {
    if (!shutdown) {
        Http2Connection conn = handler.connection();
        if ((conn.goAwayReceived() || conn.goAwaySent()) && conn.numActiveStreams() == 0) {
            shutdown = true;// w ww.  jav  a 2s. c o  m
            Handler<Void> handler = shutdownHandler;
            if (handler != null) {
                context.executeFromIO(() -> {
                    shutdownHandler.handle(null);
                });
            }
        }
    }
}