cisst-saw
Loading...
Searching...
No Matches
mtsComponentAddLatency Class Reference

#include <mtsComponentAddLatency.h>

Inheritance diagram for mtsComponentAddLatency:
mtsTaskPeriodic mtsTaskContinuous mtsTask mtsComponent cmnGenericObject

Public Member Functions

 mtsComponentAddLatency (const std::string &componentName, double periodInSeconds)
 mtsComponentAddLatency (const mtsTaskPeriodicConstructorArg &arg)
virtual ~mtsComponentAddLatency ()
void Configure (const std::string &filename) override
void Startup (void) override
void Run (void) override
void Cleanup (void) override
double SetLatency (double latencyInSeconds)
Public Member Functions inherited from mtsTaskPeriodic
 mtsTaskPeriodic (const std::string &name, double periodicityInSeconds, bool isHardRealTime=false, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskPeriodic (const std::string &name, const osaAbsoluteTime &periodicity, bool isHardRealTime=false, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskPeriodic (const mtsTaskPeriodicConstructorArg &arg)
virtual ~mtsTaskPeriodic ()
void Suspend (void) override
double GetPeriodicity (void) const
bool IsPeriodic (void) const override
Public Member Functions inherited from mtsTaskContinuous
 mtsTaskContinuous (const std::string &name, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskContinuous (const mtsTaskContinuousConstructorArg &arg)
virtual ~mtsTaskContinuous ()
void Create (void *data=0) override
void Start (void) override
void Kill (void) override
virtual bool CreatesThread (void) const
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 OnRunException (const std::exception &excp)
void Configure (const std::string &CMN_UNUSED(filename)="") override
void SetInitializationDelay (double delay)
void Create (void) override
double GetAveragePeriod (void) const
const std::string GetDefaultStateTableName (void) const
mtsStateTableGetDefaultStateTable (void)
mtsInterfaceRequiredAddInterfaceRequiredWithoutSystemEventHandlers (const std::string &interfaceRequiredName, mtsRequiredType required=MTS_REQUIRED) override
mtsInterfaceProvidedAddInterfaceProvidedWithoutSystemEvents (const std::string &newInterfaceName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY) override
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 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 AddTag (const std::string &tag)
const std::set< std::string > & GetTags (void) const
void SetName (const std::string &componentName)
bool CreateAndWait (double timeoutInSeconds)
bool StartAndWait (double timeoutInSeconds)
bool KillAndWait (double timeoutInSeconds)
mtsInterfaceProvidedAddInterfaceProvided (const std::string &interfaceProvidedName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY)
CISST_DEPRECATED mtsInterfaceProvidedAddProvidedInterface (const std::string &interfaceProvidedName)
virtual mtsInterfaceOutputAddInterfaceOutput (const std::string &interfaceOutputName)
std::vector< std::string > GetNamesOfInterfacesProvidedOrOutput (void) const
std::vector< std::string > GetNamesOfInterfacesProvided (void) const
std::vector< std::string > GetNamesOfInterfacesOutput (void) const
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
mtsInterfaceProvidedGetInterfaceProvided (const std::string &interfaceProvidedName) const
mtsInterfaceOutputGetInterfaceOutput (const std::string &interfaceOutputName) const
size_t GetNumberOfInterfacesProvided (void) const
size_t GetNumberOfInterfacesOutput (void) const
bool RemoveInterfaceProvided (const std::string &interfaceProvidedName)
mtsInterfaceRequiredAddInterfaceRequired (const std::string &interfaceRequiredName, mtsRequiredType isRequired=MTS_REQUIRED)
CISST_DEPRECATED mtsInterfaceRequiredAddRequiredInterface (const std::string &requiredInterfaceName)
virtual mtsInterfaceInputAddInterfaceInput (const std::string &interfaceInputName)
std::vector< std::string > GetNamesOfInterfacesRequiredOrInput (void) const
std::vector< std::string > GetNamesOfInterfacesRequired (void) const
std::vector< std::string > GetNamesOfInterfacesInput (void) const
const mtsInterfaceProvidedGetInterfaceProvidedFor (const std::string &interfaceRequiredName)
mtsInterfaceRequiredGetInterfaceRequired (const std::string &interfaceRequiredName)
mtsInterfaceInputGetInterfaceInput (const std::string &interfaceInputName) const
size_t GetNumberOfInterfacesRequired (void) const
size_t GetNumberOfInterfacesInput (void) const
bool RemoveInterfaceRequired (const std::string &interfaceRequiredName)
mtsStateTableGetStateTable (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::StreamBufTypeGetLogMultiplexer (void) const override
bool AreAllInterfacesRequiredConnected (const bool log=false)
bool IsRunning (void) const
bool CISST_DEPRECATED Running (void) const
bool IsStarted (void) const
bool IsTerminated (void) const
bool IsEndTask (void) const
const mtsComponentStateGetState (void) const
void GetState (mtsComponentState &state) const
void ToStream (std::ostream &outputStream) const override
bool SetReplayMode (void)
bool SetReplayData (const std::string &stateTableName, const std::string &fileName)
bool SetReplayTime (const double time)
Public Member Functions inherited from cmnGenericObject
virtual ~cmnGenericObject (void)
virtual const cmnClassServicesBaseServices (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 CISST_THROW(std
virtual std::string ScalarDescription (const size_t CMN_UNUSED(index), const std::string &CMN_UNUSED(userDescription)) const

Protected Types

typedef std::list< mtsComponentAddLatencyDelayedRead * > DelayedReadList
typedef std::list< mtsComponentAddLatencyDelayedQualifiedRead * > DelayedQualifiedReadList
typedef std::list< mtsComponentAddLatencyDelayedVoid * > DelayedVoidList
typedef std::list< mtsComponentAddLatencyDelayedWrite * > DelayedWriteList
Protected Types inherited from mtsComponent
typedef cmnNamedMap< mtsInterfaceProvidedInterfacesProvidedMapType
typedef cmnNamedMap< mtsInterfaceOutputInterfacesOutputMapType
typedef cmnNamedMap< mtsInterfaceRequiredInterfacesRequiredMapType
typedef cmnNamedMap< mtsInterfaceInputInterfacesInputMapType
typedef cmnNamedMap< mtsStateTableStateTableMapType

Protected Member Functions

template<class _elementType>
bool AddCommandReadDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &commandRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &commandProvidedName="")
template<class _element1Type, class _element2Type>
bool AddCommandQualifiedReadDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &commandRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &commandProvidedName="")
bool AddCommandVoidDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &commandRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &commandProvidedName="")
template<class _elementType>
bool AddCommandWriteDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &commandRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &commandProvidedName="")
bool AddEventVoidDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &eventRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &eventProvidedName="")
template<class _elementType>
bool AddEventWriteDelayed (mtsInterfaceRequired *interfaceRequired, const std::string &eventRequiredName, mtsInterfaceProvided *interfaceProvided, const std::string &eventProvidedName="")
Protected Member Functions inherited from mtsTaskPeriodic
void * RunInternal (void *argument) override
void StartupInternal (void) override
void CleanupInternal (void) override
void StartInternal (void) override
Protected Member Functions inherited from mtsTask
virtual const mtsManagerComponentServicesGetManagerComponentServices (void) const override
void RunEventHandler (void)
void ChangeStateEventHandler (const mtsComponentState &newState)
mtsExecutionResult RunEvent (bool check=true)
void DoRunInternal (void)
void Sleep (double timeInSeconds)
mtsStateIndex::TimeTicksType GetTick (void) const
virtual void SaveThreadStartData (void *data)
virtual void SetThreadReturnValue (void *returnValue)
void ChangeState (mtsComponentState::Enum newState)
bool WaitForState (mtsComponentState desiredState, double timeout) override
Protected Member Functions inherited from mtsComponent
 mtsComponent (void)
 mtsComponent (const mtsComponent &other)
void Initialize (void)
mtsInterfaceRequiredAddInterfaceRequiredExisting (const std::string &interfaceRequiredName, mtsInterfaceRequired *interfaceRequired)
mtsInterfaceRequiredAddInterfaceRequiredUsingMailbox (const std::string &interfaceRequiredName, mtsMailBox *mailBox, mtsRequiredType required)
mtsInterfaceProvidedAddInterfaceProvidedUsingMailbox (const std::string &interfaceProvidedName, mtsMailBox *mailBox)
mtsInterfaceInputAddInterfaceInputExisting (const std::string &interfaceInputName, mtsInterfaceInput *interfaceInput)
mtsInterfaceOutputAddInterfaceOutputExisting (const std::string &interfaceOutputName, mtsInterfaceOutput *interfaceOutput)
void KillSeparateLogFile (void)
size_t ProcessMailBoxes (InterfacesProvidedMapType &interfaces)
size_t ProcessQueuedCommands (void)
size_t ProcessQueuedEvents (void)
mtsInterfaceRequiredEnableDynamicComponentManagement (void)
 Enable support for dynamic component management services.
bool AddInterfaceInternal (const bool useMangerComponentServices=false)
 Add internal interfaces.
void InterfaceInternalCommands_GetEndUserInterface (const mtsEndUserInterfaceArg &argin, mtsEndUserInterfaceArg &argout)
void InterfaceInternalCommands_AddObserverList (const mtsEventHandlerList &argin, mtsEventHandlerList &argout)
void InterfaceInternalCommands_RemoveEndUserInterface (const mtsEndUserInterfaceArg &argin, mtsEndUserInterfaceArg &argout)
void InterfaceInternalCommands_RemoveObserverList (const mtsEventHandlerList &argin, mtsEventHandlerList &argout)

Protected Attributes

DelayedReadList DelayedReads
DelayedQualifiedReadList DelayedQualifiedReads
DelayedVoidList DelayedVoids
DelayedWriteList DelayedWrites
double Latency
mtsStateTable LatencyStateTable
Protected Attributes inherited from mtsTaskPeriodic
osaThreadBuddy ThreadBuddy
double Period
osaAbsoluteTime AbsoluteTimePeriod
bool IsHardRealTime
Protected Attributes inherited from mtsTaskContinuous
bool NewThread
bool CaptureThread
Protected Attributes inherited from mtsTask
osaThread Thread
double InitializationDelay
osaMutex StateChange
osaThreadSignal StateChangeSignal
mtsStateTable StateTable
bool OverranPeriod
void * ThreadStartData
void * ReturnValue
mtsCallableVoidBaseInterfaceProvidedToManagerCallable
mtsInterfaceRequiredExecIn
mtsInterfaceProvidedExecOut
mtsFunctionVoid RunEventInternal
bool RunEventCalled
mtsFunctionWrite ChangeStateEvent
Protected Attributes inherited from mtsComponent
std::string Name
mtsComponentState State
std::set< std::string > mTags
mtsInterfaceProvidedInterfaceProvidedToManager
bool UseSeparateLogFileFlag
cmnLogger::StreamBufTypeLoDMultiplexerStreambuf
std::ofstream * LogFile
InterfacesProvidedMapType InterfacesProvided
InterfacesOutputMapType InterfacesOutput
InterfacesRequiredMapType InterfacesRequired
InterfacesInputMapType InterfacesInput
StateTableMapType StateTables
mtsManagerComponentServicesManagerComponentServices
mtsFunctionWrite EventGeneratorChangeState
bool ReplayMode

Additional Inherited Members

Public Types inherited from mtsTaskPeriodic
typedef mtsTaskContinuous BaseType
Public Types inherited from mtsTaskContinuous
typedef mtsTask BaseType
Public Types inherited from mtsTask
typedef mtsComponent BaseType
Public Types inherited from mtsComponent
typedef mtsComponent ThisType
Static Public Attributes inherited from mtsTask
static std::runtime_error UnknownException

Detailed Description

Base class for component with latency. This class can be used to create a component that delays all commands and events. For example, one might want to simulate the latency introduced by the network between a master and a slave for a tele-operation task. The delay component can then be inserted between the client and server. It must replicate the server provided interface(s) so that the client will connect its required interface(s) as if it was the server itself. Let Cs the server component, Cc the client component and Cd the delay component. Cd will need to be created with the same provided interfaces as Cs. Then, instead of connecting Cc to Cs, we will connect Cc to Cd and Cd to Cs.

The derived component needs to create its required and provided interfaces using the methods AddInterfaceRequired and AddInterfaceProvided. Once the interfaces are created, commands can be added using AddCommandVoidDelayed, AddCommandReadDelayed, ...

At runtime, the delay component will continuously read from the server and buffer the results in a state table. It is important to set the periodicity of the delay component so that enough data is collected but make sure the frequency is not too high either. For void and write commands as well as events, the component buffers all requests and periodically checks which commands/events should be forwarded. Therefore the actual latency will be impacted by the period used by the delay component.

Member Typedef Documentation

◆ DelayedQualifiedReadList

typedef std::list<mtsComponentAddLatencyDelayedQualifiedRead *> mtsComponentAddLatency::DelayedQualifiedReadList
protected

◆ DelayedReadList

typedef std::list<mtsComponentAddLatencyDelayedRead *> mtsComponentAddLatency::DelayedReadList
protected

◆ DelayedVoidList

typedef std::list<mtsComponentAddLatencyDelayedVoid *> mtsComponentAddLatency::DelayedVoidList
protected

◆ DelayedWriteList

typedef std::list<mtsComponentAddLatencyDelayedWrite *> mtsComponentAddLatency::DelayedWriteList
protected

Constructor & Destructor Documentation

◆ mtsComponentAddLatency() [1/2]

mtsComponentAddLatency::mtsComponentAddLatency ( const std::string & componentName,
double periodInSeconds )

◆ mtsComponentAddLatency() [2/2]

mtsComponentAddLatency::mtsComponentAddLatency ( const mtsTaskPeriodicConstructorArg & arg)

◆ ~mtsComponentAddLatency()

virtual mtsComponentAddLatency::~mtsComponentAddLatency ( )
virtual

Member Function Documentation

◆ AddCommandQualifiedReadDelayed()

template<class _element1Type, class _element2Type>
bool mtsComponentAddLatency::AddCommandQualifiedReadDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & commandRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & commandProvidedName = "" )
protected

◆ AddCommandReadDelayed()

template<class _elementType>
bool mtsComponentAddLatency::AddCommandReadDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & commandRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & commandProvidedName = "" )
protected

Add a read command with latency. The provided and required interfaces must be created before using the methods AddInterfaceRequired and AddInterfaceProvided. The command name should match the command name from the source component provided interface. By default the provided interface with delay will use the same command name.

◆ AddCommandVoidDelayed()

bool mtsComponentAddLatency::AddCommandVoidDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & commandRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & commandProvidedName = "" )
protected

◆ AddCommandWriteDelayed()

template<class _elementType>
bool mtsComponentAddLatency::AddCommandWriteDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & commandRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & commandProvidedName = "" )
protected

◆ AddEventVoidDelayed()

bool mtsComponentAddLatency::AddEventVoidDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & eventRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & eventProvidedName = "" )
protected

◆ AddEventWriteDelayed()

template<class _elementType>
bool mtsComponentAddLatency::AddEventWriteDelayed ( mtsInterfaceRequired * interfaceRequired,
const std::string & eventRequiredName,
mtsInterfaceProvided * interfaceProvided,
const std::string & eventProvidedName = "" )
protected

◆ Cleanup()

void mtsComponentAddLatency::Cleanup ( void )
overridevirtual

