ReferenceCountedOpenSslEngine Class — netty Architecture
Architecture documentation for the ReferenceCountedOpenSslEngine class in ReferenceCountedOpenSslEngine.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD df1ad81e_e5bf_85e6_4418_db301b4c3e66["ReferenceCountedOpenSslEngine"] e8cf4c21_519c_af0d_e66f_ef135c52b428["ReferenceCountedOpenSslEngine.java"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|defined in| e8cf4c21_519c_af0d_e66f_ef135c52b428 597187e9_65f2_df9a_22e3_c3e7eb0f231a["ReferenceCountedOpenSslEngine()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 597187e9_65f2_df9a_22e3_c3e7eb0f231a bede7e4a_f60a_d5d6_dac7_80303af46c2c["isValidHostNameForSNI()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| bede7e4a_f60a_d5d6_dac7_80303af46c2c 268ef7d5_9b7e_7de1_a4eb_d2f586b62055["authMethods()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 268ef7d5_9b7e_7de1_a4eb_d2f586b62055 21872382_ca9c_9448_747f_139440aa6a06["setKeyMaterial()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 21872382_ca9c_9448_747f_139440aa6a06 cb3f6eb3_0abf_7682_784c_b61d6436f51e["SecretKeySpec()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| cb3f6eb3_0abf_7682_784c_b61d6436f51e 6adbdd0d_6373_a49b_5e3b_d39045895f70["isSessionReused()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 6adbdd0d_6373_a49b_5e3b_d39045895f70 e9c980d1_1882_12af_8d3a_c718bd042740["setOcspResponse()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| e9c980d1_1882_12af_8d3a_c718bd042740 4fd95670_5e98_9499_df09_140619cd138d["getOcspResponse()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 4fd95670_5e98_9499_df09_140619cd138d 670b28f9_b49a_8e5f_0f53_3413e19d40f0["refCnt()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 670b28f9_b49a_8e5f_0f53_3413e19d40f0 eb93f139_2d49_748b_2cb1_202cd5ff3948["ReferenceCounted()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| eb93f139_2d49_748b_2cb1_202cd5ff3948 62c22963_254e_558e_59f0_10304b0c83d2["release()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 62c22963_254e_558e_59f0_10304b0c83d2 cd0a05c8_b216_ef8c_2253_a5a3425998d7["String()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| cd0a05c8_b216_ef8c_2253_a5a3425998d7 50a4b923_0639_a209_0e86_6fa11968efb1["SSLSession()"] df1ad81e_e5bf_85e6_4418_db301b4c3e66 -->|method| 50a4b923_0639_a209_0e86_6fa11968efb1
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java lines 96–2793
public class ReferenceCountedOpenSslEngine extends SSLEngine implements ReferenceCounted, ApplicationProtocolAccessor {
private static final InternalLogger logger = InternalLoggerFactory.getInstance(ReferenceCountedOpenSslEngine.class);
private static final ResourceLeakDetector<ReferenceCountedOpenSslEngine> leakDetector =
ResourceLeakDetectorFactory.instance().newResourceLeakDetector(ReferenceCountedOpenSslEngine.class);
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_SSLV2 = 0;
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_SSLV3 = 1;
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_TLSv1 = 2;
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_TLSv1_1 = 3;
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_TLSv1_2 = 4;
private static final int OPENSSL_OP_NO_PROTOCOL_INDEX_TLSv1_3 = 5;
private static final int[] OPENSSL_OP_NO_PROTOCOLS = {
SSL.SSL_OP_NO_SSLv2,
SSL.SSL_OP_NO_SSLv3,
SSL.SSL_OP_NO_TLSv1,
SSL.SSL_OP_NO_TLSv1_1,
SSL.SSL_OP_NO_TLSv1_2,
SSL.SSL_OP_NO_TLSv1_3
};
/**
* Depends upon tcnative ... only use if tcnative is available!
*/
static final int MAX_PLAINTEXT_LENGTH = SSL.SSL_MAX_PLAINTEXT_LENGTH;
/**
* Depends upon tcnative ... only use if tcnative is available!
*/
static final int MAX_RECORD_SIZE = SSL.SSL_MAX_RECORD_LENGTH;
private static final SSLEngineResult NEED_UNWRAP_OK = new SSLEngineResult(OK, NEED_UNWRAP, 0, 0);
private static final SSLEngineResult NEED_UNWRAP_CLOSED = new SSLEngineResult(CLOSED, NEED_UNWRAP, 0, 0);
private static final SSLEngineResult NEED_WRAP_OK = new SSLEngineResult(OK, NEED_WRAP, 0, 0);
private static final SSLEngineResult NEED_WRAP_CLOSED = new SSLEngineResult(CLOSED, NEED_WRAP, 0, 0);
private static final SSLEngineResult CLOSED_NOT_HANDSHAKING = new SSLEngineResult(CLOSED, NOT_HANDSHAKING, 0, 0);
// OpenSSL state
private long ssl;
private long networkBIO;
private enum HandshakeState {
/**
* Not started yet.
*/
NOT_STARTED,
/**
* Started via unwrap/wrap.
*/
STARTED_IMPLICITLY,
/**
* Started via {@link #beginHandshake()}.
*/
STARTED_EXPLICITLY,
/**
* Handshake is finished.
*/
FINISHED
}
private HandshakeState handshakeState = HandshakeState.NOT_STARTED;
private boolean receivedShutdown;
private volatile boolean destroyed;
private volatile String applicationProtocol;
private volatile boolean needTask;
private boolean hasTLSv13Cipher;
private boolean sessionSet;
// Reference Counting
private final ResourceLeakTracker<ReferenceCountedOpenSslEngine> leak;
private final AbstractReferenceCounted refCnt = new AbstractReferenceCounted() {
@Override
public ReferenceCounted touch(Object hint) {
if (leak != null) {
leak.record(hint);
}
return ReferenceCountedOpenSslEngine.this;
}
@Override
protected void deallocate() {
Source
Frequently Asked Questions
What is the ReferenceCountedOpenSslEngine class?
ReferenceCountedOpenSslEngine is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java.
Where is ReferenceCountedOpenSslEngine defined?
ReferenceCountedOpenSslEngine is defined in handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java at line 96.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free