// RingBuffer.h #ifndef RINGBUFFER_H #define RINGBUFFER_H #include #include #include #include #include #include #include class RingBuffer { public: explicit RingBuffer(size_t size); bool push(const uint8_t* data, size_t size); bool pop(uint8_t* outBuffer, size_t& size); bool empty() const; bool full() const; private: std::vector buffer; size_t head; size_t tail; size_t capacity; mutable std::mutex mtx; std::condition_variable notEmpty; std::condition_variable notFull; bool isFull; }; #endif // RINGBUFFER_H