@Override
  public void channelCreated(Channel ch) throws Exception {
    ChannelPipeline pipeline = ch.pipeline();
    SslHandler sslHandler = new SslHandler(sslFactory.createSSLEngine(host, port, SSLFactory.Mode.CLIENT));
    pipeline.addLast(sslHandler);
    if (http2PeerCertificateValidator != null) {
      pipeline.addLast(http2PeerCertificateValidator);
    }
    pipeline.addLast(Http2FrameCodecBuilder.forClient()
        .initialSettings(Http2Settings.defaultSettings()
            .maxFrameSize(http2ClientConfig.http2FrameMaxSize)
            .initialWindowSize(http2ClientConfig.http2InitialWindowSize))
        .frameLogger(new Http2FrameLogger(LogLevel.DEBUG, "client"))
        .build());
    pipeline.addLast(new Http2MultiplexHandler(new ChannelInboundHandlerAdapter()));
    pipeline.addLast(connectionInboundExceptionHandler);
  }
Construct a {@link Http2ChannelPoolHandler}.
@param sslFactory the {@link SSLFactory} to use for generating {@link javax.net.ssl.SSLEngine} instances,
                  or {@code null} if SSL is not enabled in this pipeline.
@param http2ClientConfig the {@link Http2ClientConfig}
@param http2ClientMetrics the {@link Http2ClientMetrics}
ambry-network/src/main/java/com/github/ambry/network/http2/Http2ChannelPoolHandler.java