Hedgehog  3.1.0
A library to generate hybrid pipeline workflow systems
Loading...
Searching...
No Matches
hh::core::implementor::QueueReceiver< Input > Class Template Reference

Concrete implementation of the receiver core abstraction for a type using a std::queue. More...

#include "queue_receiver.h"

Inheritance diagram for hh::core::implementor::QueueReceiver< Input >:
Inheritance graph
Collaboration diagram for hh::core::implementor::QueueReceiver< Input >:
Collaboration graph

Public Member Functions

 QueueReceiver ()
 Default constructor.
 
virtual ~QueueReceiver ()=default
 Default destructor.
 
void receive (std::shared_ptr< Input > const data) final
 Receive a data and store it in the queue.
 
std::shared_ptr< Input > getInputData () override
 Get a data from the queue.
 
size_t numberElementsReceived () const override
 Accessor to the current size of the queue.
 
size_t maxNumberElementsReceived () const override
 Accessor to the maximum queue size.
 
bool empty () const override
 Test if the queue is empty.
 
std::set< abstraction::SenderAbstraction< Input > * > const & connectedSenders () const override
 Accessor to the set of connected senders.
 
void addSender (abstraction::SenderAbstraction< Input > *const sender) override
 Add a sender to the set of connected senders.
 
void removeSender (abstraction::SenderAbstraction< Input > *const sender) override
 Remove a sender to the set of connected senders.
 
- Public Member Functions inherited from hh::core::implementor::ImplementorReceiver< Input >
 ImplementorReceiver ()
 Default constructor.
 
virtual ~ImplementorReceiver ()=default
 Default destructor.
 
std::set< abstraction::ReceiverAbstraction< Input > * > & receivers ()
 Accessor to the linked ReceiverAbstraction.
 
virtual void initialize (abstraction::ReceiverAbstraction< Input > *receiverAbstraction)
 Initialize the implementor Receiver by setting the corresponding abstraction.
 
virtual std::set< abstraction::SenderAbstraction< Input > * > const & connectedSenders () const =0
 Accessor to the connected senders.
 
virtual void addSender (abstraction::SenderAbstraction< Input > *sender)=0
 Add a SenderAbstraction.
 
virtual void removeSender (abstraction::SenderAbstraction< Input > *sender)=0
 Remove a SenderAbstraction.
 
virtual void receive (std::shared_ptr< Input > data)=0
 Receive data interface.
 
virtual std::shared_ptr< Input > getInputData ()=0
 Accessor to a received data.
 
virtual size_t numberElementsReceived () const =0
 Accessor to number of data waiting to be processed in the queue.
 
virtual size_t maxNumberElementsReceived () const =0
 Accessor to the maximum number of data waiting to be processed in the queue during the whole execution.
 
virtual bool empty () const =0
 Test if the receiver is empty or not.
 

Private Attributes

std::unique_ptr< std::queue< std::shared_ptr< Input > > > const queue_ = nullptr
 Queue storing to be processed data.
 
std::unique_ptr< std::set< abstraction::SenderAbstraction< Input > * > > const senders_ = nullptr
 List of senders attached to this receiver.
 
size_t maxSize_ = 0
 Maximum size attained by the queue.
 

Additional Inherited Members

- Protected Attributes inherited from hh::core::implementor::ImplementorReceiver< Input >
std::unique_ptr< std::set< abstraction::ReceiverAbstraction< Input > * > > abstractReceivers_ = nullptr
 Set of linked ReceiverAbstraction.
 

Detailed Description

template<class Input>
class hh::core::implementor::QueueReceiver< Input >

Concrete implementation of the receiver core abstraction for a type using a std::queue.

Template Parameters
InputInput data type

Definition at line 51 of file queue_receiver.h.

Constructor & Destructor Documentation

◆ QueueReceiver()

template<class Input >
hh::core::implementor::QueueReceiver< Input >::QueueReceiver ( )
inlineexplicit

Default constructor.

Definition at line 64 of file queue_receiver.h.

◆ ~QueueReceiver()

template<class Input >
virtual hh::core::implementor::QueueReceiver< Input >::~QueueReceiver ( )
virtualdefault

Default destructor.

Member Function Documentation

◆ addSender()

template<class Input >
void hh::core::implementor::QueueReceiver< Input >::addSender ( abstraction::SenderAbstraction< Input > *const  sender)
inlineoverridevirtual

Add a sender to the set of connected senders.

Parameters
senderSender to add

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 108 of file queue_receiver.h.

◆ connectedSenders()

template<class Input >
std::set< abstraction::SenderAbstraction< Input > * > const & hh::core::implementor::QueueReceiver< Input >::connectedSenders ( ) const
inlineoverridevirtual

Accessor to the set of connected senders.

Returns
Set of connected senders

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 102 of file queue_receiver.h.

◆ empty()

template<class Input >
bool hh::core::implementor::QueueReceiver< Input >::empty ( ) const
inlineoverridevirtual

Test if the queue is empty.

Returns
True if the queue is empty, else false

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 98 of file queue_receiver.h.

◆ getInputData()

template<class Input >
std::shared_ptr< Input > hh::core::implementor::QueueReceiver< Input >::getInputData ( )
inlineoverridevirtual

Get a data from the queue.

Attention
The queue should not be empty
Returns
The data in front of the queue

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 81 of file queue_receiver.h.

◆ maxNumberElementsReceived()

template<class Input >
size_t hh::core::implementor::QueueReceiver< Input >::maxNumberElementsReceived ( ) const
inlineoverridevirtual

Accessor to the maximum queue size.

Returns
Maximum queue size

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 94 of file queue_receiver.h.

◆ numberElementsReceived()

template<class Input >
size_t hh::core::implementor::QueueReceiver< Input >::numberElementsReceived ( ) const
inlineoverridevirtual

Accessor to the current size of the queue.

Returns
Current size of the queue

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 90 of file queue_receiver.h.

◆ receive()

template<class Input >
void hh::core::implementor::QueueReceiver< Input >::receive ( std::shared_ptr< Input > const  data)
inlinefinalvirtual

Receive a data and store it in the queue.

Parameters
dataData to store

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 73 of file queue_receiver.h.

◆ removeSender()

template<class Input >
void hh::core::implementor::QueueReceiver< Input >::removeSender ( abstraction::SenderAbstraction< Input > *const  sender)
inlineoverridevirtual

Remove a sender to the set of connected senders.

Parameters
senderSender to remove

Implements hh::core::implementor::ImplementorReceiver< Input >.

Definition at line 112 of file queue_receiver.h.

Member Data Documentation

◆ maxSize_

template<class Input >
size_t hh::core::implementor::QueueReceiver< Input >::maxSize_ = 0
private

Maximum size attained by the queue.

Definition at line 60 of file queue_receiver.h.

◆ queue_

template<class Input >
std::unique_ptr<std::queue<std::shared_ptr<Input> > > const hh::core::implementor::QueueReceiver< Input >::queue_ = nullptr
private

Queue storing to be processed data.

Definition at line 54 of file queue_receiver.h.

◆ senders_

template<class Input >
std::unique_ptr<std::set<abstraction::SenderAbstraction<Input> *> > const hh::core::implementor::QueueReceiver< Input >::senders_ = nullptr
private

List of senders attached to this receiver.

Definition at line 57 of file queue_receiver.h.