MarlinMT
0.1.0
|
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 | |
QueueElement & | operator= (const QueueElement< IN, OUT > &)=delete |
QueueElement (IN &&input) | |
Constructor with input data. More... | |
QueueElement (QueueElement< IN, OUT > &&rhs) | |
Move constructor. More... | |
QueueElement & | operator= (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 {} |
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.
|
default |
|
delete |
|
inline |
Constructor with input data.
input | user input data |
Definition at line 32 of file QueueElement.h.
|
inline |
Move constructor.
Definition at line 40 of file QueueElement.h.
|
delete |
|
inline |
Move assignement operator.
Definition at line 47 of file QueueElement.h.
References marlinmt::concurrency::QueueElement< IN, OUT >::_input, and marlinmt::concurrency::QueueElement< IN, OUT >::_promise.
|
inline |
Get the output promise.
Definition at line 56 of file QueueElement.h.
References marlinmt::concurrency::QueueElement< IN, OUT >::_promise.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::push().
|
inline |
Set the value to be retrieved in the future variable.
output | the 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().
|
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().
|
private |
Definition at line 81 of file QueueElement.h.
Referenced by marlinmt::concurrency::QueueElement< IN, OUT >::operator=(), marlinmt::concurrency::QueueElement< IN, void >::operator=(), marlinmt::concurrency::QueueElement< IN, OUT >::takeInput(), and marlinmt::concurrency::QueueElement< IN, void >::takeInput().
|
private |
< The promise for getting the output data
The input data provided by the user
Definition at line 79 of file QueueElement.h.
Referenced by marlinmt::concurrency::QueueElement< IN, OUT >::operator=(), marlinmt::concurrency::QueueElement< void, OUT >::operator=(), marlinmt::concurrency::QueueElement< IN, void >::operator=(), marlinmt::concurrency::QueueElement< void, void >::operator=(), marlinmt::concurrency::QueueElement< IN, OUT >::promise(), marlinmt::concurrency::QueueElement< void, OUT >::promise(), marlinmt::concurrency::QueueElement< IN, void >::promise(), marlinmt::concurrency::QueueElement< void, void >::promise(), marlinmt::concurrency::QueueElement< IN, OUT >::setValue(), marlinmt::concurrency::QueueElement< void, OUT >::setValue(), marlinmt::concurrency::QueueElement< IN, void >::setValue(), and marlinmt::concurrency::QueueElement< void, void >::setValue().