#pragma once #include #include #include #include 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 m_queue; int m_timeoutMicroseconds; };