cisst-saw
|
#include <mtsTaskContinuous.h>
Public Types | |
typedef mtsTask | BaseType |
![]() | |
typedef mtsComponent | BaseType |
![]() | |
typedef mtsComponent | ThisType |
Public Member Functions | |
mtsTaskContinuous (const std::string &name, unsigned int sizeStateTable=256, bool newThread=true) | |
mtsTaskContinuous (const mtsTaskContinuousConstructorArg &arg) | |
virtual | ~mtsTaskContinuous () |
void | Create (void *data=0) |
void | Start (void) |
void | Suspend (void) |
void | Kill (void) |
![]() | |
mtsTask (const std::string &name, unsigned int sizeStateTable=256) | |
virtual | ~mtsTask () |
virtual void | OnStartupException (const std::exception &excp) |
virtual void | Run (void)=0 |
virtual void | OnRunException (const std::exception &excp) |
virtual void | Configure (const std::string &CMN_UNUSED(filename)="") |
void | SetInitializationDelay (double delay) |
void | Create (void) |
double | GetAveragePeriod (void) const |
const std::string | GetDefaultStateTableName (void) const |
mtsStateTable * | GetDefaultStateTable (void) |
mtsInterfaceRequired * | AddInterfaceRequiredWithoutSystemEventHandlers (const std::string &interfaceRequiredName, mtsRequiredType required=MTS_REQUIRED) |
mtsInterfaceProvided * | AddInterfaceProvidedWithoutSystemEvents (const std::string &newInterfaceName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY, bool isProxy=false) |
virtual bool | WaitToStart (double timeout) |
virtual bool | WaitToTerminate (double timeout) |
virtual void | WaitForWakeup (void) |
virtual void | Wakeup (void) |
void | ProcessManagerCommandsIfNotActive () |
bool | CheckForOwnThread (void) const |
virtual bool | IsPeriodic (void) const |
virtual bool | IsOverranPeriod (void) const |
virtual void | ResetOverranPeriod (void) |
![]() | |
mtsComponent (const std::string &deviceName) | |
virtual | ~mtsComponent () |
const std::string & | GetName (void) const |
void | GetName (std::string &placeHolder) const |
void | SetName (const std::string &componentName) |
virtual void | Configure (const std::string &filename="") |
bool | CreateAndWait (double timeoutInSeconds) |
bool | StartAndWait (double timeoutInSeconds) |
bool | KillAndWait (double timeoutInSeconds) |
virtual void | Startup (void) |
virtual void | Cleanup (void) |
mtsInterfaceProvided * | AddInterfaceProvided (const std::string &interfaceProvidedName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY) |
CISST_DEPRECATED mtsInterfaceProvided * | AddProvidedInterface (const std::string &interfaceProvidedName) |
virtual mtsInterfaceOutput * | AddInterfaceOutput (const std::string &interfaceOutputName) |
bool | InterfaceExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const |
bool | InterfaceProvidedOrOutputExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const |
bool | InterfaceRequiredOrInputExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const |
mtsInterfaceProvided * | GetInterfaceProvided (const std::string &interfaceProvidedName) const |
mtsInterfaceOutput * | GetInterfaceOutput (const std::string &interfaceOutputName) const |
size_t | GetNumberOfInterfacesProvided (void) const |
size_t | GetNumberOfInterfacesOutput (void) const |
bool | RemoveInterfaceProvided (const std::string &interfaceProvidedName, const bool skipDisconnect=false) |
mtsInterfaceRequired * | AddInterfaceRequired (const std::string &interfaceRequiredName, mtsRequiredType isRequired=MTS_REQUIRED) |
CISST_DEPRECATED mtsInterfaceRequired * | AddRequiredInterface (const std::string &requiredInterfaceName) |
virtual mtsInterfaceInput * | AddInterfaceInput (const std::string &interfaceInputName) |
const mtsInterfaceProvided * | GetInterfaceProvidedFor (const std::string &interfaceRequiredName) |
mtsInterfaceRequired * | GetInterfaceRequired (const std::string &interfaceRequiredName) |
mtsInterfaceInput * | GetInterfaceInput (const std::string &interfaceInputName) const |
size_t | GetNumberOfInterfacesRequired (void) const |
size_t | GetNumberOfInterfacesInput (void) const |
bool | RemoveInterfaceRequired (const std::string &interfaceRequiredName, const bool skipDisconnect=false) |
const mtsManagerComponentServices * | GetManagerComponentServices (void) const |
mtsManagerComponentServices * | GetManagerComponentServices (void) |
mtsStateTable * | GetStateTable (const std::string &stateTableName) |
bool | AddStateTable (mtsStateTable *existingStateTable, bool addInterfaceProvided=true) |
void | UseSeparateLogFileDefault (bool forwardToLogger=true) |
void | UseSeparateLogFileDefaultWithDate (bool forwardToLogger=true) |
void | UseSeparateLogFile (const std::string &filename, bool forwardToLogger=true) |
cmnLogger::StreamBufType * | GetLogMultiplexer (void) const |
bool | IsRunning (void) const |
bool CISST_DEPRECATED | Running (void) const |
bool | IsStarted (void) const |
bool | IsTerminated (void) const |
bool | IsEndTask (void) const |
const mtsComponentState & | GetState (void) const |
void | GetState (mtsComponentState &state) const |
void | ToStream (std::ostream &outputStream) const |
bool | SetReplayMode (void) |
bool | SetReplayData (const std::string &stateTableName, const std::string &fileName) |
bool | SetReplayTime (const double time) |
std::vector< std::string > | GetNamesOfInterfacesProvidedOrOutput (void) const |
std::vector< std::string > | GetNamesOfInterfacesProvided (void) const |
std::vector< std::string > | GetNamesOfInterfacesOutput (void) const |
std::vector< std::string > | GetNamesOfInterfacesRequiredOrInput (void) const |
std::vector< std::string > | GetNamesOfInterfacesRequired (void) const |
std::vector< std::string > | GetNamesOfInterfacesInput (void) const |
![]() | |
virtual | ~cmnGenericObject (void) |
virtual const cmnClassServicesBase * | Services (void) const =0 |
bool | ReconstructFrom (const cmnGenericObject &other) |
std::string | ToString (void) const |
virtual void | ToStreamRaw (std::ostream &outputStream, const char delimiter= ' ', bool headerOnly=false, const std::string &headerPrefix="") const |
virtual bool | FromStreamRaw (std::istream &inputStream, const char delimiter= ' ') |
virtual void | SerializeRaw (std::ostream &outputStream) const |
virtual void | DeSerializeRaw (std::istream &inputStream) |
virtual size_t | ScalarNumber (void) const |
virtual bool | ScalarNumberIsFixed (void) const |
virtual double | Scalar (const size_t CMN_UNUSED(index)) const throw (std::out_of_range) |
virtual std::string | ScalarDescription (const size_t CMN_UNUSED(index), const std::string &CMN_UNUSED(userDescription)) const |
Friends | |
class | mtsTaskManager |
Additional Inherited Members | |
![]() | |
static std::runtime_error | UnknownException |
![]() | |
typedef cmnNamedMap < mtsStateTable > | StateTableMapType |
typedef cmnNamedMap < mtsInterfaceProvided > | InterfacesProvidedMapType |
typedef cmnNamedMap < mtsInterfaceOutput > | InterfacesOutputMapType |
typedef cmnNamedMap < mtsInterfaceRequired > | InterfacesRequiredMapType |
typedef cmnNamedMap < mtsInterfaceInput > | InterfacesInputMapType |
This class inherits from mtsTask and provides the base for implementing continuous loops, where the user-supplied Run method is repeatedly invoked. It also introduces the possibility to create a new thread or to use an existing thread for the task.
typedef mtsTask mtsTaskContinuous::BaseType |
mtsTaskContinuous::mtsTaskContinuous | ( | const std::string & | name, |
unsigned int | sizeStateTable = 256 , |
||
bool | newThread = true |
||
) |
Create a task with name 'name' that has a state table of the specified size.
name | The name of the task |
sizeStateTable | The history size of the state table |
newThread | True if a new thread should be created for this task |
If newThread is false, the task will not create a new thread, but will rather "capture" an existing thread. This is done as follows:
1) Call mtsTaskContinuous::Create from the thread to be captured. The class will get the thread id for the current thread and use it to initialize all interfaces in mtsTask::StartupInternal. Once this is done, Create returns to the calling thread.
2) Call mtsTaskContinuous::Start from the thread to be captured. This function captures the thread, and uses it to call the mtsTask::Run method. It does not return until the task is terminated.
Other tasks can use mtsTask::Suspend and mtsTask::Start to suspend and resume this task, or mtsTask::Kill to terminate it. In other words, once started the task should behave the same regardless of whether or not a new thread was created.
Note that mtsTaskFromCallback provides another mechanism for using an existing thread. In that case, the task does not capture the thread, but just registers itself as a callback.
mtsTaskContinuous::mtsTaskContinuous | ( | const mtsTaskContinuousConstructorArg & | arg | ) |
|
virtual |
Default Destructor.
|
virtual |
Implements mtsTask.
|
virtual |
|
protectedvirtual |
The member function that is passed as 'start routine' argument for thread creation.
Implements mtsTask.
Reimplemented in mtsTaskPeriodic, and mtsTaskFromSignal.
|
virtual |
Start/resume execution of the task
Reimplemented from mtsComponent.
|
protectedvirtual |
Called from Start
Reimplemented in mtsTaskPeriodic.
|
virtual |
Suspend the execution of the task
Reimplemented from mtsComponent.
Reimplemented in mtsTaskPeriodic.
|
friend |
|
protected |
If a new thread is not created, we need to capture the current thread on the first call to Start.
|
protected |
True if a new thread should be created for this task.