Home / Function/ doHandshake() — netty Function Reference

doHandshake() — netty Function Reference

Architecture documentation for the doHandshake() function in AbstractSslEngineBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  1ca4381f_12c1_e8ea_cbe9_ec019815c591["doHandshake()"]
  2049e1f3_c0b4_240c_1d58_95f03c8142de["AbstractSslEngineBenchmark"]
  1ca4381f_12c1_e8ea_cbe9_ec019815c591 -->|defined in| 2049e1f3_c0b4_240c_1d58_95f03c8142de
  0d7f838d_cbb0_efbc_27ab_309b508e23f1["runDelegatedTasks()"]
  1ca4381f_12c1_e8ea_cbe9_ec019815c591 -->|calls| 0d7f838d_cbb0_efbc_27ab_309b508e23f1
  7ac355cb_b1e1_a0f3_b399_b00d8cfe99a2["isHandshakeFinished()"]
  1ca4381f_12c1_e8ea_cbe9_ec019815c591 -->|calls| 7ac355cb_b1e1_a0f3_b399_b00d8cfe99a2
  style 1ca4381f_12c1_e8ea_cbe9_ec019815c591 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java lines 190–258

    protected final boolean doHandshake() throws SSLException {
        clientEngine.beginHandshake();
        serverEngine.beginHandshake();

        SSLEngineResult clientResult = null;
        SSLEngineResult serverResult = null;

        boolean clientHandshakeFinished = false;
        boolean serverHandshakeFinished = false;

        do {
            int cTOsPos = cTOs.position();
            int sTOcPos = sTOc.position();

            if (!clientHandshakeFinished) {
                clientResult = clientEngine.wrap(empty, cTOs);
                runDelegatedTasks(clientResult, clientEngine);
                assert empty.remaining() == clientResult.bytesConsumed();
                assert cTOs.position() - cTOsPos == clientResult.bytesProduced();

                clientHandshakeFinished = isHandshakeFinished(clientResult);
            }

            if (!serverHandshakeFinished) {
                serverResult = serverEngine.wrap(empty, sTOc);
                runDelegatedTasks(serverResult, serverEngine);
                assert empty.remaining() == serverResult.bytesConsumed();
                assert sTOc.position() - sTOcPos == serverResult.bytesProduced();

                serverHandshakeFinished = isHandshakeFinished(serverResult);
            }

            cTOs.flip();
            sTOc.flip();

            cTOsPos = cTOs.position();
            sTOcPos = sTOc.position();

            if (!clientHandshakeFinished) {
                int clientAppReadBufferPos = clientAppReadBuffer.position();
                clientResult = clientEngine.unwrap(sTOc, clientAppReadBuffer);

                runDelegatedTasks(clientResult, clientEngine);
                assert sTOc.position() - sTOcPos == clientResult.bytesConsumed();
                assert clientAppReadBuffer.position() - clientAppReadBufferPos == clientResult.bytesProduced();

                clientHandshakeFinished = isHandshakeFinished(clientResult);
            } else {
                assert !sTOc.hasRemaining();
            }

            if (!serverHandshakeFinished) {
                int serverAppReadBufferPos = serverAppReadBuffer.position();
                serverResult = serverEngine.unwrap(cTOs, serverAppReadBuffer);
                runDelegatedTasks(serverResult, serverEngine);
                assert cTOs.position() - cTOsPos == serverResult.bytesConsumed();
                assert serverAppReadBuffer.position() - serverAppReadBufferPos == serverResult.bytesProduced();

                serverHandshakeFinished = isHandshakeFinished(serverResult);
            } else {
                assert !cTOs.hasRemaining();
            }

            sTOc.compact();
            cTOs.compact();
        } while (!clientHandshakeFinished || !serverHandshakeFinished);
        return clientResult.getStatus() == SSLEngineResult.Status.OK &&
                serverResult.getStatus() == SSLEngineResult.Status.OK;
    }

Domain

Subdomains

Frequently Asked Questions

What does doHandshake() do?
doHandshake() is a function in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java.
Where is doHandshake() defined?
doHandshake() is defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslEngineBenchmark.java at line 190.
What does doHandshake() call?
doHandshake() calls 2 function(s): isHandshakeFinished, runDelegatedTasks.

Analyze Your Own Codebase

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

Try Supermodel Free