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

#include <mtsCollectorEvent.h>

Inheritance diagram for mtsCollectorEvent:
mtsCollectorBase mtsTaskFromSignal mtsTaskContinuous mtsTask mtsComponent cmnGenericObject

Classes

class  CollectorEventVoid
class  CollectorEventWrite

Public Member Functions

void Run (void) override
void Startup (void) override
void Initialize (void)
virtual std::string GetDefaultOutputName (void) override
 mtsCollectorEvent (const std::string &collectorName, const CollectorFileFormat fileFormat=mtsCollectorBase::COLLECTOR_FILE_FORMAT_CSV)
 ~mtsCollectorEvent (void)
bool AddObservedComponent (const std::string &componentName)
bool AddObservedComponent (const mtsComponent *componentPointer)
bool AddObservedInterface (const std::string &componentName, const std::string &interfaceName)
bool AddObservedEventVoid (const std::string &componentName, const std::string &interfaceName, const std::string &eventName)
bool AddObservedEventWrite (const std::string &componentName, const std::string &interfaceName, const std::string &eventName)
bool Connect (void) override
void StartCollection (const double &delayInSeconds) override
void StopCollection (const double &delayInSeconds) override
Public Member Functions inherited from mtsCollectorBase
 mtsCollectorBase (const std::string &collectorName, const CollectorFileFormat fileFormat)
virtual ~mtsCollectorBase (void)
void SetOutput (const std::string &fileName, const CollectorFileFormat fileFormat)
void SetOutput (std::ostream &outputStream, const CollectorFileFormat fileFormat)
void SetOutput (std::ostream &outputStream)
void SetOutputToDefault (const CollectorFileFormat fileFormat)
virtual void SetOutputToDefault (void)
void CloseOutput (void)
const std::string & GetOutputFileName (void) const
void OpenFileIfNeeded (void)
virtual void SetWorkingDirectory (const std::string &directory)
void GetWorkingDirectory (std::string &placeHolder) const
void SetOutputStreamFloatingNotation (const CollectorFileFloatingNotation floatingNotation)
void SetOutputStreamPrecision (const int precision)
void SetOutputStreamWidth (const int width)
void SetOutputStreamFill (const char fillCharacter)
Public Member Functions inherited from mtsTaskFromSignal
 mtsTaskFromSignal (const std::string &name, unsigned int sizeStateTable=256)
 mtsTaskFromSignal (const mtsTaskConstructorArg &arg)
virtual ~mtsTaskFromSignal ()
void Kill (void) override
mtsInterfaceRequiredAddInterfaceRequiredWithoutSystemEventHandlers (const std::string &interfaceRequiredName, mtsRequiredType required=MTS_REQUIRED) override
mtsInterfaceProvidedAddInterfaceProvidedWithoutSystemEvents (const std::string &newInterfaceName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY) 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 Suspend (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)
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 AddTag (const std::string &tag)
const std::set< std::string > & GetTags (void) 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)
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 cmnNamedMap< mtsInterfaceRequiredInterfacesRequiredMap
typedef cmnNamedMap< InterfacesRequiredMapComponentsMap
Protected Types inherited from mtsCollectorBase
enum  CollectorStatus { COLLECTOR_STOP , COLLECTOR_WAIT_START , COLLECTOR_COLLECTING , COLLECTOR_WAIT_STOP }
typedef cmnNamedMap< SignalMapElementSignalMapType
typedef cmnNamedMap< SignalMapTypeComponentMapType
Protected Types inherited from mtsTaskFromSignal
typedef mtsTaskContinuous BaseType
Protected Types inherited from mtsComponent
typedef cmnNamedMap< mtsInterfaceProvidedInterfacesProvidedMapType
typedef cmnNamedMap< mtsInterfaceOutputInterfacesOutputMapType
typedef cmnNamedMap< mtsInterfaceRequiredInterfacesRequiredMapType
typedef cmnNamedMap< mtsInterfaceInputInterfacesInputMapType
typedef cmnNamedMap< mtsStateTableStateTableMapType

Protected Member Functions

