public void initChannel(SocketChannel ch) throws Exception {
ClientConfiguration clientConfig = client.getConfiguration();
if (clientConfig.isUseTls()) {
SslContextBuilder builder = SslContextBuilder.forClient();
if (clientConfig.isTlsAllowInsecureConnection()) {
builder.trustManager(InsecureTrustManagerFactory.INSTANCE);
} else {
if (clientConfig.getTlsTrustCertsFilePath().isEmpty()) {
builder.trustManager((File) null);
} else {
File trustCertCollection = new File(clientConfig.getTlsTrustCertsFilePath());
builder.trustManager(trustCertCollection);
}
}
AuthenticationDataProvider authData = clientConfig.getAuthentication().getAuthData();
if (authData.hasDataForTls()) {
builder.keyManager(authData.getTlsPrivateKey(),
(X509Certificate[]) authData.getTlsCertificates());
}
SslContext sslCtx = builder.build();
ch.pipeline().addLast(TLS_HANDLER, sslCtx.newHandler(ch.alloc()));
}
ch.pipeline().addLast("frameDecoder", new PulsarLengthFieldFrameDecoder(MaxMessageSize, 0, 4, 0, 4));
ch.pipeline().addLast("handler", new ClientCnx(client));
}
});