1#ifndef IOMANAGER_INCLUDE_IOMANAGER_FOLLYQUEUE_HPP_
2#define IOMANAGER_INCLUDE_IOMANAGER_FOLLYQUEUE_HPP_
20#include "folly/concurrency/DynamicBoundedQueue.h"
28template<
class T,
template<
typename,
bool>
class FollyQueueType>
35 explicit FollyQueue(
const std::string& name,
size_t capacity)
49 if (!
m_queue.try_dequeue_for(val, dur)) {
50 throw QueueTimeoutExpired(
51 ERS_HERE, this->
get_name(),
"pop", std::chrono::duration_cast<std::chrono::milliseconds>(dur).count());
56 if (!
m_queue.try_dequeue_for(val, dur)) {
66 if (!
m_queue.try_enqueue_for(std::move(t), dur)) {
67 throw QueueTimeoutExpired(
68 ERS_HERE, this->
get_name(),
"push", std::chrono::duration_cast<std::chrono::milliseconds>(dur).count());
73 if (!
m_queue.try_enqueue_for(std::move(t), dur)) {
75 ERS_HERE, this->
get_name(),
"push", std::chrono::duration_cast<std::chrono::milliseconds>(dur).count()));
void pop(value_t &val, const duration_t &dur) override
Pop the first value off of the queue.
bool try_pop(value_t &val, const duration_t &dur) override
typename Queue< T >::duration_t duration_t
FollyQueueType< T, true > m_queue
bool can_pop() const noexcept override
Determine whether the Queue may be popped from.
FollyQueue(const FollyQueue &)=delete
bool can_push() const noexcept override
Determine whether the Queue may be pushed onto.
bool try_push(value_t &&t, const duration_t &dur) override
size_t get_num_elements() const noexcept override
void push(value_t &&t, const duration_t &dur) override
Push a value onto the Queue.
FollyQueue & operator=(FollyQueue &&)=delete
FollyQueue(const std::string &name, size_t capacity)
FollyQueue(FollyQueue &&)=delete
FollyQueue & operator=(const FollyQueue &)=delete
size_t get_capacity() const noexcept override
Get the capacity (max size) of the queue.
Implementations of the Queue class are responsible for relaying data between DAQModules within a DAQ ...
std::chrono::milliseconds duration_t
Base duration type for timeouts.
const std::string & get_name() const final
Get the name of this NamedObejct.
void error(const Issue &issue)