DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::iomanager::FollyQueue< T, FollyQueueType > Class Template Reference

#include <FollyQueue.hpp>

Inheritance diagram for dunedaq::iomanager::FollyQueue< T, FollyQueueType >:
[legend]
Collaboration diagram for dunedaq::iomanager::FollyQueue< T, FollyQueueType >:
[legend]

Public Types

using value_t = T
 
using duration_t = typename Queue<T>::duration_t
 
- Public Types inherited from dunedaq::iomanager::Queue< T >
using value_t = T
 Type stored in the Queue.
 
using duration_t = std::chrono::milliseconds
 Base duration type for timeouts.
 
- Public Types inherited from dunedaq::opmonlib::MonitorableObject
using NodePtr = std::weak_ptr<MonitorableObject>
 
using NewNodePtr = std::shared_ptr<MonitorableObject>
 
using ElementId = std::string
 

Public Member Functions

 FollyQueue (const std::string &name, size_t capacity)
 
size_t get_capacity () const noexcept override
 Get the capacity (max size) of the queue.
 
size_t get_num_elements () const noexcept override
 
bool can_pop () const noexcept override
 Determine whether the Queue may be popped from.
 
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
 
bool can_push () const noexcept override
 Determine whether the Queue may be pushed onto.
 
void push (value_t &&t, const duration_t &dur) override
 Push a value onto the Queue.
 
bool try_push (value_t &&t, const duration_t &dur) override
 
 FollyQueue (const FollyQueue &)=delete
 
FollyQueueoperator= (const FollyQueue &)=delete
 
 FollyQueue (FollyQueue &&)=delete
 
FollyQueueoperator= (FollyQueue &&)=delete
 
- Public Member Functions inherited from dunedaq::iomanager::Queue< T >
 Queue (const std::string &name)
 Queue Constructor.
 
- Public Member Functions inherited from dunedaq::iomanager::QueueBase
 QueueBase (const std::string &name)
 QueueBase Constructor.
 
- Public Member Functions inherited from dunedaq::utilities::NamedObject
 NamedObject (const std::string &name)
 NamedObject Constructor.
 
 NamedObject (NamedObject const &)=delete
 NamedObject is not copy-constructible.
 
 NamedObject (NamedObject &&)=default
 NamedObject is move-constructible.
 
NamedObjectoperator= (NamedObject const &)=delete
 NamedObject is not copy-assignable.
 
NamedObjectoperator= (NamedObject &&)=default
 NamedObject is move-assignable.
 
virtual ~NamedObject ()=default
 Default virtual destructor.
 
const std::string & get_name () const final
 Get the name of this NamedObejct.
 
- Public Member Functions inherited from dunedaq::utilities::Named
 Named ()=default
 Named Constructor.
 
 Named (Named const &)=delete
 Named is not copy-constructible.
 
 Named (Named &&)=default
 Named is move-constructible.
 
Namedoperator= (Named const &)=delete
 Named is not copy-assignable.
 
Namedoperator= (Named &&)=default
 Named is move-assignable.
 
virtual ~Named ()=default
 Default virtual destructor.
 
- Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject (const MonitorableObject &)=delete
 
MonitorableObjectoperator= (const MonitorableObject &)=delete
 
 MonitorableObject (MonitorableObject &&)=delete
 
MonitorableObjectoperator= (MonitorableObject &&)=delete
 
virtual ~MonitorableObject ()=default
 
auto get_opmon_id () const noexcept
 
auto get_opmon_level () const noexcept
 

Private Attributes

FollyQueueType< T, true > m_queue
 
size_t m_capacity
 

Additional Inherited Members

- Static Public Member Functions inherited from dunedaq::opmonlib::MonitorableObject
static bool publishable_metric (OpMonLevel entry, OpMonLevel system) noexcept
 
- Protected Member Functions inherited from dunedaq::iomanager::QueueBase
void generate_opmon_data () override
 Method to retrieve information (occupancy) from queues.
 
- Protected Member Functions inherited from dunedaq::opmonlib::MonitorableObject
 MonitorableObject ()=default
 
void register_node (ElementId name, NewNodePtr)
 
void publish (google::protobuf::Message &&, CustomOrigin &&co={}, OpMonLevel l=to_level(EntryOpMonLevel::kDefault)) const noexcept
 

Detailed Description

template<class T, template< typename, bool > class FollyQueueType>
class dunedaq::iomanager::FollyQueue< T, FollyQueueType >

Definition at line 29 of file FollyQueue.hpp.

Member Typedef Documentation

◆ duration_t

template<class T , template< typename, bool > class FollyQueueType>
using dunedaq::iomanager::FollyQueue< T, FollyQueueType >::duration_t = typename Queue<T>::duration_t

Definition at line 33 of file FollyQueue.hpp.

◆ value_t

template<class T , template< typename, bool > class FollyQueueType>
using dunedaq::iomanager::FollyQueue< T, FollyQueueType >::value_t = T

Definition at line 32 of file FollyQueue.hpp.

Constructor & Destructor Documentation

◆ FollyQueue() [1/3]

template<class T , template< typename, bool > class FollyQueueType>
dunedaq::iomanager::FollyQueue< T, FollyQueueType >::FollyQueue ( const std::string & name,
size_t capacity )
inlineexplicit

Definition at line 35 of file FollyQueue.hpp.

36 : Queue<T>(name)
37 , m_queue(capacity)
38 , m_capacity(capacity)
39 {}
FollyQueueType< T, true > m_queue
Queue(const std::string &name)
Queue Constructor.
Definition Queue.hpp:49

◆ FollyQueue() [2/3]

template<class T , template< typename, bool > class FollyQueueType>
dunedaq::iomanager::FollyQueue< T, FollyQueueType >::FollyQueue ( const FollyQueue< T, FollyQueueType > & )
delete

