13#include <readerwriterqueue.h>
14#include <concurrentqueue.h>
54 template<Type QueueType,
typename T>
55 requires std::is_copy_constructible_v<T> &&
56 std::is_move_constructible_v<T> &&
57 std::is_default_constructible_v<T>
63 explicit FIFO(
size_t maxSize) : m_queue(maxSize) {
71 [[nodiscard]] std::optional<T>
tryPop() noexcept {
73 const auto res = m_queue.try_dequeue(temp);
84 [[maybe_unused]]
const auto res = m_queue.try_enqueue(std::move(x));
93 [[maybe_unused]] T curr;
94 res = m_queue.try_dequeue(curr);
99 using queue_t = std::conditional_t<QueueType == Type::SPSC, moodycamel::ReaderWriterQueue<T>, moodycamel::ConcurrentQueue<T>>;
A thread-safe, realtime-safe fifo.
Definition marvin_FIFO.h:58
void emptyQueue() noexcept
Definition marvin_FIFO.h:90
void tryPush(T &&x) noexcept
Definition marvin_FIFO.h:83
std::optional< T > tryPop() noexcept
Definition marvin_FIFO.h:71
FIFO(size_t maxSize)
Definition marvin_FIFO.h:63
First in, first out queues.
Definition marvin_FIFO.h:17
Type
Represents a FIFO's configuration.
Definition marvin_FIFO.h:21
FIFO< Type::MPMC, T > MPMC
Definition marvin_FIFO.h:107
FIFO< Type::SPSC, T > SPSC
Definition marvin_FIFO.h:104