5 #include "Threading/LockGuard/LockGuard.h"
7 #include "Core/Global.h"
8 #include "Core/Exceptions.h"
14 #define SafeQueueLockGuard(x) RecursiveLockGuard(x.mutex())
20 #define SafeQueueLock(x) x.mutex().lock()
26 #define SafeQueueUnlock(x) x.mutex().unlock()
109 return this->m_oMutex;
115 return this->m_aQueue.size();
121 return this->m_aQueue.empty();
128 RecursiveLockGuard(this->m_oMutex);
129 this->m_aQueue.push(i_tValue);
135 RecursiveLockGuard(this->m_oMutex);
136 this->m_aQueue.push(std::move(i_tValue));
144 RecursiveLockGuard(this->m_oMutex);
146 T tValue = this->
front(i_fMove);
156 T
front(
const bool i_fMove =
false) {
157 RecursiveLockGuard(this->m_oMutex);
160 throw NoEntryFoundException;
163 return (i_fMove ? std::move(this->m_aQueue.front()) : this->m_aQueue.front());
168 RecursiveLockGuard(this->m_oMutex);
171 throw NoEntryFoundException;
174 this->m_aQueue.pop();
179 RecursiveLockGuard(this->m_oMutex);
185 }
catch (
const std::range_error &) {}
191 std::queue<T> m_aQueue;
This file contains a series of type definitions for the codebase.
A class for handling recursive mutexes.
Definition: Mutex.h:47
Definition: SafeQueue.h:104
void enqueue(T &&i_tValue)
Enqueues an rvalue reference to an element into the safe queue.
Definition: SafeQueue.h:134
bool isEmpty() const
Checks if the safe queue is empty.
Definition: SafeQueue.h:120
const CMutex & mutex() const
Returns a const reference to the mutex associated with the safe queue.
Definition: SafeQueue.h:108
void pop()
Removes the front element from the safe queue.
Definition: SafeQueue.h:167
void clear()
Removes all elements from the safe queue.
Definition: SafeQueue.h:178
T front(const bool i_fMove=false)
Returns a reference to the front element of the safe queue without removing it.
Definition: SafeQueue.h:156
T dequeue(const bool i_fMove=true)
Dequeues and returns an element from the safe queue.
Definition: SafeQueue.h:143
void enqueue(const T &i_tValue)
Enqueues an element into the safe queue.
Definition: SafeQueue.h:127
size_t size() const
Returns the number of elements in the safe queue.
Definition: SafeQueue.h:114
The namespace encapsulating threading related classes and functions in the Devel framework.