private void unwrapHandshake()

in src/main/java/com/twitter/whiskey/nio/SSLSocket.java [86:119]


    private void unwrapHandshake(ByteBuffer wrappedBuf) throws IOException {

        SSLEngineResult result;
        do {
            // TODO(bgallagher) buffer pooling
            ByteBuffer to = ByteBuffer.allocate(engine.getSession().getPacketBufferSize());

            bufferedWrapped.put(wrappedBuf);
            bufferedWrapped.flip();
            result = engine.unwrap(bufferedWrapped, to);
            bufferedWrapped.compact();

            switch (result.getHandshakeStatus()) {
                case NEED_UNWRAP:
                    break;
                case NEED_WRAP:
                    wrapHandshake();
                    return;
                case NEED_TASK:
                    runDelegatedTasks(engine);
                    break;
                case FINISHED:
                    super.finishConnect();
                    if (bufferedWrapped.position() > 0) {
                        onReadable();
                    }
                    return;
                case NOT_HANDSHAKING:
                    break;
            }
        } while (result.getStatus() != SSLEngineResult.Status.BUFFER_UNDERFLOW);

        readAndUnwrapHandshake();
    }