#include #include "mqttmsg.h" ///////////////////////////////////////////////////////////////////////////// // CMqttMessageQueue::CMqttMessageQueue(void) { memset(&m_mtx, 0, sizeof(m_mtx)); memset(&m_mtxAtt, 0, sizeof(m_mtxAtt)); ::pthread_mutexattr_init(&m_mtxAtt); ::pthread_mutexattr_settype(&m_mtxAtt, PTHREAD_MUTEX_RECURSIVE); ::pthread_mutex_init(&m_mtx, &m_mtxAtt); } CMqttMessageQueue::~CMqttMessageQueue(void) { CMqttMessage *pMsg; while((pMsg = Pop())) pMsg->Release(); ::pthread_mutex_destroy(&m_mtx); ::pthread_mutexattr_destroy(&m_mtxAtt); } ///////////////////////////////////////////////////////////////////////////// // void CMqttMessageQueue::Push(CMqttMessage *pMsg) { Lock(); m_queue.push(pMsg); Unlock(); } ///////////////////////////////////////////////////////////////////////////// // CMqttMessage* CMqttMessageQueue::Pop(void) { CMqttMessage *pMsg = NULL; Lock(); if(!m_queue.empty()) { pMsg = m_queue.front(); m_queue.pop(); } Unlock(); return pMsg; }