MarlinMT  0.1.0
marlinmt::concurrency::QueueElement< IN, OUT > Class Template Reference

QueueElement class A template queue element used in the thread pool. More...

#include <QueueElement.h>

Public Member Functions

 QueueElement ()=default
 
 QueueElement (const QueueElement< IN, OUT > &)=delete
 
QueueElementoperator= (const QueueElement< IN, OUT > &)=delete
 
 QueueElement (IN &&input)
 Constructor with input data. More...
 
 QueueElement (QueueElement< IN, OUT > &&rhs)
 Move constructor. More...
 
QueueElementoperator= (QueueElement< IN, OUT > &&rhs)
 Move assignement operator. More...
 
std::shared_ptr< std::promise< OUT > > promise () const
 Get the output promise. More...
 
void setValue (OUT &&output)
 Set the value to be retrieved in the future variable. More...
 
IN takeInput ()
 Take the input data. More...
 

Private Attributes

std::shared_ptr< std::promise< OUT > > _promise {std::make_shared<std::promise<OUT>>()}
 < The promise for getting the output data More...
 
IN _input {}
 

Detailed Description

template<typename IN, typename OUT>
class marlinmt::concurrency::QueueElement< IN, OUT >

QueueElement class A template queue element used in the thread pool.

The IN type represent the actual data type pushed by the user in the thread pool queue and the OUT type the expected output stored in the future object returned by calling push()

Definition at line 20 of file QueueElement.h.

Constructor & Destructor Documentation

◆ QueueElement() [1/4]

template<typename IN, typename OUT>
marlinmt::concurrency::QueueElement< IN, OUT >::QueueElement ( )
default

◆ QueueElement() [2/4]

template<typename IN, typename OUT>
marlinmt::concurrency::QueueElement< IN, OUT >::QueueElement ( const QueueElement< IN, OUT > &  )
delete

◆ QueueElement() [3/4]

template<typename IN, typename OUT>
marlinmt::concurrency::QueueElement< IN, OUT >::QueueElement ( IN &&  input)
inline

Constructor with input data.

Parameters
inputuser input data

Definition at line 32 of file QueueElement.h.

◆ QueueElement() [4/4]

template<typename IN, typename OUT>
marlinmt::concurrency::QueueElement< IN, OUT >::QueueElement ( QueueElement< IN, OUT > &&  rhs)
inline

Move constructor.

Definition at line 40 of file QueueElement.h.

Member Function Documentation

◆ operator=() [1/2]

template<typename IN, typename OUT>
QueueElement& marlinmt::concurrency::QueueElement< IN, OUT >::operator= ( const QueueElement< IN, OUT > &  )
delete

◆ operator=() [2/2]

template<typename IN, typename OUT>
QueueElement& marlinmt::concurrency::QueueElement< IN, OUT >::operator= ( QueueElement< IN, OUT > &&  rhs)
inline

◆ promise()

template<typename IN, typename OUT>
std::shared_ptr<std::promise<OUT> > marlinmt::concurrency::QueueElement< IN, OUT >::promise ( ) const
inline

◆ setValue()

template<typename IN, typename OUT>
void marlinmt::concurrency::QueueElement< IN, OUT >::setValue ( OUT &&  output)
inline

Set the value to be retrieved in the future variable.

Parameters
outputthe output data to retrieve in the future object

Definition at line 65 of file QueueElement.h.

References marlinmt::concurrency::QueueElement< IN, OUT >::_promise.

Referenced by marlinmt::concurrency::WorkerBase< PEPScheduler::InputType, PEPScheduler::OutputType >::processElement().

◆ takeInput()

template<typename IN, typename OUT>
IN marlinmt::concurrency::QueueElement< IN, OUT >::takeInput ( )
inline

Take the input data.

Note that this moves the input data and thus invalidate the stored input data of the queue element

Definition at line 73 of file QueueElement.h.

References marlinmt::concurrency::QueueElement< IN, OUT >::_input.

Referenced by marlinmt::concurrency::WorkerBase< PEPScheduler::InputType, PEPScheduler::OutputType >::processElement().

Member Data Documentation

◆ _input

◆ _promise


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