DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::iomanager::QueueSenderModel< Datatype > Class Template Reference

#include <QueueSenderModel.hpp>

Inheritance diagram for dunedaq::iomanager::QueueSenderModel< Datatype >:
[legend]
Collaboration diagram for dunedaq::iomanager::QueueSenderModel< Datatype >:
[legend]

Public Member Functions

 QueueSenderModel (ConnectionId const &request)
 
 QueueSenderModel (QueueSenderModel &&other)
 
void send (Datatype &&data, Sender::timeout_t timeout) override
 
bool try_send (Datatype &&data, Sender::timeout_t timeout) override
 
void send_with_topic (Datatype &&data, Sender::timeout_t timeout, std::string) override
 
bool is_ready_for_sending (Sender::timeout_t timeout) override
 
- Public Member Functions inherited from dunedaq::iomanager::SenderConcept< Datatype >
 SenderConcept (ConnectionId const &conn_id)
 
- Public Member Functions inherited from dunedaq::iomanager::Sender
 Sender (ConnectionId const &this_conn)
 
virtual ~Sender ()=default
 
ConnectionId id () const
 
- 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.
 

Private Attributes

std::shared_ptr< Queue< Datatype > > m_queue
 

Additional Inherited Members

- Public Types inherited from dunedaq::iomanager::Sender
using timeout_t = std::chrono::milliseconds
 
- Static Public Attributes inherited from dunedaq::iomanager::Sender
static constexpr timeout_t s_block = timeout_t::max()
 
static constexpr timeout_t s_no_block = timeout_t::zero()
 
- Protected Attributes inherited from dunedaq::iomanager::Sender
ConnectionId m_conn
 

Detailed Description

template<typename Datatype>
class dunedaq::iomanager::QueueSenderModel< Datatype >

Definition at line 21 of file QueueSenderModel.hpp.

Constructor & Destructor Documentation

◆ QueueSenderModel() [1/2]

template<typename Datatype >
dunedaq::iomanager::QueueSenderModel< Datatype >::QueueSenderModel ( ConnectionId const & request)
inlineexplicit

Definition at line 65 of file QueueSenderModel.hxx.

67{
68 TLOG("QueueSenderModel") << "QueueSenderModel created with DT! Addr: " << static_cast<void*>(this);
69 m_queue = QueueRegistry::get().get_queue<Datatype>(request.uid);
70 TLOG("QueueSenderModel") << "QueueSenderModel m_queue=" << static_cast<void*>(m_queue.get());
71 // get queue ref from queueregistry based on conn_id
72}
static QueueRegistry & get()
Get a handle to the QueueRegistry.
std::shared_ptr< Queue< T > > get_queue(const std::string &name)
Get a handle to a Queue.
std::shared_ptr< Queue< Datatype > > m_queue
SenderConcept(ConnectionId const &conn_id)
Definition Sender.hpp:46
#define TLOG(...)
Definition macro.hpp:22

◆ QueueSenderModel() [2/2]

template<typename Datatype >
dunedaq::iomanager::QueueSenderModel< Datatype >::QueueSenderModel ( QueueSenderModel< Datatype > && other)
inline

Definition at line 58 of file QueueSenderModel.hxx.

59 : SenderConcept<Datatype>(other.m_conn.uid)
60 , m_queue(std::move(other.m_queue))
61{
62}

Member Function Documentation

◆ is_ready_for_sending()

template<typename Datatype >
bool dunedaq::iomanager::QueueSenderModel< Datatype >::is_ready_for_sending ( Sender::timeout_t timeout)
inlineoverridevirtual

Implements dunedaq::iomanager::SenderConcept< Datatype >.

Definition at line 51 of file QueueSenderModel.hxx.

52{
53 // Queues are always ready
54 return true;
55}

◆ send()

template<typename Datatype >
void dunedaq::iomanager::QueueSenderModel< Datatype >::send ( Datatype && data,
Sender::timeout_t timeout )
inlineoverridevirtual

Implements dunedaq::iomanager::SenderConcept< Datatype >.

Definition at line 37 of file QueueSenderModel.hxx.

38{
39 if (m_queue == nullptr)
40 throw ConnectionInstanceNotFound(ERS_HERE, this->id().uid);
41
42 try {
43 m_queue->push(std::move(data), timeout);
44 } catch (QueueTimeoutExpired& ex) {
45 throw TimeoutExpired(ERS_HERE, this->id().uid, "push", timeout.count(), ex);
46 }
47}
#define ERS_HERE

◆ send_with_topic()

template<typename Datatype >
void dunedaq::iomanager::QueueSenderModel< Datatype >::send_with_topic ( Datatype && data,
Sender::timeout_t timeout,
std::string  )
inlineoverridevirtual

Implements dunedaq::iomanager::SenderConcept< Datatype >.

Definition at line 17 of file QueueSenderModel.hxx.

18{
19 // Topics are not used for Queues
20 send(std::move(data), timeout);
21}
void send(Datatype &&data, Sender::timeout_t timeout) override

◆ try_send()

template<typename Datatype >
bool dunedaq::iomanager::QueueSenderModel< Datatype >::try_send ( Datatype && data,
Sender::timeout_t timeout )
inlineoverridevirtual

Implements dunedaq::iomanager::SenderConcept< Datatype >.

Definition at line 25 of file QueueSenderModel.hxx.

26{
27 if (m_queue == nullptr) {
28 ers::error(ConnectionInstanceNotFound(ERS_HERE, this->id().uid));
29 return false;
30 }
31
32 return m_queue->try_push(std::move(data), timeout);
33}
void error(const Issue &issue)
Definition ers.hpp:81

Member Data Documentation

◆ m_queue

template<typename Datatype >
std::shared_ptr<Queue<Datatype> > dunedaq::iomanager::QueueSenderModel< Datatype >::m_queue
private

Definition at line 37 of file QueueSenderModel.hpp.


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