22 #ifndef SIRIUS_UTILS_CONCURRENT_QUEUE_H_ 23 #define SIRIUS_UTILS_CONCURRENT_QUEUE_H_ 25 #include <condition_variable> 28 #include <system_error> 73 void Push(T&& element, std::error_code& ec);
85 T
Pop(std::error_code& ec);
138 std::mutex queue_mutex_;
139 bool is_active_{
true};
140 std::size_t max_queue_size_{10};
141 std::queue<T> queue_;
142 std::condition_variable push_cond_;
143 std::condition_variable pop_cond_;
149 #include "sirius/utils/concurrent_queue.txx" 151 #endif // SIRIUS_UTILS_CONCURRENT_QUEUE_H_ bool Empty()
Queue is empty.
Concurrent queue.
Definition: concurrent_queue.h:46
std::size_t Size()
Get queue size.
bool IsActive()
Can the queue be filled with new elements.
Definition: exception.h:27
void Push(T &&element, std::error_code &ec)
Push an element in the queue.
ConcurrentQueue & operator=(const ConcurrentQueue &)=delete
T Pop(std::error_code &ec)
Pop an element from the queue.
bool CanPop()
Elements can be popped from the queue.
void DeactivateAndClear()
Deactivate the queue and clear its content.
~ConcurrentQueue()=default
ConcurrentQueue(std::size_t max_queue_size=10)
Instanciate a concurrent queue with a maximum size.
void Activate()
Activate the queue.
void Deactivate()
Deactivate the queue.