Hello,everyone
I am trying to trace the workflow of gRPC connection setup.
I find that class `HandshakerManager` uses `HandshakeManager::CallNextHandshakerLocked` to start handshaking and run its callback.
In `HandshakeManager::CallNextHandshakerLocked`, there is a function call around line 178
```
auto handshaker = handshakers_[index_];
if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) {
gpr_log(
GPR_INFO,
"handshake_manager %p: calling handshaker %s [%p] at index %" PRIuPTR,
this, handshaker->name(), handshaker.get(), index_);
}
handshaker->DoHandshake(acceptor_, &call_next_handshaker_, &args_);
```
I think function `DoHandshake` actually do the handshaking. But I do not know where it is.
I guess it may be `HttpConnectHandshaker::DoHandshake`, and mark a `printf` there. However, the function in `HandshakeManager` does not call `HttpConnectHandshaker`.
So, where is the actual implementation of `DoHandshake`.
Thank you for your time.
Best wishes,
Xia Rui