@@ -62,8 +62,6 @@ MQClientFactory::~MQClientFactory() {
62
62
m_topicRouteTable.clear ();
63
63
m_brokerAddrTable.clear ();
64
64
m_topicPublishInfoTable.clear ();
65
-
66
- m_pClientAPIImpl = NULL ;
67
65
}
68
66
69
67
void MQClientFactory::start () {
@@ -287,26 +285,36 @@ void MQClientFactory::shutdown() {
287
285
return ;
288
286
289
287
switch (m_serviceState) {
288
+ case CREATE_JUST:
290
289
case RUNNING: {
291
290
if (m_consumer_async_service_thread) {
292
291
m_consumer_async_ioService.stop ();
293
292
m_consumer_async_service_thread->interrupt ();
294
293
m_consumer_async_service_thread->join ();
294
+ m_consumer_async_service_thread.reset ();
295
+ }
296
+
297
+ if (m_async_service_thread) {
298
+ m_async_ioService.stop ();
299
+ m_async_service_thread->interrupt ();
300
+ m_async_service_thread->join ();
301
+ m_async_service_thread.reset ();
295
302
}
296
- m_async_ioService.stop ();
297
- m_async_service_thread->interrupt ();
298
- m_async_service_thread->join ();
299
- m_pClientAPIImpl->stopAllTcpTransportThread (); // Note: stop all
300
- // TcpTransport Threads
301
- // and release all
302
- // responseFuture
303
- // conditions
303
+
304
+ if (m_pClientAPIImpl) {
305
+ m_pClientAPIImpl->stopAllTcpTransportThread (); // Note: stop all
306
+ // TcpTransport Threads
307
+ // and release all
308
+ // responseFuture
309
+ // conditions
310
+ m_pClientAPIImpl.reset ();
311
+ }
312
+
304
313
m_serviceState = SHUTDOWN_ALREADY;
305
314
LOG_INFO (" MQClientFactory:%s shutdown" , m_clientId.c_str ());
306
315
break ;
307
316
}
308
317
case SHUTDOWN_ALREADY:
309
- case CREATE_JUST:
310
318
break ;
311
319
default :
312
320
break ;
0 commit comments