static WebClientOptions webClientOptions()

in server/src/main/java/org/apache/cassandra/sidecar/utils/SidecarClientProvider.java [138:176]


    static WebClientOptions webClientOptions(SidecarClientConfiguration clientConfig)
    {
        WebClientOptions options = new WebClientOptions();
        options.getPoolOptions()
               .setCleanerPeriod(clientConfig.connectionPoolCleanerPeriod().toIntMillis())
               .setEventLoopSize(clientConfig.connectionPoolEventLoopSize())
               .setHttp1MaxSize(clientConfig.connectionPoolMaxSize())
               .setMaxWaitQueueSize(clientConfig.connectionPoolMaxWaitQueueSize());

        SslConfiguration ssl = clientConfig.sslConfiguration();
        if (ssl != null && ssl.enabled())
        {
            options.setSsl(true);

            if (!ssl.secureTransportProtocols().isEmpty())
            {
                // Use LinkedHashSet to preserve input order
                options.setEnabledSecureTransportProtocols(new LinkedHashSet<>(ssl.secureTransportProtocols()));
            }

            for (String cipherSuite : ssl.cipherSuites())
            {
                options.addEnabledCipherSuite(cipherSuite);
            }

            if (ssl.preferOpenSSL() && OpenSSLEngineOptions.isAvailable())
            {
                LOGGER.info("Using OpenSSL for encryption in Webclient Options");
                options.setSslEngineOptions(new OpenSSLEngineOptions().setSessionCacheEnabled(true));
            }
            else
            {
                LOGGER.warn("OpenSSL not enabled, using JDK for TLS in Webclient Options");
            }

            configureSSLOptions(options.getSslOptions(), ssl, 0);
        }
        return options;
    }