void ConnectionManager::initiateGracefulShutdown( std::chrono::milliseconds idleGrace) { if (idleGrace.count() > 0) { idleLoopCallback_.scheduleTimeout(idleGrace); VLOG(3) << "Scheduling idle grace period of " << idleGrace.count() << "ms"; } else { action_ = ShutdownAction::DRAIN2; VLOG(3) << "proceeding directly to closing idle connections"; } drainAllConnections(); }
void Acceptor::acceptStopped() noexcept { VLOG(3) << "Acceptor " << this << " acceptStopped()"; // Drain the open client connections drainAllConnections(); // If we haven't yet finished draining, begin doing so by marking ourselves // as in the draining state. We must be sure to hit checkDrained() here, as // if we're completely idle, we can should consider ourself drained // immediately (as there is no outstanding work to complete to cause us to // re-evaluate this). if (state_ != State::kDone) { state_ = State::kDraining; checkDrained(); } }