Virtual method that gets overloaded, and is run after the component gets killed using Kill() method.

Reimplemented from mtsComponent.

◆ Configure()

void mtsComponentAddLatency::Configure ( const std::string & filename)
overridevirtual

The virtual method so that the interface or tasks can configure themselves

Reimplemented from mtsComponent.

◆ Run()

void mtsComponentAddLatency::Run ( void )
overridevirtual

Pure virtual method that gets overloaded to run the actual task.

Implements mtsTask.

◆ SetLatency()

double mtsComponentAddLatency::SetLatency ( double latencyInSeconds)

◆ Startup()

void mtsComponentAddLatency::Startup ( void )
overridevirtual

Virtual method that gets overloaded, and is run before the component is started.

Reimplemented from mtsComponent.

Member Data Documentation

◆ DelayedQualifiedReads

DelayedQualifiedReadList mtsComponentAddLatency::DelayedQualifiedReads
protected

◆ DelayedReads

DelayedReadList mtsComponentAddLatency::DelayedReads
protected

◆ DelayedVoids

DelayedVoidList mtsComponentAddLatency::DelayedVoids
protected

◆ DelayedWrites

DelayedWriteList mtsComponentAddLatency::DelayedWrites
protected

◆ Latency

double mtsComponentAddLatency::Latency
protected

◆ LatencyStateTable

mtsStateTable mtsComponentAddLatency::LatencyStateTable
protected

The documentation for this class was generated from the following file: