/*
 * Copyright 2017 The Netty Project
 *
 * The Netty Project licenses this file to you under the Apache License,
 * version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */
package io.netty.handler.codec.http2;

import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.util.internal.UnstableApi;

import static io.netty.util.internal.ObjectUtil.checkNotNull;

A builder for Http2MultiplexCodec.
/** * A builder for {@link Http2MultiplexCodec}. */
@UnstableApi public class Http2MultiplexCodecBuilder extends AbstractHttp2ConnectionHandlerBuilder<Http2MultiplexCodec, Http2MultiplexCodecBuilder> { final ChannelHandler childHandler; Http2MultiplexCodecBuilder(boolean server, ChannelHandler childHandler) { server(server); this.childHandler = checkSharable(checkNotNull(childHandler, "childHandler")); } private static ChannelHandler checkSharable(ChannelHandler handler) { if ((handler instanceof ChannelHandlerAdapter && !((ChannelHandlerAdapter) handler).isSharable()) && !handler.getClass().isAnnotationPresent(ChannelHandler.Sharable.class)) { throw new IllegalArgumentException("The handler must be Sharable"); } return handler; }
Creates a builder for a HTTP/2 client.
Params:
  • childHandler – the handler added to channels for remotely-created streams. It must be Sharable.
/** * Creates a builder for a HTTP/2 client. * * @param childHandler the handler added to channels for remotely-created streams. It must be * {@link ChannelHandler.Sharable}. */
public static Http2MultiplexCodecBuilder forClient(ChannelHandler childHandler) { return new Http2MultiplexCodecBuilder(false, childHandler); }
Creates a builder for a HTTP/2 server.
Params:
  • childHandler – the handler added to channels for remotely-created streams. It must be Sharable.
/** * Creates a builder for a HTTP/2 server. * * @param childHandler the handler added to channels for remotely-created streams. It must be * {@link ChannelHandler.Sharable}. */
public static Http2MultiplexCodecBuilder forServer(ChannelHandler childHandler) { return new Http2MultiplexCodecBuilder(true, childHandler); } @Override public Http2Settings initialSettings() { return super.initialSettings(); } @Override public Http2MultiplexCodecBuilder initialSettings(Http2Settings settings) { return super.initialSettings(settings); } @Override public long gracefulShutdownTimeoutMillis() { return super.gracefulShutdownTimeoutMillis(); } @Override public Http2MultiplexCodecBuilder gracefulShutdownTimeoutMillis(long gracefulShutdownTimeoutMillis) { return super.gracefulShutdownTimeoutMillis(gracefulShutdownTimeoutMillis); } @Override public boolean isServer() { return super.isServer(); } @Override public int maxReservedStreams() { return super.maxReservedStreams(); } @Override public Http2MultiplexCodecBuilder maxReservedStreams(int maxReservedStreams) { return super.maxReservedStreams(maxReservedStreams); } @Override public boolean isValidateHeaders() { return super.isValidateHeaders(); } @Override public Http2MultiplexCodecBuilder validateHeaders(boolean validateHeaders) { return super.validateHeaders(validateHeaders); } @Override public Http2FrameLogger frameLogger() { return super.frameLogger(); } @Override public Http2MultiplexCodecBuilder frameLogger(Http2FrameLogger frameLogger) { return super.frameLogger(frameLogger); } @Override public boolean encoderEnforceMaxConcurrentStreams() { return super.encoderEnforceMaxConcurrentStreams(); } @Override public Http2MultiplexCodecBuilder encoderEnforceMaxConcurrentStreams(boolean encoderEnforceMaxConcurrentStreams) { return super.encoderEnforceMaxConcurrentStreams(encoderEnforceMaxConcurrentStreams); } @Override public Http2HeadersEncoder.SensitivityDetector headerSensitivityDetector() { return super.headerSensitivityDetector(); } @Override public Http2MultiplexCodecBuilder headerSensitivityDetector( Http2HeadersEncoder.SensitivityDetector headerSensitivityDetector) { return super.headerSensitivityDetector(headerSensitivityDetector); } @Override public Http2MultiplexCodecBuilder encoderIgnoreMaxHeaderListSize(boolean ignoreMaxHeaderListSize) { return super.encoderIgnoreMaxHeaderListSize(ignoreMaxHeaderListSize); } @Override public Http2MultiplexCodecBuilder initialHuffmanDecodeCapacity(int initialHuffmanDecodeCapacity) { return super.initialHuffmanDecodeCapacity(initialHuffmanDecodeCapacity); } @Override public Http2MultiplexCodec build() { return super.build(); } @Override protected Http2MultiplexCodec build( Http2ConnectionDecoder decoder, Http2ConnectionEncoder encoder, Http2Settings initialSettings) { return new Http2MultiplexCodec(encoder, decoder, initialSettings, childHandler); } }