diff options
Diffstat (limited to 'grpc/src/core/lib/channel/handshaker.cc')
-rw-r--r-- | grpc/src/core/lib/channel/handshaker.cc | 59 |
1 files changed, 9 insertions, 50 deletions
diff --git a/grpc/src/core/lib/channel/handshaker.cc b/grpc/src/core/lib/channel/handshaker.cc index 8d1d45e5..632d2864 100644 --- a/grpc/src/core/lib/channel/handshaker.cc +++ b/grpc/src/core/lib/channel/handshaker.cc @@ -53,45 +53,7 @@ std::string HandshakerArgsString(HandshakerArgs* args) { } // namespace -HandshakeManager::HandshakeManager() { gpr_mu_init(&mu_); } - -/// Add \a mgr to the server side list of all pending handshake managers, the -/// list starts with \a *head. -// Not thread-safe. Caller needs to synchronize. -void HandshakeManager::AddToPendingMgrList(HandshakeManager** head) { - GPR_ASSERT(prev_ == nullptr); - GPR_ASSERT(next_ == nullptr); - next_ = *head; - if (*head) { - (*head)->prev_ = this; - } - *head = this; -} - -/// Remove \a mgr from the server side list of all pending handshake managers. -// Not thread-safe. Caller needs to synchronize. -void HandshakeManager::RemoveFromPendingMgrList(HandshakeManager** head) { - if (next_ != nullptr) { - next_->prev_ = prev_; - } - if (prev_ != nullptr) { - prev_->next_ = next_; - } else { - GPR_ASSERT(*head == this); - *head = next_; - } -} - -/// Shutdown all pending handshake managers starting at head on the server -/// side. Not thread-safe. Caller needs to synchronize. -void HandshakeManager::ShutdownAllPending(grpc_error* why) { - auto* head = this; - while (head != nullptr) { - head->Shutdown(GRPC_ERROR_REF(why)); - head = head->next_; - } - GRPC_ERROR_UNREF(why); -} +HandshakeManager::HandshakeManager() {} void HandshakeManager::Add(RefCountedPtr<Handshaker> handshaker) { if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) { @@ -104,12 +66,9 @@ void HandshakeManager::Add(RefCountedPtr<Handshaker> handshaker) { handshakers_.push_back(std::move(handshaker)); } -HandshakeManager::~HandshakeManager() { - handshakers_.clear(); - gpr_mu_destroy(&mu_); -} +HandshakeManager::~HandshakeManager() { handshakers_.clear(); } -void HandshakeManager::Shutdown(grpc_error* why) { +void HandshakeManager::Shutdown(grpc_error_handle why) { { MutexLock lock(&mu_); // Shutdown the handshaker that's currently in progress, if any. @@ -124,12 +83,12 @@ void HandshakeManager::Shutdown(grpc_error* why) { // Helper function to call either the next handshaker or the // on_handshake_done callback. // Returns true if we've scheduled the on_handshake_done callback. -bool HandshakeManager::CallNextHandshakerLocked(grpc_error* error) { +bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) { if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) { gpr_log(GPR_INFO, "handshake_manager %p: error=%s shutdown=%d index=%" PRIuPTR ", args=%s", - this, grpc_error_string(error), is_shutdown_, index_, + this, grpc_error_std_string(error).c_str(), is_shutdown_, index_, HandshakerArgsString(&args_).c_str()); } GPR_ASSERT(index_ <= handshakers_.size()); @@ -162,7 +121,7 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error* error) { gpr_log(GPR_INFO, "handshake_manager %p: handshaking complete -- scheduling " "on_handshake_done with error=%s", - this, grpc_error_string(error)); + this, grpc_error_std_string(error).c_str()); } // Cancel deadline timer, since we're invoking the on_handshake_done // callback now. @@ -183,7 +142,8 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error* error) { return is_shutdown_; } -void HandshakeManager::CallNextHandshakerFn(void* arg, grpc_error* error) { +void HandshakeManager::CallNextHandshakerFn(void* arg, + grpc_error_handle error) { auto* mgr = static_cast<HandshakeManager*>(arg); bool done; { @@ -198,7 +158,7 @@ void HandshakeManager::CallNextHandshakerFn(void* arg, grpc_error* error) { } } -void HandshakeManager::OnTimeoutFn(void* arg, grpc_error* error) { +void HandshakeManager::OnTimeoutFn(void* arg, grpc_error_handle error) { auto* mgr = static_cast<HandshakeManager*>(arg); if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled mgr->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out")); @@ -216,7 +176,6 @@ void HandshakeManager::DoHandshake(grpc_endpoint* endpoint, { MutexLock lock(&mu_); GPR_ASSERT(index_ == 0); - GPR_ASSERT(!is_shutdown_); // Construct handshaker args. These will be passed through all // handshakers and eventually be freed by the on_handshake_done callback. args_.endpoint = endpoint; |