◆ FollyQueue() [3/3]

template<class T , template< typename, bool > class FollyQueueType>
dunedaq::iomanager::FollyQueue< T, FollyQueueType >::FollyQueue ( FollyQueue< T, FollyQueueType > && )
delete

Member Function Documentation

◆ can_pop()

template<class T , template< typename, bool > class FollyQueueType>
bool dunedaq::iomanager::FollyQueue< T, FollyQueueType >::can_pop ( ) const
inlineoverridevirtualnoexcept

Determine whether the Queue may be popped from.

Returns
True if the queue is not empty, false if it is

Reimplemented from dunedaq::iomanager::Queue< T >.

Definition at line 45 of file FollyQueue.hpp.

45{ return !m_queue.empty(); }

◆ can_push()

template<class T , template< typename, bool > class FollyQueueType>
bool dunedaq::iomanager::FollyQueue< T, FollyQueueType >::can_push ( ) const
inlineoverridevirtualnoexcept

Determine whether the Queue may be pushed onto.

Returns
True if the queue is not full, false if it is

Reimplemented from dunedaq::iomanager::Queue< T >.

Definition at line 62 of file FollyQueue.hpp.

62{ return m_queue.size() < this->get_capacity(); }
size_t get_capacity() const noexcept override
Get the capacity (max size) of the queue.

◆ get_capacity()

template<class T , template< typename, bool > class FollyQueueType>
size_t dunedaq::iomanager::FollyQueue< T, FollyQueueType >::get_capacity ( ) const
inlineoverridevirtualnoexcept

Get the capacity (max size) of the queue.

Returns
size_t capacity

Implements dunedaq::iomanager::QueueBase.

Definition at line 41 of file FollyQueue.hpp.

41{ return m_capacity; }

◆ get_num_elements()

template<class T , template< typename, bool > class FollyQueueType>
size_t dunedaq::iomanager::FollyQueue< T, FollyQueueType >::get_num_elements ( ) const
inlineoverridevirtualnoexcept

Implements dunedaq::iomanager::QueueBase.

Definition at line 43 of file FollyQueue.hpp.

43{ return m_queue.size(); }

◆ operator=() [1/2]

template<class T , template< typename, bool > class FollyQueueType>
FollyQueue & dunedaq::iomanager::FollyQueue< T, FollyQueueType >::operator= ( const FollyQueue< T, FollyQueueType > & )
delete

◆ operator=() [2/2]

template<class T , template< typename, bool > class FollyQueueType>
FollyQueue & dunedaq::iomanager::FollyQueue< T, FollyQueueType >::operator= ( FollyQueue< T, FollyQueueType > && )
delete

◆ pop()

template<class T , template< typename, bool > class FollyQueueType>
void dunedaq::iomanager::FollyQueue< T, FollyQueueType >::pop ( value_t & val,
const duration_t & timeout )
inlineoverridevirtual

Pop the first value off of the queue.

Parameters
valReference to the value that is popped from the queue
timeoutTimeout for the pop operation

This is a pure virtual function If pop takes longer than the timeout, implementations should throw an exception

Implements dunedaq::iomanager::Queue< T >.

Definition at line 47 of file FollyQueue.hpp.

48 {
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());
52 }
53 }
#define ERS_HERE
const std::string & get_name() const final
Get the name of this NamedObejct.

◆ push()

template<class T , template< typename, bool > class FollyQueueType>
void dunedaq::iomanager::FollyQueue< T, FollyQueueType >::push ( value_t && val,
const duration_t & timeout )
inlineoverridevirtual

Push a value onto the Queue.

Parameters
valValue to push (rvalue)
timeoutTimeout for the push operation.

This is a pure virtual function. If push takes longer than the timeout, implementations should throw an exception.

Implements dunedaq::iomanager::Queue< T >.

Definition at line 64 of file FollyQueue.hpp.

65 {
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());
69 }
70 }

◆ try_pop()

template<class T , template< typename, bool > class FollyQueueType>
bool dunedaq::iomanager::FollyQueue< T, FollyQueueType >::try_pop ( value_t & val,
const duration_t & dur )
inlineoverridevirtual

Implements dunedaq::iomanager::Queue< T >.

Definition at line 54 of file FollyQueue.hpp.

55 {
56 if (!m_queue.try_dequeue_for(val, dur)) {
57 return false;
58 }
59 return true;
60 }

◆ try_push()

template<class T , template< typename, bool > class FollyQueueType>
bool dunedaq::iomanager::FollyQueue< T, FollyQueueType >::try_push ( value_t && t,
const duration_t & dur )
inlineoverridevirtual

Implements dunedaq::iomanager::Queue< T >.

Definition at line 71 of file FollyQueue.hpp.

72 {
73 if (!m_queue.try_enqueue_for(std::move(t), dur)) {
74 ers::error(QueueTimeoutExpired(
75 ERS_HERE, this->get_name(), "push", std::chrono::duration_cast<std::chrono::milliseconds>(dur).count()));
76 return false;
77 }
78 return true;
79 }
void error(const Issue &issue)
Definition ers.hpp:81

Member Data Documentation

◆ m_capacity

template<class T , template< typename, bool > class FollyQueueType>
size_t dunedaq::iomanager::FollyQueue< T, FollyQueueType >::m_capacity
private

Definition at line 92 of file FollyQueue.hpp.

◆ m_queue

template<class T , template< typename, bool > class FollyQueueType>
FollyQueueType<T, true> dunedaq::iomanager::FollyQueue< T, FollyQueueType >::m_queue
private

Definition at line 91 of file FollyQueue.hpp.


The documentation for this class was generated from the following file: