Home / Class/ ReferenceCountedOpenSslContext Class — netty Architecture

ReferenceCountedOpenSslContext Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a8fb0f76_e201_5987_db10_2b8b0b47e791["ReferenceCountedOpenSslContext"]
  ec821021_8733_8627_194f_15d27e6d1f67["ReferenceCountedOpenSslContext.java"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|defined in| ec821021_8733_8627_194f_15d27e6d1f67
  f3954116_a651_4a53_b811_f3e9b4849519["ReferenceCountedOpenSslContext()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| f3954116_a651_4a53_b811_f3e9b4849519
  ea5a56d5_d36f_b820_f146_1680b428453c["opensslSelectorFailureBehavior()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| ea5a56d5_d36f_b820_f146_1680b428453c
  a720f406_d063_7be7_4ce1_93d63baefadb["cipherSuites()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| a720f406_d063_7be7_4ce1_93d63baefadb
  73322f42_9b88_7146_5af8_d0715d36fc76["ApplicationProtocolNegotiator()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 73322f42_9b88_7146_5af8_d0715d36fc76
  28445b4f_132d_ed94_fb71_3bda4e7021da["isClient()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 28445b4f_132d_ed94_fb71_3bda4e7021da
  1010f58f_ffb8_8d48_0257_092a39af0743["SSLEngine()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 1010f58f_ffb8_8d48_0257_092a39af0743
  d5e5ce36_9a6d_0920_f8ca_ac94788d6518["SslHandler()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| d5e5ce36_9a6d_0920_f8ca_ac94788d6518
  29f02045_057b_ad01_afb8_0da93b030e4e["context()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 29f02045_057b_ad01_afb8_0da93b030e4e
  d9cfdf70_4191_1ecd_4ef8_01faa1205224["OpenSslSessionStats()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| d9cfdf70_4191_1ecd_4ef8_01faa1205224
  15c42ed0_a817_62df_0b18_bddb9b8606a7["setRejectRemoteInitiatedRenegotiation()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 15c42ed0_a817_62df_0b18_bddb9b8606a7
  b50b40fa_4a04_470b_43ed_a0080bba01d5["getRejectRemoteInitiatedRenegotiation()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| b50b40fa_4a04_470b_43ed_a0080bba01d5
  24a58f26_a915_81d7_8afa_145b8267d2e5["setBioNonApplicationBufferSize()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 24a58f26_a915_81d7_8afa_145b8267d2e5
  2b445e6c_e684_afd6_ac85_37eb22cfae81["getBioNonApplicationBufferSize()"]
  a8fb0f76_e201_5987_db10_2b8b0b47e791 -->|method| 2b445e6c_e684_afd6_ac85_37eb22cfae81

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslContext.java lines 93–1245

public abstract class ReferenceCountedOpenSslContext extends SslContext implements ReferenceCounted {
    private static final InternalLogger logger =
            InternalLoggerFactory.getInstance(ReferenceCountedOpenSslContext.class);

    private static final boolean DEFAULT_USE_JDK_PROVIDERS = SystemPropertyUtil.getBoolean(
            "io.netty.handler.ssl.useJdkProviderSignatures", true);
    private static final int DEFAULT_BIO_NON_APPLICATION_BUFFER_SIZE = Math.max(1,
            SystemPropertyUtil.getInt("io.netty.handler.ssl.openssl.bioNonApplicationBufferSize",
                    2048));
    // Let's use tasks by default but still allow the user to disable it via system property just in case.
    static final boolean USE_TASKS =
            SystemPropertyUtil.getBoolean("io.netty.handler.ssl.openssl.useTasks", true);
    private static final Integer DH_KEY_LENGTH;
    private static final ResourceLeakDetector<ReferenceCountedOpenSslContext> leakDetector =
            ResourceLeakDetectorFactory.instance().newResourceLeakDetector(ReferenceCountedOpenSslContext.class);

    // TODO: Maybe make configurable ?
    protected static final int VERIFY_DEPTH = 10;

    static final boolean CLIENT_ENABLE_SESSION_TICKET =
            SystemPropertyUtil.getBoolean("jdk.tls.client.enableSessionTicketExtension", false);

    static final boolean CLIENT_ENABLE_SESSION_TICKET_TLSV13 =
            SystemPropertyUtil.getBoolean("jdk.tls.client.enableSessionTicketExtension", true);

    static final boolean SERVER_ENABLE_SESSION_TICKET =
            SystemPropertyUtil.getBoolean("jdk.tls.server.enableSessionTicketExtension", false);

     static final boolean SERVER_ENABLE_SESSION_TICKET_TLSV13 =
            SystemPropertyUtil.getBoolean("jdk.tls.server.enableSessionTicketExtension", true);

    static final boolean SERVER_ENABLE_SESSION_CACHE =
            SystemPropertyUtil.getBoolean("io.netty.handler.ssl.openssl.sessionCacheServer", true);
    static final boolean CLIENT_ENABLE_SESSION_CACHE =
            SystemPropertyUtil.getBoolean("io.netty.handler.ssl.openssl.sessionCacheClient", true);

    /**
     * The OpenSSL SSL_CTX object.
     *
     * <strong>{@link #ctxLock} must be hold while using ctx!</strong>
     */
    protected long ctx;
    private final List<String> unmodifiableCiphers;
    private final OpenSslApplicationProtocolNegotiator apn;
    private final int mode;

    // Reference Counting
    private final ResourceLeakTracker<ReferenceCountedOpenSslContext> leak;
    private final AbstractReferenceCounted refCnt = new AbstractReferenceCounted() {
        @Override
        public ReferenceCounted touch(Object hint) {
            if (leak != null) {
                leak.record(hint);
            }

            return ReferenceCountedOpenSslContext.this;
        }

        @Override
        protected void deallocate() {
            try {
                destroy();
            } finally {
                if (leak != null) {
                    boolean closed = leak.close(ReferenceCountedOpenSslContext.this);
                    assert closed;
                }
            }
        }
    };

    final Certificate[] keyCertChain;
    final ClientAuth clientAuth;
    final String[] protocols;
    final String endpointIdentificationAlgorithm;
    final List<SNIServerName> serverNames;
    final boolean hasTLSv13Cipher;
    final boolean hasTmpDhKeys;
    final String[] groups;
    final boolean enableOcsp;
    final ConcurrentMap<Long, ReferenceCountedOpenSslEngine> engines = new ConcurrentHashMap<>();

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free