28 lines
532 B
C++
28 lines
532 B
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
#include <mutex>
|
|
#include <condition_variable>
|
|
#include <queue>
|
|
|
|
#include "fragment_dataformat.h"
|
|
|
|
|
|
|
|
class ControlledQueue {
|
|
public:
|
|
ControlledQueue(uint32_t maxSize, int timeoutMicroseconds);
|
|
|
|
void put(Fragment fragment);
|
|
Fragment get();
|
|
bool empty() { return m_queue.empty(); }
|
|
|
|
private:
|
|
std::mutex m_mtx;
|
|
std::condition_variable m_cv;
|
|
uint32_t m_maxSize;
|
|
std::queue<Fragment> m_queue;
|
|
int m_timeoutMicroseconds;
|
|
|
|
}; |