fesa-core
7.0.0
|
The scheduler class contains the real time behavior of the class. It waits for events and then executes the real time action related to them. More...
#include <RTScheduler.h>
Public Member Functions | |
RTScheduler (const std::string &name, int32_t eventQueueSize, EventDiscardPolicy::EventDiscardPolicy eventDiscardPolicy, bool errorOnEventDiscard, const ThreadConfigurer::SchedulingConfig &threadSchedulingConfig) | |
virtual | ~RTScheduler () |
virtual void | post (uint32_t logicalEventID, boost::shared_ptr< RTEvent > &concreteEvent, AtomicSizeTPtr &nSchedulers) |
This method inserts the event passed by argument into the queue of the scheduler in order to process it. More... | |
void | updateAcquisitionTimestamp (timestamp_ns timestamp, AtomicSizeTPtr &nSchedulers) |
virtual void | addRTAction (uint32_t logicalEventID, AbstractRTAction *rtAction) |
This method links the RT action and the event passed by arguments. More... | |
virtual const std::string & | getName () const |
return the name of this RTScheduler | |
virtual void | printState (std::ostream &stream, double elapsedTime) |
Print some information about the actual state of the RTScheduler. More... | |
virtual void | printConfig (FesaStream &fesaStream) |
virtual void | cancel () |
This call provokes the stop of the scheduler and an exit on the current thread. | |
Public Member Functions inherited from fesa::Thread | |
virtual | ~Thread () |
Destructor. | |
void | setDetachState (int32_t state) |
Modify the detach state of the thread. More... | |
void | start (bool blockingMode, const std::string &threadName, bool permanent=true) |
virtual void | stop () |
Stop the thread. | |
int | join (void **status) |
bool | isRunning () const |
Check if the thread is running. More... | |
pthread_t | getID () const |
Get the process ID. More... | |
int32_t | getPriority () const |
Get the priority of the thread. More... | |
cpu_set_t | getAffinity () const |
Get the affinity of the thread. | |
void | setPriority (int32_t priority) |
Set the priority of the thread. More... | |
void | setAffinity (cpu_set_t affinity) |
Set the affinity of the thread. More... | |
ThreadType | getThreadType () const |
Public Member Functions inherited from fesa::HasMetrics | |
HasMetrics (const std::string &componentName) | |
Protected Member Functions | |
RTScheduler () | |
Empty Constructor, used for unit-testing (Mocking of this class) | |
Protected Member Functions inherited from fesa::HasMetrics | |
template<typename T > | |
void | registerMetric (const std::string &name, T &value) |
template<typename T > | |
void | registerMetric (const std::string &name, boost::atomic< T > &value) |
Additional Inherited Members | |
Static Public Member Functions inherited from fesa::Thread | |
static void | AdjustProcessScheduling () |
The process priority can only be adjusted in the main thread. It needs to be adjusted to the maximal thread priority since it sets the limit of the thread priorities of this process. More... | |
static std::string | getThreadName (pthread_t threadId) |
Get the name of the thread by its id. More... | |
static std::string | getCurrentThreadName () |
static void | registerThreadIdName (pthread_t threadId, const std::string &threadName) |
Associate a thread id with a name. More... | |
static void | registerThreadId (pthread_t threadId, Thread *thread) |
Associate a thread id with a name. More... | |
static Thread * | current () |
Returns the Thread object associated with the current thread. | |
static Thread * | getById (pthread_t id) |
Returns the Thread object associated with the given id. Throws FesaException if the id is unknown. More... | |
static const std::set< const Thread * > | getThreads () |
Protected Attributes inherited from fesa::Thread | |
bool | isRunning_ |
true if the thread is running | |
bool | hasFinished_ |
true if the thread has finished. | |
bool | joinHasFinished_ |
if true, a call to pthread_join has completed and a further pthread_cancel / pthread_join call is unsafe | |
bool | permanent_ |
pthread_t | tid_ |
Id of this thread. | |
The scheduler class contains the real time behavior of the class. It waits for events and then executes the real time action related to them.
fesa::RTScheduler::RTScheduler | ( | const std::string & | name, |
int32_t | eventQueueSize, | ||
EventDiscardPolicy::EventDiscardPolicy | eventDiscardPolicy, | ||
bool | errorOnEventDiscard, | ||
const ThreadConfigurer::SchedulingConfig & | threadSchedulingConfig | ||
) |
name | name of the scheduler |
eventQueueSize | event queue size |
eventDiscardPolicy | event discard policy to use |
errorOnEventDiscard | if true, an error is logged when an event is discarded |
prio | the priority of this scheduler |
|
virtual |
Destructor
|
virtual |
This method links the RT action and the event passed by arguments.
logicalEventID | ID of the logical-event which fires the action |
rtAction | to be executed when the event arrives |
|
virtual |
This method inserts the event passed by argument into the queue of the scheduler in order to process it.
logicalEventID | ID of the logical event which is associated to the passed concrete event |
concreteEvent | concrete event which should be processed by this scheduler |
nSchedulers | number of schedulers scheduling this event |
|
virtual |
fesaStream |
|
virtual |
Print some information about the actual state of the RTScheduler.
fesaStream | |
elapsedTime |
void fesa::RTScheduler::updateAcquisitionTimestamp | ( | timestamp_ns | timestamp, |
AtomicSizeTPtr & | nSchedulers | ||
) |
Updates the latest acquisition timestamp if nSchedulers reaches 0 after being decremented.
nSchedulers | number of schedulers still scheduling the current event |
timestamp | value of the new acquisition timestamp |