CFEL - ASG Software Suite
2.5.0
CASS
|
The worker thread. More...
#include <worker.h>
Public Types | |
typedef std::tr1::shared_ptr< Worker > | shared_pointer |
a shared pointer of this More... | |
![]() | |
enum | status_t { running, paused, notstarted } |
enum describing the internal status of the thread More... | |
enum | control_t { _run, _quit, _pause } |
enum describing the control status of the thread More... | |
enum | exception_t { NO_EXCEPTION, INVALID_ARGUMENT_EXCEPTION, RUNTIME_ERROR_EXCEPTION, OUT_OF_RANGE_EXCEPTION, LOGIC_ERROR_EXCEPTION, STANDART_EXCEPTION, UNKNOWN_EXCEPTION } |
enum describing which exception was thrown More... | |
Public Member Functions | |
Worker (RingBuffer< CASSEvent > &rb, Ratemeter &ratemeter, QObject *parent=0) | |
constructor. More... | |
void | runthis () |
start the thread. More... | |
![]() | |
PausableThread (control_t control=_run, QObject *parent=0) | |
constructor More... | |
virtual | ~PausableThread () |
destructor More... | |
void | run () |
run the thread More... | |
void | pause (bool block=false) |
pause the thread More... | |
void | waitUntilPaused () |
waits until thread is paused More... | |
void | resume () |
resume the thread More... | |
status_t | status () const |
return the current status of the thread More... | |
bool | shouldQuit () const |
query whether this thread is told to quit More... | |
void | rethrowException () const |
rethrow the thrown exception More... | |
exception_t | exceptionThrown () const |
![]() | |
QThread (QObject *parent=0) | |
currentThread () | |
HANDLE QThread::currentThreadId() | |
exec () | |
exit (int returnCode=0) | |
finished () | |
idealThreadCount () | |
isFinished () | |
isRunning () | |
msleep (unsigned long msecs) | |
priority () | |
quit () | |
run () | |
setPriority (Priority priority) | |
setStackSize (uint stackSize) | |
setTerminationEnabled (bool enabled=true) | |
sleep (unsigned long secs) | |
stackSize () | |
start (Priority priority=InheritPriority) | |
started () | |
terminate () | |
terminated () | |
usleep (unsigned long usecs) | |
wait (unsigned long time=ULONG_MAX) | |
yieldCurrentThread () | |
Private Attributes | |
RingBuffer< CASSEvent > & | _ringbuffer |
the ringbuffer More... | |
ProcessorManager & | _process |
the processors More... | |
Ratemeter & | _ratemeter |
the ratemeter to measure the analysis rate More... | |
Additional Inherited Members | |
![]() | |
virtual void | end () |
tell the thread to quit More... | |
![]() | |
void | pausePoint () |
point where the thread will be paused More... | |
![]() | |
QMutex | _pauseMutex |
mutex to wait on until thread is paused More... | |
QWaitCondition | _pauseCondition |
wait condition to wait on until thread is resumed More... | |
QWaitCondition | _waitUntilPausedCondition |
wait condition to wait unitl thread is paused More... | |
status_t | _status |
the internal status of the thread More... | |
control_t | _control |
the internal control status of the thread More... | |
size_t | _pausecount |
a counter how many threads have pause this thread More... | |
exception_t | _exception_thrown |
flag to show that general exception was thrown More... | |
std::invalid_argument | _invarg_excep |
the invalid arguemnt exception thrown More... | |
std::runtime_error | _runt_excep |
the invalid arguemnt exception thrown More... | |
std::out_of_range | _outrange_excep |
the invalid arguemnt exception thrown More... | |
std::logic_error | _logic_excep |
the invalid arguemnt exception thrown More... | |
The worker thread.
The thread will do the following tasks in a loop:
typedef std::tr1::shared_ptr<Worker> cass::Worker::shared_pointer |
Worker::Worker | ( | RingBuffer< CASSEvent > & | rb, |
Ratemeter & | ratemeter, | ||
QObject * | parent = 0 |
||
) |
constructor.
rb | the rinbguffer we get the events from |
ratemeter | the ratemeter object to measure the rate |
parent | the qt parent of this object |
Definition at line 23 of file worker.cpp.
|
virtual |
start the thread.
While the thread has not been quitted do retrieve a cassevent from the ringbuffer, but with a timeout. If we got a new event from the ringbuffer put it into the processing chain. Then put it back to the ringbuffer for new refilling and increase the counter of the ratemeter. Before processing double check if the event has a correct id
ensure that one has retrieved a valid event and that the id is non zero number
Implements lmf::PausableThread.
Definition at line 32 of file worker.cpp.
References lmf::PausableThread::_control, _process, lmf::PausableThread::_quit, _ratemeter, _ringbuffer, lmf::PausableThread::_status, cass::Ratemeter::count(), lmf::PausableThread::pausePoint(), and lmf::PausableThread::running.
|
private |
|
private |
|
private |