22#include <QMutexLocker>
23#include <QWaitCondition>
88 std::deque<T> m_queue;
91 mutable QMutex m_mutex;
92 QWaitCondition m_notEmptyCondition;
93 QWaitCondition m_notFullCondition;
102 , m_notEmptyCondition()
103 , m_notFullCondition()
114 if (m_queue.size() == m_maxSize) {
118 m_queue.push_back(item);
124 m_notFullCondition.wait(&m_mutex);
125 m_queue.push_back(item);
129 m_queue.push_back(item);
130 if (m_queue.size() == 1) {
131 m_notEmptyCondition.wakeOne();
142 if (m_queue.size() == 0) {
143 m_notEmptyCondition.wait(&m_mutex);
145 retVal = m_queue.front();
148 m_notFullCondition.wakeOne();
157 QMutexLocker locker(&m_mutex);
158 return m_queue.size();
OverflowMode
Overflow behavior modes.
Definition dataqueue.h:51
@ OverflowModeWait
Wait for space to be free.
Definition dataqueue.h:54
@ OverflowModeDiscardNewest
Discard newest items.
Definition dataqueue.h:53
@ OverflowModeDiscardOldest
Discard oldest items.
Definition dataqueue.h:52
DataQueue(int maxSize, OverflowMode mode)
Definition dataqueue.h:97
T pop()
Definition dataqueue.h:138
int count() const
Returns the number of items in the queue.
Definition dataqueue.h:155
virtual ~DataQueue()
Destructs a DataQueue.
Definition dataqueue.h:107
void push(const T &item)
Definition dataqueue.h:111