![]() |
The Gaudi Framework
master (e4085f78)
|
#include <GaudiHive/AlgResourcePool.h>
Public Member Functions | |
~AlgResourcePool () override | |
StatusCode | start () override |
StatusCode | initialize () override |
StatusCode | acquireAlgorithm (std::string_view name, IAlgorithm *&algo, bool blocking=false) override |
Acquire a certain algorithm using its name. More... | |
StatusCode | releaseAlgorithm (std::string_view name, IAlgorithm *&algo) override |
Release a certain algorithm. More... | |
StatusCode | acquireResource (std::string_view name) override |
Acquire a certain resource. More... | |
StatusCode | releaseResource (std::string_view name) override |
Release a certain resource. More... | |
std::list< IAlgorithm * > | getFlatAlgList () override |
std::list< IAlgorithm * > | getTopAlgList () override |
StatusCode | stop () override |
StatusCode | finalize () override |
![]() | |
void * | i_cast (const InterfaceID &tid) const override |
Implementation of IInterface::i_cast. More... | |
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override |
Implementation of IInterface::queryInterface. More... | |
std::vector< std::string > | getInterfaceNames () const override |
Implementation of IInterface::getInterfaceNames. More... | |
![]() | |
const std::string & | name () const override |
Retrieve name of the service More... | |
StatusCode | configure () override |
StatusCode | initialize () override |
StatusCode | start () override |
StatusCode | stop () override |
StatusCode | finalize () override |
StatusCode | terminate () override |
Gaudi::StateMachine::State | FSMState () const override |
Gaudi::StateMachine::State | targetFSMState () const override |
StatusCode | reinitialize () override |
StatusCode | restart () override |
StatusCode | sysInitialize () override |
Initialize Service More... | |
StatusCode | sysStart () override |
Initialize Service More... | |
StatusCode | sysStop () override |
Initialize Service More... | |
StatusCode | sysFinalize () override |
Finalize Service More... | |
StatusCode | sysReinitialize () override |
Re-initialize the Service. More... | |
StatusCode | sysRestart () override |
Re-initialize the Service. More... | |
Service (std::string name, ISvcLocator *svcloc) | |
Standard Constructor More... | |
SmartIF< ISvcLocator > & | serviceLocator () const override |
Retrieve pointer to service locator More... | |
template<class T > | |
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const |
Access a service by name, creating it if it doesn't already exist. More... | |
template<class T > | |
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const |
template<typename IFace = IService> | |
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const |
template<class T > | |
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const |
Access a service by name and type, creating it if it doesn't already exist. More... | |
template<class T > | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none") |
template<class T > | |
StatusCode | declareTool (ToolHandle< T > &handle, bool createIf=true) |
template<class T > | |
StatusCode | declareTool (ToolHandle< T > &handle, const std::string &toolTypeAndName, bool createIf=true) |
Declare used tool. More... | |
template<class T > | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none") |
template<class T > | |
void | addToolsArray (ToolHandleArray< T > &hndlArr) |
const std::vector< IAlgTool * > & | tools () const |
SmartIF< IAuditorSvc > & | auditorSvc () const |
The standard auditor service.May not be invoked before sysInitialize() has been invoked. More... | |
![]() | |
PropertyHolder ()=default | |
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop) |
Declare a property. More... | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none") |
Declare a PropertyBase instance setting name and documentation. More... | |
requires (!Gaudi::Details::is_gaudi_property_v< TYPE >) Gaudi | |
Helper to wrap a regular data member and use it as a regular property. More... | |
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") |
Declare a remote property. More... | |
StatusCode | setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p) override |
set the property from another property with a different name More... | |
StatusCode | setProperty (const std::string &s) override |
set the property from the formatted string More... | |
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) |
Set the property from a property. More... | |
virtual StatusCode | setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p)=0 |
Set the property from a property with a different name. More... | |
virtual StatusCode | setProperty (const std::string &s)=0 |
Set the property by string. More... | |
StatusCode | setProperty (const std::string &name, const char *v) |
Special case for string literals. More... | |
StatusCode | setProperty (const std::string &name, const std::string &v) |
Special case for std::string. More... | |
StatusCode | setPropertyRepr (const std::string &n, const std::string &r) override |
set the property from name and value string representation More... | |
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override |
get the property More... | |
const Gaudi::Details::PropertyBase & | getProperty (std::string_view name) const override |
get the property by name More... | |
StatusCode | getProperty (std::string_view n, std::string &v) const override |
convert the property to the string More... | |
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override |
get all properties More... | |
bool | hasProperty (std::string_view name) const override |
Return true if we have a property with the given name. More... | |
Gaudi::Details::PropertyBase * | property (std::string_view name) const |
\fixme property and bindPropertiesTo should be protected More... | |
void | bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc) |
PropertyHolder (const PropertyHolder &)=delete | |
PropertyHolder & | operator= (const PropertyHolder &)=delete |
![]() | |
MSG::Level | msgLevel () const |
get the cached level (originally extracted from the embedded MsgStream) More... | |
bool | msgLevel (MSG::Level lvl) const |
get the output level from the embedded MsgStream More... | |
Private Types | |
typedef tbb::concurrent_bounded_queue< IAlgorithm * > | concurrentQueueIAlgPtr |
typedef std::list< SmartIF< IAlgorithm > > | ListAlg |
typedef boost::dynamic_bitset | state_type |
Private Member Functions | |
StatusCode | decodeTopAlgs () |
Decode the top Algorithm list. More... | |
StatusCode | flattenSequencer (Gaudi::Algorithm *sequencer, ListAlg &alglist, unsigned int recursionDepth=0) |
Recursively flatten an algList. More... | |
void | dumpInstanceMisses () const |
Dump recorded Algorithm instance misses. More... | |
Private Attributes | |
std::mutex | m_resource_mutex |
state_type | m_available_resources { 0 } |
std::map< size_t, concurrentQueueIAlgPtr * > | m_algqueue_map |
std::map< size_t, state_type > | m_resource_requirements |
std::map< size_t, size_t > | m_n_of_allowed_instances |
std::map< size_t, unsigned int > | m_n_of_created_instances |
std::map< std::string_view, unsigned int > | m_resource_indices |
std::unordered_map< std::string_view, unsigned int > | m_algInstanceMisses |
Counters for Algorithm instance misses. More... | |
Gaudi::Property< bool > | m_lazyCreation { this, "CreateLazily", false, "" } |
Gaudi::Property< std::vector< std::string > > | m_topAlgNames |
Gaudi::Property< bool > | m_overrideUnClonable |
Gaudi::Property< bool > | m_countAlgInstMisses |
ListAlg | m_algList |
The list of all algorithms created within the Pool which are not top. More... | |
ListAlg | m_topAlgList |
The list of top algorithms. More... | |
ListAlg | m_flatUniqueAlgList |
The flat list of algorithms w/o clones. More... | |
std::list< IAlgorithm * > | m_flatUniqueAlgPtrList |
The flat list of algorithms w/o clones which is returned. More... | |
std::list< IAlgorithm * > | m_topAlgPtrList |
The top list of algorithms. More... | |
Additional Inherited Members | |
![]() | |
using | base_class = extends |
Typedef to this class. More... | |
using | extend_interfaces_base = extend_interfaces< Interfaces... > |
Typedef to the base of this class. More... | |
![]() | |
using | Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)> |
![]() | |
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > > |
Typedef used to refer to this class from derived classes, as in. More... | |
![]() | |
using | base_class = CommonMessaging |
![]() | |
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type |
take union of the ext_iids of all Interfaces... More... | |
![]() | |
std::vector< IAlgTool * > & | tools () |
~Service () override | |
Standard Destructor More... | |
int | outputLevel () const |
get the Service's output level More... | |
![]() | |
MSG::Level | setUpMessaging () const |
Set up local caches. More... | |
MSG::Level | resetMessaging () |
Reinitialize internal states. More... | |
void | updateMsgStreamOutputLevel (int level) |
Update the output level of the cached MsgStream. More... | |
![]() | |
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE |
Service state More... | |
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE |
Service state More... | |
Gaudi::Property< int > | m_outputLevel { this, "OutputLevel", MSG::NIL, "output level" } |
flag indicating whether ToolHandle tools have been added to m_tools More... | |
Gaudi::Property< bool > | m_auditInit { this, "AuditServices", false, "[[deprecated]] unused" } |
Gaudi::Property< bool > | m_auditorInitialize { this, "AuditInitialize", false, "trigger auditor on initialize()" } |
Gaudi::Property< bool > | m_auditorStart { this, "AuditStart", false, "trigger auditor on start()" } |
Gaudi::Property< bool > | m_auditorStop { this, "AuditStop", false, "trigger auditor on stop()" } |
Gaudi::Property< bool > | m_auditorFinalize { this, "AuditFinalize", false, "trigger auditor on finalize()" } |
Gaudi::Property< bool > | m_auditorReinitialize { this, "AuditReinitialize", false, "trigger auditor on reinitialize()" } |
Gaudi::Property< bool > | m_auditorRestart { this, "AuditRestart", false, "trigger auditor on restart()" } |
Gaudi::Property< bool > | m_autoRetrieveTools |
Gaudi::Property< bool > | m_checkToolDeps |
SmartIF< IAuditorSvc > | m_pAuditorSvc |
Auditor Service More... | |
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface. It either creates all instances up front or lazily. Internal bookkeeping is done via hashes of the algorithm names.
Definition at line 38 of file AlgResourcePool.h.
|
private |
Definition at line 63 of file AlgResourcePool.h.
|
private |
Definition at line 64 of file AlgResourcePool.h.
|
private |
Definition at line 65 of file AlgResourcePool.h.
|
override |
Definition at line 29 of file AlgResourcePool.cpp.
|
override |
Acquire a certain algorithm using its name.
Definition at line 80 of file AlgResourcePool.cpp.
|
override |
|
private |
Decode the top Algorithm list.
Definition at line 211 of file AlgResourcePool.cpp.
|
private |
Dump recorded Algorithm instance misses.
Definition at line 386 of file AlgResourcePool.cpp.
|
override |
Definition at line 435 of file AlgResourcePool.cpp.
|
private |
Recursively flatten an algList.
Definition at line 178 of file AlgResourcePool.cpp.
|
override |
Definition at line 371 of file AlgResourcePool.cpp.
|
override |
Definition at line 379 of file AlgResourcePool.cpp.
|
override |
Definition at line 39 of file AlgResourcePool.cpp.
|
override |
|
override |
|
override |
Definition at line 62 of file AlgResourcePool.cpp.
|
override |
Definition at line 417 of file AlgResourcePool.cpp.
|
private |
Counters for Algorithm instance misses.
Definition at line 85 of file AlgResourcePool.h.
|
private |
The list of all algorithms created within the Pool which are not top.
Definition at line 97 of file AlgResourcePool.h.
|
private |
Definition at line 70 of file AlgResourcePool.h.
|
private |
Definition at line 69 of file AlgResourcePool.h.
|
private |
Definition at line 92 of file AlgResourcePool.h.
|
private |
The flat list of algorithms w/o clones.
Definition at line 103 of file AlgResourcePool.h.
|
private |
The flat list of algorithms w/o clones which is returned.
Definition at line 106 of file AlgResourcePool.h.
|
private |
Definition at line 87 of file AlgResourcePool.h.
|
private |
Definition at line 72 of file AlgResourcePool.h.
|
private |
Definition at line 73 of file AlgResourcePool.h.
|
private |
Definition at line 90 of file AlgResourcePool.h.
|
private |
Definition at line 74 of file AlgResourcePool.h.
|
private |
Definition at line 67 of file AlgResourcePool.h.
|
private |
Definition at line 71 of file AlgResourcePool.h.
|
private |
The list of top algorithms.
Definition at line 100 of file AlgResourcePool.h.
|
private |
Definition at line 88 of file AlgResourcePool.h.
|
private |
The top list of algorithms.
Definition at line 109 of file AlgResourcePool.h.