Class ApplicationProtocolNegotiationHandler

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.ssl.ApplicationProtocolNegotiationHandler
All Implemented Interfaces:
ChannelHandler, ChannelInboundHandler

public abstract class ApplicationProtocolNegotiationHandler extends ChannelInboundHandlerAdapter
Configures a ChannelPipeline depending on the application-level protocol negotiation result of SslHandler. For example, you could configure your HTTP pipeline depending on the result of ALPN:
public class MyInitializer extends ChannelInitializer<Channel> {
 private final SslContext sslCtx;
 public MyInitializer(SslContext sslCtx) {
 this.sslCtx = sslCtx;
 }
 protected void initChannel(Channel ch) {
 ChannelPipeline p = ch.pipeline();
 p.addLast(sslCtx.newHandler(...)); // Adds SslHandler
 p.addLast(new MyNegotiationHandler());
 }
}
public class MyNegotiationHandler extends ApplicationProtocolNegotiationHandler {
 public MyNegotiationHandler() {
 super(ApplicationProtocolNames.HTTP_1_1);
 }
 protected void configurePipeline(ChannelHandlerContext ctx, String protocol) {
 if (ApplicationProtocolNames.HTTP_2.equals(protocol) {
 configureHttp2(ctx);
 } else if (ApplicationProtocolNames.HTTP_1_1.equals(protocol)) {
 configureHttp1(ctx);
 } else {
 throw new IllegalStateException("unknown protocol: " + protocol);
 }
 }
}