ChimeraTK-ApplicationCore  04.01.00
ChimeraTK::Application Class Reference

#include <Application.h>

+ Inheritance diagram for ChimeraTK::Application:
+ Collaboration diagram for ChimeraTK::Application:

Public Member Functions

 Application (const std::string &name)
 The constructor takes the application name as an argument. More...
 
 ~Application () override
 
void shutdown () override
 This will remove the global pointer to the instance and allows creating another instance afterwards. More...
 
void initialise () override
 
void optimiseUnmappedVariables (const std::set< std::string > &names) override
 
void run () override
 Execute the module. More...
 
Model::RootProxy getModel ()
 Return the root of the application model. More...
 
void generateXML ()
 Instead of running the application, just initialise it and output the published variables to an XML file. More...
 
void generateDOT ()
 Instead of running the application, just initialise it and output the published variables to a DOT file. More...
 
void enableTestableMode ()
 Enable the testable mode. More...
 
detail::TestableMode & getTestableMode ()
 Get the TestableMode control object of this application. More...
 
void debugMakeConnections ()
 Enable debug output for the ConnectionMaker. More...
 
ModuleType getModuleType () const override
 Return the module type of this module, or in case of a VirtualModule the module type this VirtualModule was derived from. More...
 
std::string getQualifiedName () const override
 Get the fully qualified name of the module instance, i.e. More...
 
std::string getFullDescription () const override
 Obtain the full description including the full description of the owner. More...
 
void enableVariableDebugging (const VariableNetworkNode &node)
 Enable debug output for a given variable. More...
 
void enableDebugDataLoss ()
 Enable debug output for lost data. More...
 
boost::shared_ptr< DeviceManagergetDeviceManager (const std::string &aliasOrCDD)
 Return the DeviceManager for the given alias name or CDD. More...
 
LifeCycleState getLifeCycleState () const
 Get the current LifeCycleState of the application. More...
 
VersionNumber getStartVersion () const
 Return the start version. More...
 
ApplicationModulegetVersionInfoProvider ()
 
void setVersionInfoProvider (ApplicationModule *provider)
 
size_t getCircularNetworkInvalidityCounter (size_t circularNetworkHash) const
 
ConfigReadergetConfigReader ()
 
- Public Member Functions inherited from ChimeraTK::ModuleGroup
 ModuleGroup (ModuleGroup *owner, const std::string &name, const std::string &description, const std::unordered_set< std::string > &tags={})
 Constructor: Create ModuleGroup by the given name with the given description and register it with its owner. More...
 
 ModuleGroup ()=default
 Default constructor to allow late initialisation of module groups. More...
 
 ModuleGroup (ModuleGroup &&other) noexcept
 Move constructor. More...
 
ModuleGroupoperator= (ModuleGroup &&other) noexcept
 Move assignment. More...
 
ModuleType getModuleType () const override
 Return the module type of this module, or in case of a VirtualModule the module type this VirtualModule was derived from. More...
 
ChimeraTK::Model::ModuleGroupProxy getModel ()
 Return the application model proxy representing this module. More...
 
std::string getVirtualQualifiedName () const override
 
void unregisterModule (Module *module) override
 Unregister another module as a sub-module. More...
 
