SimpleEventBuilder/ControlledQueue.h

34 lines
888 B
C++

#pragma once
#include <cstdint>
#include <mutex>
#include <condition_variable>
#include <queue>
class ControlledQueue {
public:
/*
Default constructo added for default initialization in std::array. If used, it's necessary to call the init function afterwards.
*/
ControlledQueue() {;}
ControlledQueue(uint32_t maxSize, int timeoutMicroseconds);
void init(uint32_t maxSize, int timeoutMicroseconds);
void put(uint32_t word);
uint32_t get();
// Simple wrapper to check queue size
int size() { return m_queue.size(); }
// Simple wrapper to see wether the queue is empty
bool empty() { return m_queue.empty(); }
private:
std::mutex m_mtx;
std::condition_variable m_cv;
uint32_t m_maxSize;
std::queue<uint32_t> m_queue;
int m_timeoutMicroseconds;
};