CHandleManager *m_handle_mgr {};
CQueryHandler *m_query_h {};
CDbusHandler *m_dbus_h {};
+ GThread *_msgQThread {};
+ GThread *_msgThread {};
typedef void (CMessageHandler::*msg_handler)(rms_msg_request *request, rms_msg_response *response);
static msg_handler handlers[RMS_REQUEST_MAX];
CMessageHandler::~CMessageHandler(void)
{
+ if (_msgQThread)
+ g_thread_join(_msgQThread);
+ if (_msgThread)
+ g_thread_join(_msgThread);
if (m_handle_mgr)
delete m_handle_mgr;
if (m_query_h)
delete msgq_tx;
if (msgq_rx)
delete msgq_rx;
+ if (m_dbus_h)
+ delete m_dbus_h;
}
void CMessageHandler::InitDbusHandlers(void)
int CMessageHandler::Run(void)
{
- GThread *_msgQThread = g_thread_new("rms_msgq_thread", msgQThread, this);
+ _msgQThread = g_thread_new("rms_msgq_thread", msgQThread, this);
if (!_msgQThread) {
SERVER_ERR("failed to create rms_msgq thread");
assert(0);
return RMS_ERROR;
}
- GThread *_msgThread = g_thread_new("rms_msg_thread", msgThread, this);
+ _msgThread = g_thread_new("rms_msg_thread", msgThread, this);
if (!_msgThread) {
SERVER_ERR("event loop thread create failed");
assert(0);
m_dbus_h = new CDbusHandler(async_queue);
- // g_thread_join to release resources
- gpointer _msgQResult = g_thread_join(_msgQThread);
- if (_msgQResult)
- g_free(_msgQResult);
-
- gpointer _msgResult = g_thread_join(_msgThread);
- if (_msgResult)
- g_free(_msgResult);
-
- delete m_dbus_h;
-
SERVER_INFO("RMS_OK");
return RMS_OK;