- Public Member Functions inherited from ChimeraTK::Module
 Module (EntityOwner *owner, const std::string &name, const std::string &description, const std::unordered_set< std::string > &tags={})
 Constructor: Create Module by the given name with the given description and register it with its owner. More...
 
 Module ()=default
 Default constructor: Allows late initialisation of modules (e.g. More...
 
 ~Module () override
 Destructor. More...
 
 Module (Module &&other) noexcept
 Move constructor. More...
 
Moduleoperator= (Module &&other) noexcept
 Move assignment operator. More...
 
virtual void prepare ()
 Prepare the execution of the module. More...
 
virtual void terminate ()
 Terminate the module. More...
 
ChimeraTK::ReadAnyGroup readAnyGroup ()
 Create a ChimeraTK::ReadAnyGroup for all readable variables in this Module. More...
 
void readAll (bool includeReturnChannels=false)
 Read all readable variables in the group. More...
 
void readAllNonBlocking (bool includeReturnChannels=false)
 Just call readNonBlocking() on all readable variables in the group. More...
 
void readAllLatest (bool includeReturnChannels=false)
 Just call readLatest() on all readable variables in the group. More...
 
void writeAll (bool includeReturnChannels=false)
 Just call write() on all writable variables in the group. More...
 
void writeAllDestructively (bool includeReturnChannels=false)
 Just call writeDestructively() on all writable variables in the group. More...
 
std::string getQualifiedName () const override
 Get the fully qualified name of the module instance, i.e. More...
 
std::string getFullDescription () const override
 Obtain the full description including the full description of the owner. More...
 
void setOwner (EntityOwner *newOwner)
 Set a new owner. More...
 
EntityOwnergetOwner () const
 
VersionNumber getCurrentVersionNumber () const override
 Return the current version number which has been received with the last push-type read operation. More...
 
void setCurrentVersionNumber (VersionNumber version) override
 Set the current version number. More...
 
DataValidity getDataValidity () const override
 Return the data validity flag. More...
 
void incrementDataFaultCounter () override
 Set the data validity flag to fault and increment the fault counter. More...
 
void decrementDataFaultCounter () override
 Decrement the fault counter and set the data validity flag to ok if the counter has reached 0. More...
 
std::list< EntityOwner * > getInputModulesRecursively (std::list< EntityOwner * > startList) override
 Use pointer to the module as unique identifier. More...
 
size_t getCircularNetworkHash () const override
 Get the ID of the circular dependency network (0 if none). More...
 
ModulefindApplicationModule ()
 Find ApplicationModule owner. More...
 
void disable ()
 Disable the module such that it is not part of the Application. More...
 
- Public Member Functions inherited from ChimeraTK::EntityOwner
 EntityOwner (std::string name, std::string description, std::unordered_set< std::string > tags={})
 Constructor: Create EntityOwner by the given name with the given description. More...
 
 EntityOwner ()
 Default constructor just for late initialisation. More...
 
virtual ~EntityOwner ()=default
 Virtual destructor to make the type polymorphic. More...
 
 EntityOwner (EntityOwner &&other) noexcept
 Move constructor. More...
 
 EntityOwner (const EntityOwner &other)=delete
 
EntityOwneroperator= (EntityOwner &&other) noexcept
 Move assignment operator. More...
 
EntityOwneroperator= (const EntityOwner &other)=delete
 
const std::string & getName () const
 Get the name of the module instance. More...
 
std::string getQualifiedNameWithType () const
 Get the fully qualified name of the module instance, followed by the C++ data type (in pointy brackets) More...
 
const std::string & getDescription () const
 Get the description of the module instance. More...
 
std::list< VariableNetworkNodegetAccessorList () const
 Obtain the list of accessors/variables directly associated with this instance. More...
 
std::list< Module * > getSubmoduleList () const
 Obtain the list of submodules associated with this instance. More...
 
std::list< VariableNetworkNodegetAccessorListRecursive () const
 Obtain the list of accessors/variables associated with this instance and any submodules. More...
 
std::list< Module * > getSubmoduleListRecursive () const
 Obtain the list of submodules associated with this instance and any submodules. More...
 
void registerAccessor (VariableNetworkNode accessor)
 Called inside the constructor of Accessor: adds the accessor to the list. More...
 
void unregisterAccessor (const VariableNetworkNode &accessor)
 Called inside the destructor of Accessor: removes the accessor from the list. More...
 
void registerModule (Module *module, bool addTags=true)
 Register another module as a sub-module. More...
 
void addTag (const std::string &tag)
 Add a tag to all Application-type nodes inside this group. More...
 
void dump (const std::string &prefix="", std::ostream &stream=std::cout) const
 Print the full hierarchy to given stream. More...
 
bool hasReachedTestableMode ()
 Check whether this module has declared that it reached the testable mode. More...
 
template<typename T >
std::string constant (T value)
 Create a variable name which will be automatically connected with a constant value. More...
 

Static Public Member Functions

static ApplicationgetInstance ()
 Obtain instance of the application. More...
 
static bool hasInstance ()
 Check whether an instance of Application currently exists. More...
 
static void registerThread (const std::string &name)
 Register the thread in the application system and give it a name. More...
 
static void incrementDataLossCounter (const std::string &name)
 Increment counter for how many write() operations have overwritten unread data. More...
 
static size_t getAndResetDataLossCounter ()
 Return the current value of the data loss counter and (atomically) reset it to 0. More...
 
- Static Public Member Functions inherited from ChimeraTK::Module
static ConfigReaderappConfig ()
 Obtain the ConfigReader instance of the application. More...
 

Protected Member Functions

VersionNumber getCurrentVersionNumber () const override
 Return the current version number which has been received with the last push-type read operation. More...
 
void setCurrentVersionNumber (VersionNumber) override
 Set the current version number. More...
 
DataValidity getDataValidity () const override
 Return the data validity flag. More...
 
void incrementDataFaultCounter () override
 Set the data validity flag to fault and increment the fault counter. More...
 
void decrementDataFaultCounter () override
 Decrement the fault counter and set the data validity flag to ok if the counter has reached 0. More...
 
std::list< EntityOwner * > getInputModulesRecursively ([[maybe_unused]] std::list< EntityOwner * > startList) override
 
size_t getCircularNetworkHash () const override
 Get the ID of the circular dependency network (0 if none). More...
 

Protected Attributes

Model::RootProxy _model
 The model of the application. More...
 
ConnectionMaker _cm {*this}
 Helper class to create connections. More...
 
std::list< boost::shared_ptr< InternalModule > > _internalModuleList
 List of InternalModules. More...
 
std::map< std::string, boost::shared_ptr< DeviceManager > > _deviceManagerMap
 Map of DeviceManagers. More...
 
bool _testFacilityRunApplicationCalled {false}
 Flag which is set by the TestFacility in runApplication() at the beginning. More...
 
bool _initialiseCalled {false}
 Flag whether initialise() has been called already, to make sure it doesn't get called twice. More...
 
bool _runCalled {false}
 Flag whether run() has been called already, to make sure it doesn't get called twice. More...
 
bool _enableDebugMakeConnections {false}
 Flag if debug output is enabled for creation of the variable connections. More...
 
std::map< size_t, size_t > _pvIdMap
 Map from ProcessArray uniqueId to the variable ID for control system variables. More...
 
detail::CircularDependencyDetector _circularDependencyDetector
 
detail::TestableMode _testableMode
 
std::unordered_set< const void * > _debugMode_variableList
 List of variables for which debug output was requested via enableVariableDebugging(). More...
 
std::atomic< size_t > _dataLossCounter {0}
 Counter for how many write() operations have overwritten unread data. More...
 
bool _debugDataLoss {false}
 Flag whether to debug data loss (as counted with the data loss counter). More...
 
std::atomic< LifeCycleState_lifeCycleState {LifeCycleState::initialisation}
 Life-cycle state of the application. More...
 
VersionNumber _startVersion
 Version number used at application start, e.g. More...
 
ApplicationModule_versionInfoProvider {nullptr}
 
std::map< size_t, std::atomic< uint64_t > > _circularNetworkInvalidityCounters
 Map of atomic invalidity counters for each circular dependency network. More...
 
std::map< size_t, std::list< EntityOwner * > > _circularDependencyNetworks
 The networks of circular dependencies, reachable by their hash, which serves as unique ID. More...
 
std::shared_ptr< Logger_logger {Logger::getSharedPtr()}
 Shared Pointer to central logger instance. More...
 
std::shared_ptr< ConfigReader_configReader
 Manager for Python-based ApplicationModules. More...
 
ConfigReader_defaultConfigReader {nullptr}
 
- Protected Attributes inherited from ChimeraTK::Module
EntityOwner_owner {nullptr}
 Owner of this instance. More...
 
- Protected Attributes inherited from ChimeraTK::EntityOwner
std::string _name
 The name of this instance. More...
 
std::string _description
 The description of this instance. More...
 
std::list< VariableNetworkNode_accessorList
 List of accessors owned by this instance. More...
 
std::list< Module * > _moduleList
 List of modules owned by this instance. More...
 
std::unordered_set< std::string > _tags
 List of tags to be added to all accessors and modules inside this module. More...
 
std::atomic< bool > _testableModeReached {false}
 Flag used by the testable mode to identify whether a thread within the EntityOwner has reached the point where the testable mode lock is acquired. More...
 

Friends

class Module
 
class VariableNetwork
 
class VariableNetworkNode
 
class VariableNetworkGraphDumpingVisitor
 
class VariableNetworkModuleGraphDumpingVisitor
 
class XMLGeneratorVisitor
 
struct StatusAggregator
 
struct detail::TestableMode
 
class NetworkVisitor
 
class ConnectionMaker
 
template<typename UserType >
class Accessor
 
template<typename UserType >
class ExceptionHandlingDecorator
 
class TestFacility
 
template<typename UserType >
class DebugPrintAccessorDecorator
 
template<typename UserType >
class MetaDataPropagatingRegisterDecorator
 
class ApplicationModule
 
struct detail::CircularDependencyDetector
 
struct ConfigReader
 

Additional Inherited Members

- Public Types inherited from ChimeraTK::EntityOwner
enum  ModuleType {
  ModuleType::ApplicationModule, ModuleType::ModuleGroup, ModuleType::VariableGroup, ModuleType::ControlSystem,
  ModuleType::Device, ModuleType::Invalid
}
 
- Static Public Attributes inherited from ChimeraTK::EntityOwner
static constexpr std::string_view namePrefixConstant {"/@CONST@"}
 Prefix for constants created by constant(). More...
 

Detailed Description

Examples
demoStatusMonitor.cc.

Definition at line 48 of file Application.h.

Constructor & Destructor Documentation

◆ Application()

Application::Application ( const std::string &  name)
explicit

The constructor takes the application name as an argument.

The name must have a non-zero length and must not contain any spaces or special characters. Use only alphanumeric characters and underscores.

Definition at line 25 of file Application.cc.

+ Here is the call graph for this function:

◆ ~Application()

Application::~Application ( )
override

Definition at line 64 of file Application.cc.

Member Function Documentation

◆ debugMakeConnections()

void ChimeraTK::Application::debugMakeConnections ( )
inline

Enable debug output for the ConnectionMaker.

Definition at line 128 of file Application.h.

+ Here is the caller graph for this function:

◆ decrementDataFaultCounter()

void ChimeraTK::Application::decrementDataFaultCounter ( )
inlineoverrideprotectedvirtual

Decrement the fault counter and set the data validity flag to ok if the counter has reached 0.

This function will be called by all input accessors when receiving the an ok update if the previous update was faulty. The caller of this function must ensure that calles to this function are paired to a previous call to incrementDataFaultCounter().

Implements ChimeraTK::EntityOwner.

Definition at line 315 of file Application.h.

+ Here is the caller graph for this function:

◆ enableDebugDataLoss()

void ChimeraTK::Application::enableDebugDataLoss ( )
inline

Enable debug output for lost data.

This will print to stdout every time data is lost in internal queues as it is counted with the DataLossCounter module. Do not enable in production environments. Do not call after initialisation phase of application.

Definition at line 148 of file Application.h.

◆ enableTestableMode()

void Application::enableTestableMode ( )

Enable the testable mode.

This allows to step-wise run the application using testableMode.step(). The application will start in paused state.

This function must be called before the application is initialised (i.e. before the call to initialise()).

Note: Enabling the testable mode will have a significant impact on the performance, since it will prevent any module threads to run at the same time!

Definition at line 74 of file Application.cc.

+ Here is the caller graph for this function:

◆ enableVariableDebugging()

void ChimeraTK::Application::enableVariableDebugging ( const VariableNetworkNode node)
inline

Enable debug output for a given variable.

Definition at line 139 of file Application.h.

+ Here is the call graph for this function:

◆ generateDOT()

void Application::generateDOT ( )

Instead of running the application, just initialise it and output the published variables to a DOT file.

Definition at line 254 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ generateXML()

void Application::generateXML ( )

Instead of running the application, just initialise it and output the published variables to an XML file.

Definition at line 244 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAndResetDataLossCounter()

size_t Application::getAndResetDataLossCounter ( )
static

Return the current value of the data loss counter and (atomically) reset it to 0.

Definition at line 96 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCircularNetworkHash()

size_t ChimeraTK::Application::getCircularNetworkHash ( ) const
inlineoverrideprotectedvirtual

Get the ID of the circular dependency network (0 if none).

This information is only available after the Application has finalised all connections.

Implements ChimeraTK::EntityOwner.

Definition at line 323 of file Application.h.

◆ getCircularNetworkInvalidityCounter()

size_t ChimeraTK::Application::getCircularNetworkInvalidityCounter ( size_t  circularNetworkHash) const
inline

Definition at line 179 of file Application.h.

◆ getConfigReader()

ConfigReader& ChimeraTK::Application::getConfigReader ( )
inline

Definition at line 189 of file Application.h.

+ Here is the caller graph for this function:

◆ getCurrentVersionNumber()

VersionNumber ChimeraTK::Application::getCurrentVersionNumber ( ) const
inlineoverrideprotectedvirtual

Return the current version number which has been received with the last push-type read operation.

Implements ChimeraTK::EntityOwner.

Definition at line 299 of file Application.h.

◆ getDataValidity()

DataValidity ChimeraTK::Application::getDataValidity ( ) const
inlineoverrideprotectedvirtual

Return the data validity flag.

If any This function will be called by all output accessors in their write functions.

Implements ChimeraTK::EntityOwner.

Definition at line 307 of file Application.h.

+ Here is the caller graph for this function:

◆ getDeviceManager()

boost::shared_ptr< DeviceManager > Application::getDeviceManager ( const std::string &  aliasOrCDD)

Return the DeviceManager for the given alias name or CDD.

If none exists so far, it will be created.

Definition at line 267 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFullDescription()

std::string ChimeraTK::Application::getFullDescription ( ) const
inlineoverridevirtual

Obtain the full description including the full description of the owner.

Implements ChimeraTK::EntityOwner.

Definition at line 134 of file Application.h.

◆ getInputModulesRecursively()

std::list<EntityOwner*> ChimeraTK::Application::getInputModulesRecursively ( [[maybe_unused] ] std::list< EntityOwner * >  startList)
inlineoverrideprotected

Definition at line 319 of file Application.h.

◆ getInstance()

Application & Application::getInstance ( )
static

Obtain instance of the application.

Will throw an exception if called before the instance has been created by the control system adapter, or if the instance is not based on the Application class.

Definition at line 261 of file Application.cc.

+ Here is the caller graph for this function:

◆ getLifeCycleState()

LifeCycleState ChimeraTK::Application::getLifeCycleState ( ) const
inline

Get the current LifeCycleState of the application.

Definition at line 169 of file Application.h.

◆ getModel()

Model::RootProxy ChimeraTK::Application::getModel ( )
inline

Return the root of the application model.

Definition at line 78 of file Application.h.

+ Here is the caller graph for this function:

◆ getModuleType()

ModuleType ChimeraTK::Application::getModuleType ( ) const
inlineoverridevirtual

Return the module type of this module, or in case of a VirtualModule the module type this VirtualModule was derived from.

Implements ChimeraTK::EntityOwner.

Definition at line 130 of file Application.h.

◆ getQualifiedName()

std::string ChimeraTK::Application::getQualifiedName ( ) const
inlineoverridevirtual

Get the fully qualified name of the module instance, i.e.

the name containing all module names further up in the hierarchy.

Implements ChimeraTK::EntityOwner.

Definition at line 132 of file Application.h.

◆ getStartVersion()

VersionNumber ChimeraTK::Application::getStartVersion ( ) const
inline

Return the start version.

The start version is the VersionNumber which all modules have initially (before receiving any data from push-type inputs).

Definition at line 175 of file Application.h.

+ Here is the caller graph for this function:

◆ getTestableMode()

detail::TestableMode& ChimeraTK::Application::getTestableMode ( )
inline

Get the TestableMode control object of this application.

Definition at line 117 of file Application.h.

+ Here is the caller graph for this function:

◆ getVersionInfoProvider()

ApplicationModule* ChimeraTK::Application::getVersionInfoProvider ( )
inline

Definition at line 176 of file Application.h.

+ Here is the caller graph for this function:

◆ hasInstance()

static bool ChimeraTK::Application::hasInstance ( )
inlinestatic

Check whether an instance of Application currently exists.

Definition at line 99 of file Application.h.

◆ incrementDataFaultCounter()

void ChimeraTK::Application::incrementDataFaultCounter ( )
inlineoverrideprotectedvirtual

Set the data validity flag to fault and increment the fault counter.

This function will be called by all input accessors when receiving the a faulty update if the previous update was ok. The caller of this function must ensure that calls to this function are paired to a subsequent call to decrementDataFaultCounter().

Implements ChimeraTK::EntityOwner.

Definition at line 311 of file Application.h.

+ Here is the caller graph for this function:

◆ incrementDataLossCounter()

void Application::incrementDataLossCounter ( const std::string &  name)
static

Increment counter for how many write() operations have overwritten unread data.

This function is normally not called by used code.

Definition at line 87 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initialise()

void Application::initialise ( )
override

Definition at line 106 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ optimiseUnmappedVariables()

void Application::optimiseUnmappedVariables ( const std::set< std::string > &  names)
override

Definition at line 123 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ registerThread()

void Application::registerThread ( const std::string &  name)
static

Register the thread in the application system and give it a name.

This should be done for all threads used by the application to help with debugging.

Definition at line 81 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ run()

void Application::run ( )
overridevirtual

Execute the module.

Reimplemented from ChimeraTK::Module.

Definition at line 134 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCurrentVersionNumber()

void ChimeraTK::Application::setCurrentVersionNumber ( VersionNumber  versionNumber)
inlineoverrideprotectedvirtual

Set the current version number.

This function is called by the push-type input accessors in their read functions.

Implements ChimeraTK::EntityOwner.

Definition at line 303 of file Application.h.

+ Here is the caller graph for this function:

◆ setVersionInfoProvider()

void ChimeraTK::Application::setVersionInfoProvider ( ApplicationModule provider)
inline

Definition at line 177 of file Application.h.

+ Here is the caller graph for this function:

◆ shutdown()

void Application::shutdown ( )
override

This will remove the global pointer to the instance and allows creating another instance afterwards.

This is mostly useful for writing tests, as it allows to run several applications sequentially in the same executable.

Note that any ApplicationModules etc. owned by this Application are no longer valid after destroying the Application and must be destroyed as well (or at least no longer used).

Examples
demoStatusMonitor.cc.

Definition at line 207 of file Application.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Function Documentation

◆ Accessor

template<typename UserType >
friend class Accessor
friend

Definition at line 206 of file Application.h.

◆ ApplicationModule

friend class ApplicationModule
friend

Definition at line 295 of file Application.h.

◆ ConfigReader

friend struct ConfigReader
friend

Definition at line 297 of file Application.h.

◆ ConnectionMaker

friend class ConnectionMaker
friend

Definition at line 203 of file Application.h.

◆ DebugPrintAccessorDecorator

template<typename UserType >
friend class DebugPrintAccessorDecorator
friend

Definition at line 292 of file Application.h.

◆ detail::CircularDependencyDetector

friend struct detail::CircularDependencyDetector
friend

Definition at line 296 of file Application.h.

◆ detail::TestableMode

friend struct detail::TestableMode
friend

Definition at line 201 of file Application.h.

◆ ExceptionHandlingDecorator

template<typename UserType >
friend class ExceptionHandlingDecorator
friend

Definition at line 209 of file Application.h.

◆ MetaDataPropagatingRegisterDecorator

template<typename UserType >
friend class MetaDataPropagatingRegisterDecorator
friend

Definition at line 294 of file Application.h.

◆ Module

friend class Module
friend

Definition at line 194 of file Application.h.

◆ NetworkVisitor

friend class NetworkVisitor
friend

Definition at line 202 of file Application.h.

◆ StatusAggregator

friend struct StatusAggregator
friend

Definition at line 200 of file Application.h.

◆ TestFacility

friend class TestFacility
friend

Definition at line 289 of file Application.h.

◆ VariableNetwork

friend class VariableNetwork
friend

Definition at line 195 of file Application.h.

◆ VariableNetworkGraphDumpingVisitor

friend class VariableNetworkGraphDumpingVisitor
friend

Definition at line 197 of file Application.h.

◆ VariableNetworkModuleGraphDumpingVisitor

friend class VariableNetworkModuleGraphDumpingVisitor
friend

Definition at line 198 of file Application.h.

◆ VariableNetworkNode

friend class VariableNetworkNode
friend

Definition at line 196 of file Application.h.

◆ XMLGeneratorVisitor

friend class XMLGeneratorVisitor
friend

Definition at line 199 of file Application.h.

Member Data Documentation

◆ _circularDependencyDetector

detail::CircularDependencyDetector ChimeraTK::Application::_circularDependencyDetector
protected

Definition at line 240 of file Application.h.

◆ _circularDependencyNetworks

std::map<size_t, std::list<EntityOwner*> > ChimeraTK::Application::_circularDependencyNetworks
protected

The networks of circular dependencies, reachable by their hash, which serves as unique ID.

Definition at line 270 of file Application.h.

◆ _circularNetworkInvalidityCounters

std::map<size_t, std::atomic<uint64_t> > ChimeraTK::Application::_circularNetworkInvalidityCounters
protected

Map of atomic invalidity counters for each circular dependency network.

The key is the hash of network which serves as a unique identifier. The invalidity counter is atomic so it can be accessed from all modules in the network.

Definition at line 266 of file Application.h.

◆ _cm

ConnectionMaker ChimeraTK::Application::_cm {*this}
protected

Helper class to create connections.

Definition at line 215 of file Application.h.

◆ _configReader

std::shared_ptr<ConfigReader> ChimeraTK::Application::_configReader
protected

Manager for Python-based ApplicationModules.

The Application-default config reader instance

Definition at line 286 of file Application.h.

◆ _dataLossCounter

std::atomic<size_t> ChimeraTK::Application::_dataLossCounter {0}
protected

Counter for how many write() operations have overwritten unread data.

Definition at line 249 of file Application.h.

◆ _debugDataLoss

bool ChimeraTK::Application::_debugDataLoss {false}
protected

Flag whether to debug data loss (as counted with the data loss counter).

Definition at line 252 of file Application.h.

◆ _debugMode_variableList

std::unordered_set<const void*> ChimeraTK::Application::_debugMode_variableList
protected

List of variables for which debug output was requested via enableVariableDebugging().

Stored is the unique id of the VariableNetworkNode.

Definition at line 246 of file Application.h.

◆ _defaultConfigReader

ConfigReader* ChimeraTK::Application::_defaultConfigReader {nullptr}
protected

Definition at line 287 of file Application.h.

◆ _deviceManagerMap

std::map<std::string, boost::shared_ptr<DeviceManager> > ChimeraTK::Application::_deviceManagerMap
protected

Map of DeviceManagers.

The alias name resp. CDD is the key.

Definition at line 221 of file Application.h.

◆ _enableDebugMakeConnections

bool ChimeraTK::Application::_enableDebugMakeConnections {false}
protected

Flag if debug output is enabled for creation of the variable connections.

Definition at line 234 of file Application.h.

◆ _initialiseCalled

bool ChimeraTK::Application::_initialiseCalled {false}
protected

Flag whether initialise() has been called already, to make sure it doesn't get called twice.

Definition at line 228 of file Application.h.

◆ _internalModuleList

std::list<boost::shared_ptr<InternalModule> > ChimeraTK::Application::_internalModuleList
protected

List of InternalModules.

Definition at line 218 of file Application.h.

◆ _lifeCycleState

std::atomic<LifeCycleState> ChimeraTK::Application::_lifeCycleState {LifeCycleState::initialisation}
protected

Life-cycle state of the application.

Definition at line 255 of file Application.h.

◆ _logger

std::shared_ptr<Logger> ChimeraTK::Application::_logger {Logger::getSharedPtr()}
protected

Shared Pointer to central logger instance.

Keeping this here prevents the Logger to be destroyed before the application.

Definition at line 276 of file Application.h.

◆ _model

Model::RootProxy ChimeraTK::Application::_model
protected

The model of the application.

Definition at line 212 of file Application.h.

◆ _pvIdMap

std::map<size_t, size_t> ChimeraTK::Application::_pvIdMap
protected

Map from ProcessArray uniqueId to the variable ID for control system variables.

This is required for the TestFacility.

Definition at line 238 of file Application.h.

◆ _runCalled

bool ChimeraTK::Application::_runCalled {false}
protected

Flag whether run() has been called already, to make sure it doesn't get called twice.

Definition at line 231 of file Application.h.

◆ _startVersion

VersionNumber ChimeraTK::Application::_startVersion
protected

Version number used at application start, e.g.

to propagate initial values

Definition at line 258 of file Application.h.

◆ _testableMode

detail::TestableMode ChimeraTK::Application::_testableMode
protected

Definition at line 241 of file Application.h.

◆ _testFacilityRunApplicationCalled

bool ChimeraTK::Application::_testFacilityRunApplicationCalled {false}
protected

Flag which is set by the TestFacility in runApplication() at the beginning.

This is used to make sure runApplication() is called by the TestFacility and not manually.

Definition at line 225 of file Application.h.

◆ _versionInfoProvider

ApplicationModule* ChimeraTK::Application::_versionInfoProvider {nullptr}
protected

Definition at line 260 of file Application.h.


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