void MQClientFactory::shutdown()

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);
}