in src/MQClientFactory.cpp [284:328]
void MQClientFactory::shutdown() {
if (getConsumerTableSize() != 0)
return;
if (getProducerTableSize() != 0)
return;
switch (m_serviceState) {
case CREATE_JUST:
case RUNNING: {
if (m_consumer_async_service_thread) {
m_consumer_async_ioService.stop();
m_consumer_async_service_thread->interrupt();
m_consumer_async_service_thread->join();
m_consumer_async_service_thread.reset();
}
if (m_async_service_thread) {
m_async_ioService.stop();
m_async_service_thread->interrupt();
m_async_service_thread->join();
m_async_service_thread.reset();
}
if (m_pClientAPIImpl) {
m_pClientAPIImpl->stopAllTcpTransportThread(); // Note: stop all
// TcpTransport Threads
// and release all
// responseFuture
// conditions
m_pClientAPIImpl.reset();
}
m_serviceState = SHUTDOWN_ALREADY;
LOG_INFO("MQClientFactory:%s shutdown", m_clientId.c_str());
break;
}
case SHUTDOWN_ALREADY:
break;
default:
break;
}
MQClientManager::getInstance()->removeClientFactory(m_clientId);
}