|
cisst-saw
|
#include <mtsTaskContinuous.h>
Public Types | |
| typedef mtsTask | BaseType |
Public Types inherited from mtsTask | |
| typedef mtsComponent | BaseType |
Public Types inherited from mtsComponent | |
| 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) |
Public Member Functions inherited from mtsTask | |
| 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) |
Public Member Functions inherited from mtsComponent | |
| 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 |
Public Member Functions inherited from cmnGenericObject | |
| 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 Public Attributes inherited from mtsTask | |
| static std::runtime_error | UnknownException |
Protected Types inherited from mtsComponent | |
| 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.
1.8.6