|
CIRCT 24.0.0git
|
Shared queue/promise helper for polling-style read APIs. More...
#include <Ports.h>


Public Member Functions | |
| PollingBuffer (uint64_t maxQueued) | |
| uint64_t | getMaxQueued () |
| Return the current bounded queue size. 0 means unbounded. | |
| void | setMaxQueued (uint64_t maxMsgs) |
| Update the bounded queue size. 0 means unbounded. | |
| bool | enqueue (BufferedT &value) |
| Try to deliver or enqueue a produced value. | |
| std::future< BufferedT > | readAsync () |
| Read the next value asynchronously. | |
Private Attributes | |
| std::mutex | mutex |
| std::queue< BufferedT > | dataQueue |
| uint64_t | maxQueued |
| std::queue< std::promise< BufferedT > > | promiseQueue |
Shared queue/promise helper for polling-style read APIs.
Producers either fulfill the oldest waiting reader immediately or enqueue the value for a later readAsync(). Consumers either receive buffered data immediately or install a promise which is fulfilled by the next enqueue.
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
|
private |
|
private |
|
private |