Example usage for io.netty.handler.codec.http2 WeightedFairQueueByteDistributor WeightedFairQueueByteDistributor

List of usage examples for io.netty.handler.codec.http2 WeightedFairQueueByteDistributor WeightedFairQueueByteDistributor

Introduction

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

Prototype

public WeightedFairQueueByteDistributor(Http2Connection connection) 

Source Link

Usage

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

License:Apache License

static NettyClientHandler newHandler(ClientTransportLifecycleManager lifecycleManager,
        @Nullable KeepAliveManager keepAliveManager, int flowControlWindow, int maxHeaderListSize,
        Supplier<Stopwatch> stopwatchFactory, Runnable tooManyPingsRunnable, TransportTracer transportTracer,
        Attributes eagAttributes, String authority) {
    Preconditions.checkArgument(maxHeaderListSize > 0, "maxHeaderListSize must be positive");
    Http2HeadersDecoder headersDecoder = new GrpcHttp2ClientHeadersDecoder(maxHeaderListSize);
    Http2FrameReader frameReader = new DefaultHttp2FrameReader(headersDecoder);
    Http2FrameWriter frameWriter = new DefaultHttp2FrameWriter();
    Http2Connection connection = new DefaultHttp2Connection(false);
    WeightedFairQueueByteDistributor dist = new WeightedFairQueueByteDistributor(connection);
    dist.allocationQuantum(16 * 1024); // Make benchmarks fast again.
    DefaultHttp2RemoteFlowController controller = new DefaultHttp2RemoteFlowController(connection, dist);
    connection.remote().flowController(controller);

    return newHandler(connection, frameReader, frameWriter, lifecycleManager, keepAliveManager,
            flowControlWindow, maxHeaderListSize, stopwatchFactory, tooManyPingsRunnable, transportTracer,
            eagAttributes, authority);/*  www .jav a2s .  com*/
}

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

License:Apache License

@VisibleForTesting
static NettyServerHandler newHandler(ChannelPromise channelUnused, Http2FrameReader frameReader,
        Http2FrameWriter frameWriter, ServerTransportListener transportListener,
        List<? extends ServerStreamTracer.Factory> streamTracerFactories, TransportTracer transportTracer,
        int maxStreams, int flowControlWindow, int maxHeaderListSize, int maxMessageSize,
        long keepAliveTimeInNanos, long keepAliveTimeoutInNanos, long maxConnectionIdleInNanos,
        long maxConnectionAgeInNanos, long maxConnectionAgeGraceInNanos, boolean permitKeepAliveWithoutCalls,
        long permitKeepAliveTimeInNanos) {
    Preconditions.checkArgument(maxStreams > 0, "maxStreams must be positive");
    Preconditions.checkArgument(flowControlWindow > 0, "flowControlWindow must be positive");
    Preconditions.checkArgument(maxHeaderListSize > 0, "maxHeaderListSize must be positive");
    Preconditions.checkArgument(maxMessageSize > 0, "maxMessageSize must be positive");

    final Http2Connection connection = new DefaultHttp2Connection(true);
    WeightedFairQueueByteDistributor dist = new WeightedFairQueueByteDistributor(connection);
    dist.allocationQuantum(16 * 1024); // Make benchmarks fast again.
    DefaultHttp2RemoteFlowController controller = new DefaultHttp2RemoteFlowController(connection, dist);
    connection.remote().flowController(controller);
    final KeepAliveEnforcer keepAliveEnforcer = new KeepAliveEnforcer(permitKeepAliveWithoutCalls,
            permitKeepAliveTimeInNanos, TimeUnit.NANOSECONDS);

    // Create the local flow controller configured to auto-refill the connection window.
    connection.local()/*w w w  .  j  av  a 2s  . c o  m*/
            .flowController(new DefaultHttp2LocalFlowController(connection, DEFAULT_WINDOW_UPDATE_RATIO, true));
    frameWriter = new WriteMonitoringFrameWriter(frameWriter, keepAliveEnforcer);
    Http2ConnectionEncoder encoder = new DefaultHttp2ConnectionEncoder(connection, frameWriter);
    encoder = new Http2ControlFrameLimitEncoder(encoder, 10000);
    Http2ConnectionDecoder decoder = new DefaultHttp2ConnectionDecoder(connection, encoder, frameReader);

    Http2Settings settings = new Http2Settings();
    settings.initialWindowSize(flowControlWindow);
    settings.maxConcurrentStreams(maxStreams);
    settings.maxHeaderListSize(maxHeaderListSize);

    return new NettyServerHandler(channelUnused, connection, transportListener, streamTracerFactories,
            transportTracer, decoder, encoder, settings, maxMessageSize, keepAliveTimeInNanos,
            keepAliveTimeoutInNanos, maxConnectionIdleInNanos, maxConnectionAgeInNanos,
            maxConnectionAgeGraceInNanos, keepAliveEnforcer);
}