12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include <string.h>
- #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;
- }
|