Home / Class/ AbstractSslEngineBenchmark Class — netty Architecture

AbstractSslEngineBenchmark Class — netty Architecture

Architecture documentation for the AbstractSslEngineBenchmark class in AbstractSslEngineBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2049e1f3_c0b4_240c_1d58_95f03c8142de["AbstractSslEngineBenchmark"]
  6665b9e5_1220_a33a_5278_90a78eece30a["AbstractSslEngineBenchmark.java"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|defined in| 6665b9e5_1220_a33a_5278_90a78eece30a
  396fa817_5309_c420_5ce3_1a1c170811dd["initEngines()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 396fa817_5309_c420_5ce3_1a1c170811dd
  0bad146a_c211_91b7_2738_3730bb85d5e2["destroyEngines()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 0bad146a_c211_91b7_2738_3730bb85d5e2
  b9691586_f3d8_069a_eab1_d0da5c42c6d9["initHandshakeBuffers()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| b9691586_f3d8_069a_eab1_d0da5c42c6d9
  eecbc4da_66d8_7fd8_c3be_8491d0ee0671["destroyHandshakeBuffers()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| eecbc4da_66d8_7fd8_c3be_8491d0ee0671
  1ca4381f_12c1_e8ea_cbe9_ec019815c591["doHandshake()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 1ca4381f_12c1_e8ea_cbe9_ec019815c591
  e5406640_7d5f_b8f3_7d5a_226b2dc64861["SSLEngine()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| e5406640_7d5f_b8f3_7d5a_226b2dc64861
  086027d6_45fd_2ab3_ea3c_284708eba508["checkSslEngineResult()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 086027d6_45fd_2ab3_ea3c_284708eba508
  606788b4_80bf_6ed6_ff3d_5bc94f89b73e["CleanableDirectBuffer()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 606788b4_80bf_6ed6_ff3d_5bc94f89b73e
  7ac355cb_b1e1_a0f3_b399_b00d8cfe99a2["isHandshakeFinished()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 7ac355cb_b1e1_a0f3_b399_b00d8cfe99a2
  0d7f838d_cbb0_efbc_27ab_309b508e23f1["runDelegatedTasks()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de -->|method| 0d7f838d_cbb0_efbc_27ab_309b508e23f1

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java lines 36–291

public class AbstractSslEngineBenchmark extends AbstractMicrobenchmark {

    private static final String PROTOCOL_TLS_V1_2 = "TLSv1.2";

    public enum SslEngineProvider {
        JDK {
            @Override
            SslProvider sslProvider() {
                return SslProvider.JDK;
            }
        },
        OPENSSL {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL;
            }
        },
        OPENSSL_REFCNT {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL_REFCNT;
            }
        };
        private final SslContext clientContext = newClientContext();
        private final SslContext serverContext = newServerContext();

        private SslContext newClientContext() {
            try {
                return SslContextBuilder.forClient()
                        .sslProvider(sslProvider())
                        .trustManager(InsecureTrustManagerFactory.INSTANCE)
                        .build();
            } catch (SSLException e) {
                throw new IllegalStateException(e);
            }
        }

        private SslContext newServerContext() {
            try {
                File keyFile = new File(getClass().getResource("test_unencrypted.pem").getFile());
                File crtFile = new File(getClass().getResource("test.crt").getFile());

                return SslContextBuilder.forServer(crtFile, keyFile)
                        .sslProvider(sslProvider())
                        .build();
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
        }

        SSLEngine newClientEngine(ByteBufAllocator allocator, String cipher) {
            return configureEngine(clientContext.newHandler(allocator).engine(), cipher);
        }

        SSLEngine newServerEngine(ByteBufAllocator allocator, String cipher) {
            return configureEngine(serverContext.newHandler(allocator).engine(), cipher);
        }

        abstract SslProvider sslProvider();

        static SSLEngine configureEngine(SSLEngine engine, String cipher) {
            engine.setEnabledProtocols(new String[]{ PROTOCOL_TLS_V1_2 });
            engine.setEnabledCipherSuites(new String[]{ cipher });
            return engine;
        }
    }

    public enum BufferType {
        HEAP {
            @Override
            CleanableDirectBuffer newBuffer(int size) {
                ByteBuffer byteBuffer = ByteBuffer.allocate(size);
                return new CleanableDirectBuffer() {
                    @Override
                    public ByteBuffer buffer() {
                        return byteBuffer;
                    }

                    @Override
                    public void clean() {
                        // NOOP

Frequently Asked Questions

What is the AbstractSslEngineBenchmark class?
AbstractSslEngineBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java.
Where is AbstractSslEngineBenchmark defined?
AbstractSslEngineBenchmark is defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java at line 36.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free