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;
|
||
|
|
||
|
};
|