mtsComponentCheckComponent (const std::string &componentName) const
mtsInterfaceProvidedCheckInterface (const mtsComponent *componentPointer, const std::string &interfaceName) const
mtsInterfaceRequiredGetInterfaceRequiredFor (const mtsComponent *componentPointer, const mtsInterfaceProvided *interfacePointer)
void SaveEventVoid (const CollectorEventVoid *event)
void SaveEventWrite (const CollectorEventWrite *event, const mtsGenericObject &payload)
bool CheckCollectingStatus (void)
bool AddObservedInterface (const mtsComponent *componentPointer, const mtsInterfaceProvided *interfacePointer)
bool AddObservedEventVoid (const mtsComponent *componentPointer, const mtsInterfaceProvided *interfacePointer, const std::string &eventName)
bool AddObservedEventWrite (const mtsComponent *componentPointer, const mtsInterfaceProvided *interfacePointer, const std::string &eventName)
void PrintHeader (const CollectorFileFormat &fileFormat)
void SetCollecting (bool collecting, double currentTime)
Protected Member Functions inherited from mtsCollectorBase
void SetDelimiter (void)
void SetOutputStreamParams (void)
void StartCollectionCommand (const double &delayInSeconds)
void StopCollectionCommand (const double &delayInSeconds)
void SetWorkingDirectoryCommand (const std::string &directory)
void SetOutputToDefaultCommand (void)
void Init (void)
void Cleanup (void)
void ClearComponentMap (void)
void SetupControlInterface (void)
Protected Member Functions inherited from mtsTaskFromSignal
void Init (void)
void * RunInternal (void *argument) override
void PostCommandQueuedMethod (void)
Protected Member Functions inherited from mtsTaskContinuous
virtual void StartInternal (void)
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)
virtual void StartupInternal (void)
virtual void CleanupInternal (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

ComponentsMap ObservedComponents
size_t EventCounter
std::vector< CollectorEventVoid * > EventsVoid
std::vector< CollectorEventWrite * > EventsWrite
bool Collecting
double ScheduledStartTime
double ScheduledStopTime
const osaTimeServerTimeServer
Protected Attributes inherited from mtsCollectorBase
CollectorStatus Status
CollectorFileFormat FileFormat
ComponentMapType ComponentMap
bool ConnectedFlag
bool FirstRunningFlag
size_t SampleCounter
size_t SampleCounterForEvent
double TimeIntervalForProgressEvent
double TimeOfLastProgressEvent
std::string OutputFileName
std::string OutputHeaderFileName
std::string WorkingDirectoryMember
std::ostream * OutputStream
std::ofstream * OutputFile
std::ostream * OutputHeaderStream
std::ofstream * OutputHeaderFile
CollectorFileFloatingNotation FloatingNotation
std::streamsize Precision
std::streamsize Width
char FillCharacter
bool FileOpened
char Delimiter
std::stringstream StringStreamBufferForSerialization
cmnSerializerSerializer = nullptr
mtsInterfaceProvidedControlInterface
Protected Attributes inherited from mtsTaskFromSignal
mtsCallableVoidBasePostCommandQueuedCallable
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 mtsCollectorBase
enum  CollectorFileFormat { COLLECTOR_FILE_FORMAT_PLAIN_TEXT , COLLECTOR_FILE_FORMAT_BINARY , COLLECTOR_FILE_FORMAT_CSV , COLLECTOR_FILE_FORMAT_UNDEFINED }
enum  CollectorFileFloatingNotation { COLLECTOR_FILE_FLOATING_NOTATION_NONE , COLLECTOR_FILE_FLOATING_NOTATION_FIXED , COLLECTOR_FILE_FLOATING_NOTATION_SCIENTIFIC }
Public Types inherited from mtsTaskContinuous
typedef mtsTask BaseType
Public Types inherited from mtsTask
typedef mtsComponent BaseType
Public Types inherited from mtsComponent
typedef mtsComponent ThisType
Public Attributes inherited from mtsCollectorBase
mtsFunctionWrite CollectionStartedEventTrigger
mtsFunctionWrite ProgressEventTrigger
Static Public Attributes inherited from mtsTask
static std::runtime_error UnknownException

Detailed Description

This class provides a way to collect event from multiple components and interfaces. It uses a separate thread and subscribes to all specified events. When an event is received, the thread is waken-up and the event is recorded.

Member Typedef Documentation

◆ ComponentsMap

◆ InterfacesRequiredMap

We need to keep a list of components the event collector will connect from. Each component can then have one or more provided interface and for each provided interface we will need to create a required interface. For this, we use a map of maps.

Constructor & Destructor Documentation

◆ mtsCollectorEvent()

mtsCollectorEvent::mtsCollectorEvent ( const std::string & collectorName,
const CollectorFileFormat fileFormat = mtsCollectorBase::COLLECTOR_FILE_FORMAT_CSV )

Constructor, requires to name the collector task.

◆ ~mtsCollectorEvent()

mtsCollectorEvent::~mtsCollectorEvent ( void )

Member Function Documentation

◆ AddObservedComponent() [1/2]

bool mtsCollectorEvent::AddObservedComponent ( const mtsComponent * componentPointer)

Tells the collector to collect all events coming from a given component (all interfaces and all events). This method assumes the pointer is valid.

◆ AddObservedComponent() [2/2]

bool mtsCollectorEvent::AddObservedComponent ( const std::string & componentName)

Tells the collector to collect all events coming from a given component (all interfaces and all events).

◆ AddObservedEventVoid() [1/2]

bool mtsCollectorEvent::AddObservedEventVoid ( const mtsComponent * componentPointer,
const mtsInterfaceProvided * interfacePointer,
const std::string & eventName )
protected

Tells the collector to collect all events coming from a given event. These methods assumes that all pointers are valid.

◆ AddObservedEventVoid() [2/2]

bool mtsCollectorEvent::AddObservedEventVoid ( const std::string & componentName,
const std::string & interfaceName,
const std::string & eventName )

Tells the collector to collect all events coming from a given event.

◆ AddObservedEventWrite() [1/2]

bool mtsCollectorEvent::AddObservedEventWrite ( const mtsComponent * componentPointer,
const mtsInterfaceProvided * interfacePointer,
const std::string & eventName )
protected

◆ AddObservedEventWrite() [2/2]

bool mtsCollectorEvent::AddObservedEventWrite ( const std::string & componentName,
const std::string & interfaceName,
const std::string & eventName )

◆ AddObservedInterface() [1/2]

bool mtsCollectorEvent::AddObservedInterface ( const mtsComponent * componentPointer,
const mtsInterfaceProvided * interfacePointer )
protected

Tells the collector to collect all events coming from a given interface (all events). This methods assumes that both pointers are valid.

◆ AddObservedInterface() [2/2]

bool mtsCollectorEvent::AddObservedInterface ( const std::string & componentName,
const std::string & interfaceName )

Tells the collector to collect all events coming from a given interface (all events).

◆ CheckCollectingStatus()

bool mtsCollectorEvent::CheckCollectingStatus ( void )
protected

Update and return the collecting status based on the scheduled start/stop time and current time.

◆ CheckComponent()

mtsComponent * mtsCollectorEvent::CheckComponent ( const std::string & componentName) const
protected

Utility methods to check availibility of components, interfaces and events

◆ CheckInterface()

mtsInterfaceProvided * mtsCollectorEvent::CheckInterface ( const mtsComponent * componentPointer,
const std::string & interfaceName ) const
protected

◆ Connect()

bool mtsCollectorEvent::Connect ( void )
overridevirtual
Todo
copy documentation for mtsCollectorState

Implements mtsCollectorBase.

◆ GetDefaultOutputName()

virtual std::string mtsCollectorEvent::GetDefaultOutputName ( void )
overridevirtual

Generate default file name, without the prefix (txt, csv, cdat)

Reimplemented from mtsCollectorBase.

◆ GetInterfaceRequiredFor()

mtsInterfaceRequired * mtsCollectorEvent::GetInterfaceRequiredFor ( const mtsComponent * componentPointer,
const mtsInterfaceProvided * interfacePointer )
protected

Get the required interface associated to a specific connection defined by the component and interface. If the required interface doesn't exist yet, a new one is being created.

◆ Initialize()

void mtsCollectorEvent::Initialize ( void )

Initialization

◆ PrintHeader()

void mtsCollectorEvent::PrintHeader ( const CollectorFileFormat & fileFormat)
protected

Print out the event names which are being collected.

◆ Run()

void mtsCollectorEvent::Run ( void )
overridevirtual

Thread-related methods

Implements mtsTask.

◆ SaveEventVoid()

void mtsCollectorEvent::SaveEventVoid ( const CollectorEventVoid * event)
protected

Save the event information

◆ SaveEventWrite()

void mtsCollectorEvent::SaveEventWrite ( const CollectorEventWrite * event,
const mtsGenericObject & payload )
protected

Save the event information and payload

◆ SetCollecting()

void mtsCollectorEvent::SetCollecting ( bool collecting,
double currentTime )
protected

◆ StartCollection()

void mtsCollectorEvent::StartCollection ( const double & delayInSeconds)
overridevirtual

Methods defined as virtual in base class to control stop/start collection with delay. For the event collector, these methods will enable/disable all event observers.

Implements mtsCollectorBase.

◆ Startup()

void mtsCollectorEvent::Startup ( void )
overridevirtual

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

Reimplemented from mtsComponent.

◆ StopCollection()

void mtsCollectorEvent::StopCollection ( const double & delayInSeconds)
overridevirtual

End collecting data. Data collection will end after delayedStop second(s). If it is zero (by default), it means 'stop now'.

Implements mtsCollectorBase.

Member Data Documentation

◆ Collecting

bool mtsCollectorEvent::Collecting
protected

Flag indicating if the collector is started

◆ EventCounter

size_t mtsCollectorEvent::EventCounter
protected

Counter used to give a unique Id to each event, starts at 1

◆ EventsVoid

std::vector<CollectorEventVoid *> mtsCollectorEvent::EventsVoid
protected

Lists of event handlers

◆ EventsWrite

std::vector<CollectorEventWrite *> mtsCollectorEvent::EventsWrite
protected

◆ ObservedComponents

ComponentsMap mtsCollectorEvent::ObservedComponents
protected

◆ ScheduledStartTime

double mtsCollectorEvent::ScheduledStartTime
protected

Scheduled start. If time is set to zero, there is no scheduled start

◆ ScheduledStopTime

double mtsCollectorEvent::ScheduledStopTime
protected

Scheduled start. If time is set to zero, there is no scheduled start

◆ TimeServer

const osaTimeServer* mtsCollectorEvent::TimeServer
protected

Pointer on manager's time server


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