DataOnDemandSvc Class Reference

The DataOnDemandSvc listens to incidents typically triggered by the data service of the configurable name "IncidentName". More...

#include <src/IncidentSvc/DataOnDemandSvc.h>

Inheritance diagram for DataOnDemandSvc:
Collaboration diagram for DataOnDemandSvc:

Classes

struct  Leaf
 
struct  Node
 Helper class of the DataOnDemandSvc. More...
 
struct  Protection
 Helper class of the DataOnDemandSvc. More...
 

Public Types

typedef std::vector< std::string > Setup
 
typedef TClass * ClassH
 
typedef GaudiUtils::HashMap< Gaudi::StringKey, NodeNodeMap
 
typedef GaudiUtils::HashMap< Gaudi::StringKey, LeafAlgMap
 
- Public Types inherited from extends1< Service, IIncidentListener >
typedef extends1 base_class
 Typedef to this class. More...
 
typedef extends1 base_class
 Typedef to this class. More...
 
typedef extend_interfaces1< IIncidentListenerextend_interfaces_base
 Typedef to the base of this class. More...
 
typedef extend_interfaces1< IIncidentListenerextend_interfaces_base
 Typedef to the base of this class. More...
 
typedef extend_interfaces_base::ext_iids interfaces
 MPL set of all the implemented interfaces. More...
 
typedef extend_interfaces_base::ext_iids interfaces
 MPL set of all the implemented interfaces. More...
 
- Public Types inherited from Service
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > Factory
 
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > Factory
 
- Public Types inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
typedef CommonMessaging base_class
 
typedef CommonMessaging base_class
 
- Public Types inherited from implements3< IService, IProperty, IStateful >
typedef implements3 base_class
 Typedef to this class. More...
 
typedef implements3 base_class
 Typedef to this class. More...
 
typedef extend_interfaces3< IService, IProperty, IStatefulextend_interfaces_base
 Typedef to the base of this class. More...
 
typedef extend_interfaces3< IService, IProperty, IStatefulextend_interfaces_base
 Typedef to the base of this class. More...
 
typedef extend_interfaces_base::ext_iids interfaces
 MPL set of all the implemented interfaces. More...
 
typedef extend_interfaces_base::ext_iids interfaces
 MPL set of all the implemented interfaces. More...
 
- Public Types inherited from extend_interfaces3< IService, IProperty, IStateful >
typedef mpl::fold< typename IService::iid::iids::type, typename mpl::fold< typename IProperty::iid::iids::type, typename IStateful::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type ext_iids
 MPL set of interfaces extended by this one. More...
 
typedef mpl::fold< typename IService::iid::iids::type, typename mpl::fold< typename IProperty::iid::iids::type, typename IStateful::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type ext_iids
 MPL set of interfaces extended by this one. More...
 
- Public Types inherited from IInterface
enum  Status {
  SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR,
  SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR
}
 Return status. More...
 
enum  Status {
  SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR,
  SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR
}
 Return status. More...
 
typedef Gaudi::InterfaceId< IInterface, 0, 0 > iid
 Interface ID. More...
 
typedef mpl::set1< iidext_iids
 Extra interfaces. More...
 
typedef Gaudi::InterfaceId< IInterface, 0, 0 > iid
 Interface ID. More...
 
typedef mpl::set1< iidext_iids
 Extra interfaces. More...
 
- Public Types inherited from extend_interfaces1< IIncidentListener >
typedef IIncidentListener::iid::iids::type ext_iids
 MPL set of interfaces extended by this one. More...
 
typedef IIncidentListener::iid::iids::type ext_iids
 MPL set of interfaces extended by this one. More...
 

Public Member Functions

virtual StatusCode initialize ()
 Inherited Service overrides: Service initialization. More...
 
virtual StatusCode finalize ()
 Inherited Service overrides: Service finalization. More...
 
virtual StatusCode reinitialize ()
 Inherited Service overrides: Service reinitialization. More...
 
virtual void handle (const Incident &incident)
 IIncidentListener interfaces overrides: incident handling. More...
 
 DataOnDemandSvc (const std::string &name, ISvcLocator *svc)
 Standard initializing service constructor. More...
 
virtual ~DataOnDemandSvc ()
 Standard destructor. More...
 
void update_1 (Property &p)
 
void update_2 (Property &p)
 
void update_3 (Property &p)
 
void update_dump (Property &)
 update handler for 'Dump' property More...
 
- Public Member Functions inherited from extends1< Service, IIncidentListener >
 extends1 (A1 a1, A2 a2, A3 a3)
 Templated constructor with 3 arguments. More...
 
 extends1 (A1 a1, A2 a2)
 Templated constructor with 2 arguments. More...
 
 extends1 (A1 a1)
 Templated constructor with 1 argument. More...
 
 extends1 ()
 Default constructor. More...
 
 extends1 (A1 a1, A2 a2, A3 a3)
 Templated constructor with 3 arguments. More...
 
 extends1 (A1 a1, A2 a2)
 Templated constructor with 2 arguments. More...
 
 extends1 (A1 a1)
 Templated constructor with 1 argument. More...
 
 extends1 ()
 Default constructor. More...
 
virtual void * i_cast (const InterfaceID &tid) const
 Implementation of IInterface::i_cast. More...
 
virtual void * i_cast (const InterfaceID &tid) const
 Implementation of IInterface::i_cast. More...
 
virtual StatusCode queryInterface (const InterfaceID &ti, void **pp)
 Implementation of IInterface::queryInterface. More...
 
virtual StatusCode queryInterface (const InterfaceID &ti, void **pp)
 Implementation of IInterface::queryInterface. More...
 
virtual std::vector< std::string > getInterfaceNames () const
 Implementation of IInterface::getInterfaceNames. More...
 
virtual std::vector< std::string > getInterfaceNames () const
 Implementation of IInterface::getInterfaceNames. More...
 
virtual ~extends1 ()
 Virtual destructor. More...
 
virtual ~extends1 ()
 Virtual destructor. More...
 
- Public Member Functions inherited from Service
virtual unsigned long release ()
 Release Interface instance. More...
 
virtual const std::string & name () const
 Retrieve name of the service. More...
 
virtual StatusCode configure ()
 Configuration (from OFFLINE to CONFIGURED). More...
 
virtual StatusCode start ()
 Start (from INITIALIZED to RUNNING). More...
 
virtual StatusCode stop ()
 Stop (from RUNNING to INITIALIZED). More...
 
virtual StatusCode terminate ()
 Initialization (from CONFIGURED to OFFLINE). More...
 
virtual Gaudi::StateMachine::State FSMState () const
 Get the current state. More...
 
virtual Gaudi::StateMachine::State targetFSMState () const
 When we are in the middle of a transition, get the state where the transition is leading us. More...
 
virtual StatusCode restart ()
 Initialization (from RUNNING to RUNNING, via INITIALIZED). More...
 
virtual StatusCode sysInitialize ()
 Initialize Service. More...
 
virtual StatusCode sysStart ()
 Initialize Service. More...
 
virtual StatusCode sysStop ()
 Initialize Service. More...
 
virtual StatusCode sysFinalize ()
 Finalize Service. More...
 
virtual StatusCode sysReinitialize ()
 Re-initialize the Service. More...
 
virtual StatusCode sysRestart ()
 Re-initialize the Service. More...
 
virtual StatusCode setProperty (const Property &p)
 Set the property by property. More...
 
virtual StatusCode setProperty (const std::string &s)
 Set the property by string. More...
 
virtual StatusCode setProperty (const std::string &n, const std::string &v)
 Set the property by std::string. More...
 
virtual StatusCode getProperty (Property *p) const
 Get the property by property. More...
 
virtual const PropertygetProperty (const std::string &name) const
 Get the property by name. More...
 
virtual StatusCode getProperty (const std::string &n, std::string &v) const
 Get the property by std::string. More...
 
virtual const std::vector< Property * > & getProperties () const
 Get list of properties. More...
 
virtual bool hasProperty (const std::string &name) const
 Return true if we have a property with the given name. More...
 
template<class TYPE >
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
 Service (const std::string &name, ISvcLocator *svcloc)
 Standard Constructor. More...
 
SmartIF< ISvcLocator > & serviceLocator () const
 Retrieve pointer to service locator. More...
 
StatusCode setProperties ()
 Method for setting declared properties to the values specified for the job. 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<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 >
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
 Declare the named property. More...
 
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
 Declare remote named properties. More...
 
SmartIF< IAuditorSvc > & auditorSvc () const
 The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
 
virtual unsigned long release ()
 Release Interface instance. More...
 
virtual const std::string & name () const
 Retrieve name of the service. More...
 
virtual StatusCode configure ()
 Configuration (from OFFLINE to CONFIGURED). More...
 
virtual StatusCode start ()
 Start (from INITIALIZED to RUNNING). More...
 
virtual StatusCode stop ()
 Stop (from RUNNING to INITIALIZED). More...
 
virtual StatusCode terminate ()
 Initialization (from CONFIGURED to OFFLINE). More...
 
virtual Gaudi::StateMachine::State FSMState () const
 Get the current state. More...
 
virtual Gaudi::StateMachine::State targetFSMState () const
 When we are in the middle of a transition, get the state where the transition is leading us. More...
 
virtual StatusCode restart ()
 Initialization (from RUNNING to RUNNING, via INITIALIZED). More...
 
virtual StatusCode sysInitialize ()
 Initialize Service. More...
 
virtual StatusCode sysStart ()
 Initialize Service. More...
 
virtual StatusCode sysStop ()
 Initialize Service. More...
 
virtual StatusCode sysFinalize ()
 Finalize Service. More...
 
virtual StatusCode sysReinitialize ()
 Re-initialize the Service. More...
 
virtual StatusCode sysRestart ()
 Re-initialize the Service. More...
 
virtual StatusCode setProperty (const Property &p)
 Set the property by property. More...
 
virtual StatusCode setProperty (const std::string &s)
 Set the property by string. More...
 
virtual StatusCode setProperty (const std::string &n, const std::string &v)
 Set the property by std::string. More...
 
virtual StatusCode getProperty (Property *p) const
 Get the property by property. More...
 
virtual const PropertygetProperty (const std::string &name) const
 Get the property by name. More...
 
virtual StatusCode getProperty (const std::string &n, std::string &v) const
 Get the property by std::string. More...
 
virtual const std::vector< Property * > & getProperties () const
 Get list of properties. More...
 
virtual bool hasProperty (const std::string &name) const
 Return true if we have a property with the given name. More...
 
template<class TYPE >
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
 Service (const std::string &name, ISvcLocator *svcloc)
 Standard Constructor. More...
 
SmartIF< ISvcLocator > & serviceLocator () const
 Retrieve pointer to service locator. More...
 
StatusCode setProperties ()
 Method for setting declared properties to the values specified for the job. 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<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 >
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
 Declare the named property. More...
 
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
 Declare remote named properties. More...
 
SmartIF< IAuditorSvc > & auditorSvc () const
 The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
 
- Public Member Functions inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
 CommonMessaging (const A1 &a1, const A2 &a2, const A3 &a3)
 Templated constructor with 3 arguments. More...
 
 CommonMessaging (const A1 &a1, const A2 &a2)
 Templated constructor with 2 arguments. More...
 
 CommonMessaging (const A1 &a1)
 Templated constructor with 1 argument. More...
 
 CommonMessaging ()
 Default constructor. More...
 
 CommonMessaging (const A1 &a1, const A2 &a2, const A3 &a3)
 Templated constructor with 3 arguments. More...
 
 CommonMessaging (const A1 &a1, const A2 &a2)
 Templated constructor with 2 arguments. More...
 
 CommonMessaging (const A1 &a1)
 Templated constructor with 1 argument. More...
 
 CommonMessaging ()
 Default constructor. More...
 
virtual ~CommonMessaging ()
 Virtual destructor. More...
 
virtual ~CommonMessaging ()
 Virtual destructor. More...
 
SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MSG::Level msgLevel () const
 get the output level from the embedded MsgStream More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 
MSG::Level msgLevel () const
 get the output level from the embedded MsgStream More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 
- Public Member Functions inherited from extend_interfaces3< IService, IProperty, IStateful >
virtual ~extend_interfaces3 ()
 Virtual destructor. More...
 
virtual ~extend_interfaces3 ()
 Virtual destructor. More...
 
- Public Member Functions inherited from IService
 DeclareInterfaceID (IService, 3, 0)
 InterfaceID. More...
 
virtual ~IService ()
 virtual destructor More...
 
 DeclareInterfaceID (IService, 3, 0)
 InterfaceID. More...
 
virtual ~IService ()
 virtual destructor More...
 
- Public Member Functions inherited from INamedInterface
 DeclareInterfaceID (INamedInterface, 1, 0)
 InterfaceID. More...
 
virtual ~INamedInterface ()
 Virtual destructor (always needed for abstract classes). More...
 
 DeclareInterfaceID (INamedInterface, 1, 0)
 InterfaceID. More...
 
virtual ~INamedInterface ()
 Virtual destructor (always needed for abstract classes). More...
 
- Public Member Functions inherited from IInterface
virtual unsigned long addRef ()=0
 Increment the reference count of Interface instance. More...
 
virtual unsigned long refCount () const =0
 Current reference count. More...
 
virtual ~IInterface ()
 Virtual destructor. More...
 
virtual unsigned long addRef ()=0
 Increment the reference count of Interface instance. More...
 
virtual unsigned long refCount () const =0
 Current reference count. More...
 
virtual ~IInterface ()
 Virtual destructor. More...
 
- Public Member Functions inherited from IProperty
 DeclareInterfaceID (IProperty, 2, 1)
 InterfaceID. More...
 
 DeclareInterfaceID (IProperty, 2, 1)
 InterfaceID. More...
 
- Public Member Functions inherited from IStateful
 DeclareInterfaceID (IStateful, 1, 0)
 InterfaceID. More...
 
virtual ~IStateful ()
 
 DeclareInterfaceID (IStateful, 1, 0)
 InterfaceID. More...
 
virtual ~IStateful ()
 
- Public Member Functions inherited from extend_interfaces1< IIncidentListener >
virtual ~extend_interfaces1 ()
 Virtual destructor. More...
 
virtual ~extend_interfaces1 ()
 Virtual destructor. More...
 
- Public Member Functions inherited from IIncidentListener
 DeclareInterfaceID (IIncidentListener, 2, 0)
 InterfaceID. More...
 
 DeclareInterfaceID (IIncidentListener, 2, 0)
 InterfaceID. More...
 

Protected Member Functions

StatusCode configureHandler (Leaf &leaf)
 Configure handler for leaf. More...
 
StatusCode execHandler (const std::string &tag, Leaf &leaf)
 Execute leaf handler (algorithm) More...
 
StatusCode execHandler (const std::string &tag, Node &node)
 Execute node handler (simple object creation using seal reflection) More...
 
StatusCode setupNodeHandlers ()
 Initialize node handlers. More...
 
StatusCode setupAlgHandlers ()
 Initialize leaf handlers. More...
 
StatusCode setup ()
 Setup routine (called by (re-) initialize. More...
 
void i_setNodeHandler (const std::string &name, const std::string &type)
 Internal method to initialize a node handler. More...
 
StatusCode i_setAlgHandler (const std::string &name, const Gaudi::Utils::TypeNameString &alg)
 Internal method to initialize an algorithm handler. More...
 
StatusCode update ()
 update the handlers More...
 
MsgStreamstream () const
 get the message stream More...
 
void dump (const MSG::Level level, const bool mode=true) const
 dump the content of DataOnDemand service More...
 
- Protected Member Functions inherited from Service
virtual ~Service ()
 Standard Destructor. More...
 
int outputLevel () const
 get the Service's output level More...
 
virtual ~Service ()
 Standard Destructor. More...
 
int outputLevel () const
 get the Service's output level More...
 
- Protected Member Functions inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 

Private Types

typedef std::map< std::string, std::string > Map
 

Private Attributes

SmartIF< IIncidentSvcm_incSvc
 Incident service. More...
 
SmartIF< IAlgManagerm_algMgr
 Algorithm manager. More...
 
SmartIF< IDataProviderSvcm_dataSvc
 Data provider reference. More...
 
SmartIF< IToolSvcm_toolSvc
 Data provider reference. More...
 
std::string m_trapType
 Trap name. More...
 
std::string m_dataSvcName
 Data service name. More...
 
bool m_partialPath
 Flag to allow for the creation of partial leaves. More...
 
bool m_dump
 flag to force the printout More...
 
bool m_init
 flag to warm up the configuration More...
 
bool m_allowInitFailure
 flag to allow DataOnDemand initialization to succeed even if the (pre)initialization of the algorithms fails (m_init). More...
 
Setup m_algMapping
 Mapping to algorithms. More...
 
Setup m_nodeMapping
 Mapping to nodes. More...
 
AlgMap m_algs
 Map of algorithms to handle incidents. More...
 
NodeMap m_nodes
 Map of "empty" objects to be placed as intermediate nodes. More...
 
Map m_algMap
 the major configuration property { 'data' : 'algorithm' } More...
 
Map m_nodeMap
 the major configuration property { 'data' : 'type' } More...
 
bool m_updateRequired
 
std::string m_prefix
 
MsgStreamm_log
 
ChronoEntity m_total
 
ulonglong m_statAlg
 
ulonglong m_statNode
 
ulonglong m_stat
 
ChronoEntity m_timer_nodes
 
ChronoEntity m_timer_algs
 
ChronoEntity m_timer_all
 
bool m_locked_nodes
 
bool m_locked_algs
 
bool m_locked_all
 
std::vector< std::string > m_nodeMapTools
 
std::list< IDODNodeMapper * > m_nodeMappers
 
std::vector< std::string > m_algMapTools
 
std::list< IDODAlgMapper * > m_algMappers
 

Additional Inherited Members

- Static Public Member Functions inherited from IInterface
static const InterfaceIDinterfaceID ()
 Return an instance of InterfaceID identifying the interface. More...
 
static const InterfaceIDinterfaceID ()
 Return an instance of InterfaceID identifying the interface. More...
 
- Protected Attributes inherited from Service
IntegerProperty m_outputLevel
 Service output level. More...
 
Gaudi::StateMachine::State m_state
 Service state. More...
 
Gaudi::StateMachine::State m_targetState
 Service state. More...
 
- Protected Attributes inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
SmartIF< IMessageSvcm_msgsvc
 Pointer to the message service;. More...
 
std::auto_ptr< MsgStreamm_msgStream
 The predefined message stream. More...
 
bool m_streamWithService
 Flag to create a new MsgStream if it was created without the message service. More...
 

Detailed Description

The DataOnDemandSvc listens to incidents typically triggered by the data service of the configurable name "IncidentName".

In the job options handlers can be declared, which allow to configure this service. Such handlers are either:

  • Node handlers, if objects other than the default object type have to be instantiated. DataOnDemandSvc.Nodes = { "DATA='/Event/Rec' TYPE='DataObject'", "DATA='/Event/Rec/Muon' TYPE='DataObject'" };
  • Leaf handlers (Algorithms), which get instantiated and executed on demand. DataOnDemandSvc.Algorithms = { "DATA='/Event/Rec/Muon/Digits' TYPE='MuonDigitAlg/MyMuonDigits'" }; If the algorithm name is omitted the class name will be the instance name.

The handlers only get called if the exact path matches. In the event already the partial path to any handler is missing a leaf handler may be triggered, which includes the partial paths ( DataOnDemandSvc.UsePreceedingPath = true )

2006-10-15: New options (using map-like semantics:)

{ "Phys/StdLoosePions/Particles" : "PreLoadParticles/StdLoosePions" ,
"Phys/StdLoosePions/Vertioces" : "PreLoadParticles/StdLoosePions" } ;
{ "Phys" : "DataObject" ,
"MC" : "DataObject" } ;

New treatment of preceding paths. for each registered leaf or node the all parent nodes are added into the node-map with default directory type 'DataObject'

The major properties are equipped with handlers (more or less mandatory for interactive work in python)

From now the default prefix ( "/Event/" ) could be omitted from any data-item. It will be added automatically.

Author
M.Frank
Version
1.0

Definition at line 90 of file DataOnDemandSvc.h.

Member Typedef Documentation

typedef TClass* DataOnDemandSvc::ClassH

Definition at line 96 of file DataOnDemandSvc.h.

typedef std::map<std::string,std::string> DataOnDemandSvc::Map
private

Definition at line 283 of file DataOnDemandSvc.h.

typedef std::vector<std::string> DataOnDemandSvc::Setup

Definition at line 95 of file DataOnDemandSvc.h.

Constructor & Destructor Documentation

DataOnDemandSvc::DataOnDemandSvc ( const std::string &  name,
ISvcLocator svc 
)

Standard initializing service constructor.

Parameters
name[IN] Service instance name
svc[IN] Pointer to service locator
Returns
Reference to DataOnDemandSvc object.

Definition at line 46 of file DataOnDemandSvc.cpp.

47  : base_class(name, svc)
48  , m_incSvc ( 0 )
49  , m_algMgr ( 0 )
50  , m_dataSvc ( 0 )
51  //
52  , m_trapType ( "DataFault")
53  , m_dataSvcName ( "EventDataSvc" )
54  , m_partialPath ( true )
55  , m_dump ( false )
56  , m_init ( false )
57  , m_allowInitFailure(false)
58  //
59  , m_algMapping ()
60  , m_nodeMapping ()
61  //
62  , m_algMap ( )
63  , m_nodeMap ( )
64  //
65  , m_updateRequired ( true )
66  , m_prefix ( "/Event/" )
67  , m_log ( 0 )
68  , m_total ( )
69  , m_statAlg ( 0 )
70  , m_statNode ( 0 )
71  , m_stat ( 0 )
72  //
73  , m_timer_nodes ()
74  , m_timer_algs ()
75  , m_timer_all ()
76  , m_locked_nodes ( false )
77  , m_locked_algs ( false )
78  , m_locked_all ( false )
79  //
80 {
81  // ==========================================================================
83  ( "IncidentName" ,
84  m_trapType ,
85  "The type of handled Incident" ) ;
86  //
87  declareProperty ( "DataSvc" , m_dataSvcName ) ;
88  //
89  declareProperty ( "UsePreceedingPath" , m_partialPath ) ;
91  ( "Dump" ,
92  m_dump ,
93  "Dump the configuration and stastics" ) ->
94  declareUpdateHandler ( &DataOnDemandSvc::update_dump , this ) ;
95  //
97  ( "PreInitialize" ,
98  m_init ,
99  "Flag to (pre)initialize all algorithms" ) ;
101  ( "AllowPreInitializeFailure" ,
103  "Allow (pre)initialization of algorithms to fail without stopping the application" ) ;
104  //
105  declareProperty ( "Algorithms" , m_algMapping ) ->
106  declareUpdateHandler ( &DataOnDemandSvc::update_2 , this ) ;
107  declareProperty ( "Nodes" , m_nodeMapping ) ->
108  declareUpdateHandler ( &DataOnDemandSvc::update_3 , this ) ;
109  //
110  declareProperty ( "AlgMap" , m_algMap ) ->
111  declareUpdateHandler ( &DataOnDemandSvc::update_1 , this ) ;
112  declareProperty ( "NodeMap" , m_nodeMap ) ->
113  declareUpdateHandler ( &DataOnDemandSvc::update_1 , this ) ;
114 
115  declareProperty ( "Prefix" , m_prefix ) ;
116 
117  declareProperty("NodeMappingTools", m_nodeMapTools,
118  "List of tools of type IDODNodeMapper");
119  declareProperty("AlgMappingTools", m_algMapTools,
120  "List of tools of type IDODAlgMapper");
121  // ==========================================================================
122 }
ChronoEntity m_timer_all
ChronoEntity m_timer_algs
MsgStream * m_log
SmartIF< IIncidentSvc > m_incSvc
Incident service.
std::vector< std::string > m_algMapTools
std::string m_trapType
Trap name.
std::string m_dataSvcName
Data service name.
Setup m_nodeMapping
Mapping to nodes.
Map m_algMap
the major configuration property { 'data' : 'algorithm' }
extends1 base_class
Typedef to this class.
Definition: extends.h:12
SmartIF< IDataProviderSvc > m_dataSvc
Data provider reference.
ulonglong m_statNode
Setup m_algMapping
Mapping to algorithms.
bool m_allowInitFailure
flag to allow DataOnDemand initialization to succeed even if the (pre)initialization of the algorithm...
void update_dump(Property &)
update handler for 'Dump' property
std::vector< std::string > m_nodeMapTools
std::string m_prefix
virtual const std::string & name() const
Retrieve name of the service.
Definition: Service.cpp:329
bool m_partialPath
Flag to allow for the creation of partial leaves.
SmartIF< IAlgManager > m_algMgr
Algorithm manager.
bool m_dump
flag to force the printout
bool m_init
flag to warm up the configuration
ChronoEntity m_timer_nodes
ChronoEntity m_total
Map m_nodeMap
the major configuration property { 'data' : 'type' }
Property * declareProperty(const std::string &name, T &property, const std::string &doc="none") const
Declare the named property.
Definition: Service.h:212
void update_2(Property &p)
void update_3(Property &p)
void update_1(Property &p)
DataOnDemandSvc::~DataOnDemandSvc ( )
virtual

Standard destructor.

Definition at line 341 of file DataOnDemandSvc.cpp.

342 { if ( 0 != m_log ) { delete m_log ; m_log = 0 ; } }
MsgStream * m_log

Member Function Documentation

StatusCode DataOnDemandSvc::configureHandler ( Leaf leaf)
protected

Configure handler for leaf.

Parameters
leaf[IN] Reference to leaf handler
Returns
StatusCode indicating success or failure

Definition at line 581 of file DataOnDemandSvc.cpp.

582 {
583  if ( 0 != l.algorithm ) { return StatusCode::SUCCESS ; }
584  if ( 0 == m_algMgr ) { return StatusCode::FAILURE ; }
585  l.algorithm = m_algMgr->algorithm(l.name, false);
586  if ( 0 != l.algorithm ) { return StatusCode::SUCCESS ; }
587  // create it!
588  StatusCode sc = m_algMgr->createAlgorithm ( l.type , l.name , l.algorithm , true ) ;
589  if ( sc.isFailure() )
590  {
591  stream()
592  << MSG::ERROR
593  << "Failed to create algorithm "
594  << l.type << "('" << l.name<< "')" << endmsg;
595  l.algorithm = 0 ;
596  return sc ; // RETURN
597  }
598  if ( l.algorithm->isInitialized() ) { return StatusCode:: SUCCESS ;}
599  // initialize it!
600  sc = l.algorithm -> sysInitialize () ;
601  if ( sc.isFailure() )
602  {
603  stream()
604  << MSG::ERROR
605  << "Failed to initialize algorithm "
606  << l.type << "('" << l.name<< "')" << endmsg;
607  l.algorithm = 0 ;
608  return sc ; // RETURN
609  }
610  if ( Gaudi::StateMachine::RUNNING == l.algorithm->FSMState() )
611  { return StatusCode::SUCCESS ; }
612  // run it!
613  sc = l.algorithm->sysStart() ;
614  if ( sc.isFailure() )
615  {
616  stream()
617  << MSG::ERROR
618  << "Failed to 'run' algorithm "
619  << l.type << "('" << l.name<< "')" << endmsg;
620  l.algorithm = 0 ;
621  return sc ; // RETURN
622  }
623  return StatusCode::SUCCESS ;
624 }
virtual SmartIF< IAlgorithm > & algorithm(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true)=0
Returns a smart pointer to a service.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
virtual StatusCode createAlgorithm(const std::string &algtype, const std::string &algname, IAlgorithm *&alg, bool managed=false)=0
Create an instance of a algorithm type that has been declared beforehand and assigns to it a name...
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
virtual StatusCode sysInitialize()
Initialize Service.
Definition: Service.cpp:35
dictionary l
Definition: gaudirun.py:420
SmartIF< IAlgManager > m_algMgr
Algorithm manager.
void DataOnDemandSvc::dump ( const MSG::Level  level,
const bool  mode = true 
) const
protected

dump the content of DataOnDemand service

Parameters
levelthe printout level
modethe printout mode

Definition at line 859 of file DataOnDemandSvc.cpp.

861 {
862  if ( m_algs.empty() && m_nodes.empty() ) { return ; }
863 
864  typedef std::pair<std::string,std::string> Pair ;
865  typedef std::map<std::string,Pair> PMap ;
866 
867  PMap _m ;
868  for ( AlgMap::const_iterator alg = m_algs.begin() ;
869  m_algs.end() != alg ; ++alg )
870  {
871  PMap::const_iterator check = _m.find(alg->first) ;
872  if ( _m.end() != check )
873  {
874  stream()
875  << MSG::WARNING
876  << " The data item is activated for '"
877  << check->first << "' as '" << check->second.first << "'" << endmsg ;
878  }
879  const Leaf& l = alg->second ;
880  std::string nam = ( l.name == l.type ? l.type : (l.type+"/"+l.name) ) ;
881  //
882  if ( !mode && 0 == l.num ) { continue ; }
883  //
884  std::string val ;
885  if ( mode ) { val = ( 0 == l.algorithm ) ? "F" : "T" ; }
886  else { val = boost::lexical_cast<std::string>( l.num ) ; }
887  //
888  _m[ no_prefix ( alg->first , m_prefix ) ] = std::make_pair ( nam , val ) ;
889  }
890  // nodes:
891  for ( NodeMap::const_iterator node = m_nodes.begin() ;
892  m_nodes.end() != node ; ++node )
893  {
894  PMap::const_iterator check = _m.find(node->first) ;
895  if ( _m.end() != check )
896  {
897  stream()
898  << MSG::WARNING
899  << " The data item is already activated for '"
900  << check->first << "' as '" << check->second.first << "'" << endmsg ;
901  }
902  const Node& n = node->second ;
903  std::string nam = "'" + n.name + "'" ;
904  //
905  std::string val ;
906 
907  if ( !mode && 0 == n.num ) { continue ; }
908 
909  if ( mode ) { val = ( 0 == n.clazz ) ? "F" : "T" ; }
910  else { val = boost::lexical_cast<std::string>( n.num ) ; }
911  //
912  _m[ no_prefix ( node->first , m_prefix ) ] = std::make_pair ( nam , val ) ;
913  }
914  //
915  if ( _m.empty() ) { return ; }
916 
917  // find the correct formats
918  size_t n1 = 0 ;
919  size_t n2 = 0 ;
920  size_t n3 = 0 ;
921  for ( PMap::const_iterator it = _m.begin() ; _m.end() != it ; ++it )
922  {
923  n1 = std::max ( n1 , it->first.size() ) ;
924  n2 = std::max ( n2 , it->second.first.size() ) ;
925  n3 = std::max ( n3 , it->second.second.size() ) ;
926  }
927  if ( 10 > n1 ) { n1 = 10 ; }
928  if ( 10 > n2 ) { n2 = 10 ; }
929  if ( 60 < n1 ) { n1 = 60 ; }
930  if ( 60 < n2 ) { n2 = 60 ; }
931  //
932 
933  const std::string _f = " | %%1$-%1%.%1%s | %%2$-%2%.%2%s | %%3$%3%.%3%s |" ;
934  boost::format _ff ( _f ) ;
935  _ff % n1 % n2 % n3 ;
936 
937  const std::string _format = _ff.str() ;
938 
939  MsgStream& msg = stream() << level ;
940 
941  if ( mode ) { msg << "Data-On-Demand Actions enabled for:" ; }
942  else { msg << "Data-On-Demand Actions has been used for:" ; }
943 
944  boost::format fmt1( _format) ;
945  fmt1 % "Address" % "Creator" % ( mode ? "S" : "#" ) ;
946  //
947  const std::string header = fmt1.str() ;
948  std::string line = std::string( header.size() , '-' ) ;
949  line[0] = ' ' ;
950 
951  msg << std::endl << line
952  << std::endl << header
953  << std::endl << line ;
954 
955  // make the actual printout:
956  for ( PMap::const_iterator item = _m.begin() ;
957  _m.end() != item ; ++item )
958  {
959  boost::format fmt( _format) ;
960  msg << std::endl <<
961  ( fmt % item->first % item->second.first % item->second.second ) ;
962  }
963 
964  msg << std::endl << line << endmsg ;
965 
966 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
iterator end()
Definition: Map.h:131
bool empty() const
Definition: Map.h:182
NodeMap m_nodes
Map of "empty" objects to be placed as intermediate nodes.
std::string m_prefix
map_type::const_iterator const_iterator
Definition: Map.h:99
iterator begin()
Definition: Map.h:130
dictionary l
Definition: gaudirun.py:420
AlgMap m_algs
Map of algorithms to handle incidents.
tuple item
print s1,s2
Definition: ana.py:146
list header
Definition: Test.py:33
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:133
int line
Definition: ana.py:50
StatusCode DataOnDemandSvc::execHandler ( const std::string &  tag,
Leaf leaf 
)
protected

Execute leaf handler (algorithm)

Parameters
tag[IN] Path to requested leaf
leaf[IN] Reference to leaf handler
Returns
StatusCode indicating success or failure

Definition at line 818 of file DataOnDemandSvc.cpp.

819 {
821  //
822  if ( l.executing ) { return StatusCode::FAILURE ; } // RETURN
823  //
824  if ( 0 == l.algorithm )
825  {
827  if ( sc.isFailure() )
828  {
829  stream()
830  << MSG::ERROR
831  << "Failed to configure handler for: "
832  << l.name << "[" << l.type << "] " << tag << endmsg;
833  return sc ; // RETURN
834  }
835  }
836  //
837  Chrono atimer ( m_total ) ;
838  //
839  Protection p(l.executing);
840  StatusCode sc = l.algorithm->sysExecute();
841  if ( sc.isFailure() )
842  {
843  stream() << MSG::ERROR
844  << "Failed to execute the algorithm:"
845  << l.algorithm->name() << " for location:" << tag << endmsg;
846  return sc ; // RETURN
847  }
848  ++l.num ;
849  //
850  return StatusCode::SUCCESS ;
851 }
ChronoEntity m_timer_algs
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
A small utility class for chronometry of user codes.
Definition: Chrono.h:27
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
dictionary l
Definition: gaudirun.py:420
Helper object, useful for measurement of CPU-performance of highly-recursive structures, e.g.
Definition: LockedChrono.h:54
ChronoEntity m_total
StatusCode configureHandler(Leaf &leaf)
Configure handler for leaf.
StatusCode DataOnDemandSvc::execHandler ( const std::string &  tag,
Node node 
)
protected

Execute node handler (simple object creation using seal reflection)

Parameters
tag[IN] Path to requested leaf
node[IN] Reference to node handler
Returns
StatusCode indicating success or failure

Definition at line 762 of file DataOnDemandSvc.cpp.

763 {
764 
766 
767  if ( n.executing ) { return StatusCode::FAILURE ; } // RETURN
768 
769  Protection p(n.executing);
770 
771  DataObject* object= 0 ;
772 
773  if ( n.dataObject ) { object = new DataObject() ; }
774  else
775  {
776  // try to recover the handler
777  if ( !n.clazz ) { n.clazz = TClass::GetClass(n.name.c_str()) ; }
778  if ( !n.clazz )
779  {
780  stream()
781  << MSG::ERROR
782  << "Failed to get dictionary for class '"
783  << n.name
784  << "' for location:" << tag << endmsg;
785  return StatusCode::FAILURE ; // RETURN
786  }
787 
788  object = reinterpret_cast<DataObject*>(n.clazz->New());
789 
790  if ( !object )
791  {
792  stream()
793  << MSG::ERROR
794  << "Failed to create an object of type:"
795  << n.clazz->GetName() << " for location:" << tag
796  << endmsg;
797  return StatusCode::FAILURE ; // RETURN
798  }
799  }
800  //
801  StatusCode sc = m_dataSvc->registerObject(tag, object );
802  if ( sc.isFailure() )
803  {
804  stream()
805  << MSG::ERROR << "Failed to register an object of type:"
806  << n.name << " at location:" << tag
807  << endmsg;
808  return sc ; // RETURN
809  }
810  ++n.num ;
811  //
812  return StatusCode::SUCCESS ;
813 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
SmartIF< IDataProviderSvc > m_dataSvc
Data provider reference.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
Helper object, useful for measurement of CPU-performance of highly-recursive structures, e.g.
Definition: LockedChrono.h:54
ChronoEntity m_timer_nodes
virtual StatusCode registerObject(const std::string &fullPath, DataObject *pObject)=0
Register object with the data store.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:31
StatusCode DataOnDemandSvc::finalize ( )
virtual

Inherited Service overrides: Service finalization.

Reimplemented from Service.

Definition at line 364 of file DataOnDemandSvc.cpp.

365 {
366  //
367  stream ()
368  << MSG::INFO
369  << "Handled \"" << m_trapType << "\" incidents: "
370  << m_statAlg << "/" << m_statNode << "/" << m_stat << "(Alg/Node/Total)."
371  << endmsg ;
372  if ( m_dump || MSG::DEBUG >= outputLevel() )
373  {
374  stream ()
375  << MSG::INFO
377  ( "Algorithm timing: Mean(+-rms)/Min/Max:%3%(+-%4%)/%6%/%7%[ms] " , System::milliSec )
378  << m_total.outputUserTime ( "Total:%2%[s]" , System::Sec ) << endmsg ;
379  stream ()
380  << MSG::INFO
382  ( "Nodes timing: Mean(+-rms)/Min/Max:%3%(+-%4%)/%6%/%7%[ms] " , System::milliSec )
383  << m_timer_nodes.outputUserTime ( "Total:%2%[s]" , System::Sec ) << endmsg ;
384  stream ()
385  << MSG::INFO
387  ( "Algs timing: Mean(+-rms)/Min/Max:%3%(+-%4%)/%6%/%7%[ms] " , System::milliSec )
388  << m_timer_algs .outputUserTime ( "Total:%2%[s]" , System::Sec ) << endmsg ;
389  stream ()
390  << MSG::INFO
392  ( "All timing: Mean(+-rms)/Min/Max:%3%(+-%4%)/%6%/%7%[ms] " , System::milliSec )
393  << m_timer_all .outputUserTime ( "Total:%2%[s]" , System::Sec ) << endmsg ;
394  }
395  // dump it!
396  if ( m_dump ) { dump ( MSG::INFO , false ) ; }
397  else if ( MSG::DEBUG >= outputLevel() ) { dump ( MSG::DEBUG , false ) ; }
398  //
399  if ( m_incSvc )
400  {
402  m_incSvc.reset();
403  }
404  m_algMgr.reset();
405  m_dataSvc.reset();
406  if (m_toolSvc) { // we may not have retrieved the ToolSvc
407  // Do not call releaseTool if the ToolSvc was already finalized.
409  for(std::list<IDODNodeMapper*>::iterator i = m_nodeMappers.begin(); i != m_nodeMappers.end(); ++i)
411  for(std::list<IDODAlgMapper*>::iterator i = m_algMappers.begin(); i != m_algMappers.end(); ++i)
413  } else {
414  warning() << "ToolSvc already finalized: cannot release tools. Check options." << endmsg;
415  }
416  m_nodeMappers.clear();
417  m_algMappers.clear();
418  m_toolSvc.reset();
419  }
420  return Service::finalize();
421 }
ChronoEntity m_timer_all
ChronoEntity m_timer_algs
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::list< IDODNodeMapper * > m_nodeMappers
MsgStream & stream() const
get the message stream
SmartIF< IIncidentSvc > m_incSvc
Incident service.
int outputLevel() const
get the Service's output level
Definition: Service.h:251
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
std::string m_trapType
Trap name.
SmartIF< IDataProviderSvc > m_dataSvc
Data provider reference.
ulonglong m_statNode
std::list< IDODAlgMapper * > m_algMappers
void dump(const MSG::Level level, const bool mode=true) const
dump the content of DataOnDemand service
virtual Gaudi::StateMachine::State FSMState() const
Get the current state.
Definition: Service.h:56
void reset(TYPE *ptr=0)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:74
std::string outputUserTime() const
print the chrono ;
SmartIF< IAlgManager > m_algMgr
Algorithm manager.
SmartIF< IToolSvc > m_toolSvc
Data provider reference.
bool m_dump
flag to force the printout
ChronoEntity m_timer_nodes
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
ChronoEntity m_total
virtual void removeListener(IIncidentListener *lis, const std::string &type="")=0
Remove listener.
void ignore() const
Definition: StatusCode.h:107
list i
Definition: ana.py:128
virtual StatusCode finalize()
Finalize (from INITIALIZED to CONFIGURED).
Definition: Service.cpp:197
void DataOnDemandSvc::handle ( const Incident incident)
virtual

IIncidentListener interfaces overrides: incident handling.

Implements IIncidentListener.

Definition at line 689 of file DataOnDemandSvc.cpp.

690 {
691 
693 
694  ++m_stat ;
695  // proper incident type?
696  if ( incident.type() != m_trapType ) { return ; } // RETURN
697  const DataIncident* inc = dynamic_cast<const DataIncident*>(&incident);
698  if ( 0 == inc ) { return ; } // RETURN
699  // update if needed!
700  if ( m_updateRequired ) { update() ; }
701 
702  if ( MSG::VERBOSE >= outputLevel() )
703  {
704  verbose()
705  << "Incident: [" << incident.type () << "] "
706  << " = " << incident.source ()
707  << " Location:" << inc->tag() << endmsg;
708  }
709  // ==========================================================================
710  // const std::string& tag = inc->tag();
711  Gaudi::StringKey tag ( inc->tag() ) ;
712  // ==========================================================================
713  NodeMap::iterator icl = m_nodes.find ( tag ) ;
714  if ( icl != m_nodes.end() )
715  {
716  StatusCode sc = execHandler ( tag , icl->second ) ;
717  if ( sc.isSuccess() ) { ++m_statNode ; }
718  return ; // RETURN
719  }
720  // ==========================================================================
721  AlgMap::iterator ialg = m_algs.find ( tag ) ;
722  if ( ialg != m_algs.end() )
723  {
724  StatusCode sc = execHandler ( tag , ialg->second ) ;
725  if ( sc.isSuccess() ) { ++m_statAlg ; }
726  return ; // RETURN
727  }
728  // ==========================================================================
729  // Fall back on the tools
730  if (m_toolSvc) {
731  if (MSG::VERBOSE >= outputLevel())
732  verbose() << "Try to find mapping with mapping tools" << endmsg;
733  Finder finder(no_prefix(inc->tag(), m_prefix), m_nodeMappers, m_algMappers);
734  // - try the node mappers
735  std::string node = finder.node();
736  if (isGood(node)) {
737  // if one is found update the internal node mapping and try again.
738  if (MSG::VERBOSE >= outputLevel())
739  verbose() << "Found Node handler: " << node << endmsg;
740  i_setNodeHandler(inc->tag(), node);
741  handle(incident);
742  --m_stat; // avoid double counting because of recursion
743  return;
744  }
745  // - try alg mappings
746  Gaudi::Utils::TypeNameString alg = finder.alg();
747  if (isGood(alg)) {
748  // we got an algorithm, update alg map and try to handle again
749  if (MSG::VERBOSE >= outputLevel())
750  verbose() << "Found Algorithm handler: " << alg << endmsg;
751  i_setAlgHandler(inc->tag(), alg).ignore();
752  handle(incident);
753  --m_stat; // avoid double counting because of recursion
754  return;
755  }
756  }
757 }
void i_setNodeHandler(const std::string &name, const std::string &type)
Internal method to initialize a node handler.
ChronoEntity m_timer_all
MsgStream & verbose() const
shortcut for the method msgStream(MSG::VERBOSE)
const std::string & type() const
Access to the incident type.
Definition: Incident.h:34
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::list< IDODNodeMapper * > m_nodeMappers
const std::string & source() const
Access to the source of the incident.
Definition: Incident.h:40
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
int outputLevel() const
get the Service's output level
Definition: Service.h:251
std::string m_trapType
Trap name.
The helper class to represent the efficient "key" for access.
Definition: StringKey.h:35
ulonglong m_statNode
std::list< IDODAlgMapper * > m_algMappers
iterator end()
Definition: Map.h:131
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:9
virtual void handle(const Incident &incident)
IIncidentListener interfaces overrides: incident handling.
StatusCode execHandler(const std::string &tag, Leaf &leaf)
Execute leaf handler (algorithm)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
iterator find(const key_type &key)
Definition: Map.h:148
NodeMap m_nodes
Map of "empty" objects to be placed as intermediate nodes.
std::string m_prefix
map_type::iterator iterator
Definition: Map.h:98
SmartIF< IToolSvc > m_toolSvc
Data provider reference.
Helper object, useful for measurement of CPU-performance of highly-recursive structures, e.g.
Definition: LockedChrono.h:54
AlgMap m_algs
Map of algorithms to handle incidents.
Data service incident class.
StatusCode i_setAlgHandler(const std::string &name, const Gaudi::Utils::TypeNameString &alg)
Internal method to initialize an algorithm handler.
StatusCode update()
update the handlers
StatusCode DataOnDemandSvc::i_setAlgHandler ( const std::string &  name,
const Gaudi::Utils::TypeNameString alg 
)
protected

Internal method to initialize an algorithm handler.

Definition at line 257 of file DataOnDemandSvc.cpp.

257  {
258  Leaf leaf(alg.type(), alg.name());
259  if (m_init)
260  {
262  if (sc.isFailure()) {
263  if (m_allowInitFailure) {
264  // re-store the content of the leaf object to try again to initialize
265  // the algorithm later (on demand)
266  leaf = Leaf(alg.type(), alg.name());
267  }
268  else
269  return sc;
270  }
271  }
272  m_algs[name] = leaf;
273  return StatusCode::SUCCESS;
274 }
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
bool m_allowInitFailure
flag to allow DataOnDemand initialization to succeed even if the (pre)initialization of the algorithm...
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
virtual const std::string & name() const
Retrieve name of the service.
Definition: Service.cpp:329
AlgMap m_algs
Map of algorithms to handle incidents.
bool m_init
flag to warm up the configuration
const std::string & type() const
const std::string & name() const
StatusCode configureHandler(Leaf &leaf)
Configure handler for leaf.
void DataOnDemandSvc::i_setNodeHandler ( const std::string &  name,
const std::string &  type 
)
protected

Internal method to initialize a node handler.

Definition at line 247 of file DataOnDemandSvc.cpp.

247  {
248  ClassH cl = TClass::GetClass(type.c_str()) ;
249  if (!cl) {
250  warning()
251  << "Failed to access dictionary class for "
252  << name << " of type:" << type << endmsg;
253  }
254  m_nodes[name] = Node(cl, false, type);
255 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
NodeMap m_nodes
Map of "empty" objects to be placed as intermediate nodes.
virtual const std::string & name() const
Retrieve name of the service.
Definition: Service.cpp:329
string type
Definition: gaudirun.py:151
StatusCode DataOnDemandSvc::initialize ( )
virtual

Inherited Service overrides: Service initialization.

Reimplemented from Service.

Definition at line 346 of file DataOnDemandSvc.cpp.

347 {
348  // initialize the Service Base class
350  if ( sc.isFailure() ) { return sc; }
351  sc = setup();
352  if ( sc.isFailure() ) { return sc; }
353  //
354  if ( m_dump ) { dump ( MSG::INFO ) ; }
355  else if ( MSG::DEBUG >= outputLevel() ) { dump ( MSG::DEBUG ) ; }
356  //
357  if ( m_init ) { return update () ; }
358  //
359  return StatusCode::SUCCESS ;
360 }
int outputLevel() const
get the Service's output level
Definition: Service.h:251
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
StatusCode setup()
Setup routine (called by (re-) initialize.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
void dump(const MSG::Level level, const bool mode=true) const
dump the content of DataOnDemand service
virtual StatusCode initialize()
Initialization (from CONFIGURED to INITIALIZED).
Definition: Service.cpp:72
bool m_dump
flag to force the printout
bool m_init
flag to warm up the configuration
StatusCode update()
update the handlers
StatusCode DataOnDemandSvc::reinitialize ( )
virtual

Inherited Service overrides: Service reinitialization.

re-initialization of the service

Reimplemented from Service.

Definition at line 425 of file DataOnDemandSvc.cpp.

426 {
427  // reinitialize the Service Base class
428  if ( 0 != m_incSvc )
429  {
430  m_incSvc -> removeListener ( this , m_trapType );
431  m_incSvc.reset();
432  }
433  m_algMgr.reset();
434  m_dataSvc.reset();
435  for(std::list<IDODNodeMapper*>::iterator i = m_nodeMappers.begin(); i != m_nodeMappers.end(); ++i)
437  m_nodeMappers.clear();
438  for(std::list<IDODAlgMapper*>::iterator i = m_algMappers.begin(); i != m_algMappers.end(); ++i)
440  m_algMappers.clear();
441  m_toolSvc.reset();
442  if ( 0 != m_log ) { delete m_log ; m_log = 0 ; }
443  //
445  if ( sc.isFailure() ) { return sc; }
446  //
447  sc = setup() ;
448  if ( sc.isFailure() ) { return sc; }
449  //
450  if ( m_dump ) { dump ( MSG::INFO ) ; }
451  else if ( MSG::DEBUG >= outputLevel() ) { dump ( MSG::DEBUG ) ; }
452  //
453  return StatusCode::SUCCESS ;
454 }
std::list< IDODNodeMapper * > m_nodeMappers
MsgStream * m_log
SmartIF< IIncidentSvc > m_incSvc
Incident service.
int outputLevel() const
get the Service's output level
Definition: Service.h:251
std::string m_trapType
Trap name.
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
SmartIF< IDataProviderSvc > m_dataSvc
Data provider reference.
std::list< IDODAlgMapper * > m_algMappers
StatusCode setup()
Setup routine (called by (re-) initialize.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
void dump(const MSG::Level level, const bool mode=true) const
dump the content of DataOnDemand service
void reset(TYPE *ptr=0)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:74
virtual StatusCode reinitialize()
Initialization (from INITIALIZED or RUNNING to INITIALIZED, via CONFIGURED).
Definition: Service.cpp:292
SmartIF< IAlgManager > m_algMgr
Algorithm manager.
SmartIF< IToolSvc > m_toolSvc
Data provider reference.
bool m_dump
flag to force the printout
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
void ignore() const
Definition: StatusCode.h:107
list i
Definition: ana.py:128
StatusCode DataOnDemandSvc::setup ( )
protected

Setup routine (called by (re-) initialize.

Definition at line 458 of file DataOnDemandSvc.cpp.

459 {
460  if ( !(m_algMgr = serviceLocator()) ) // assignment meant
461  {
462  error() << "Failed to retrieve the IAlgManager interface." << endmsg;
463  return StatusCode::FAILURE;
464  }
465 
466  if ( !(m_incSvc = serviceLocator()->service("IncidentSvc")) ) // assignment meant
467  {
468  error() << "Failed to retrieve Incident service." << endmsg;
469  return StatusCode::FAILURE;
470  }
472 
473  if ( !(m_dataSvc = serviceLocator()->service(m_dataSvcName)) ) // assignment meant
474  {
475  error()
476  << "Failed to retrieve the data provider interface of "
477  << m_dataSvcName << endmsg;
478  return StatusCode::FAILURE;
479  }
480 
481  // No need to get the ToolSvc if we are not using tools
482  if (!(m_nodeMapTools.empty() && m_algMapTools.empty())) {
483  if ( !(m_toolSvc = serviceLocator()->service("ToolSvc")) ) // assignment meant
484  {
485  error() << "Failed to retrieve ToolSvc" << endmsg;
486  return StatusCode::FAILURE;
487  }
488 
489  // load the node mapping tools
490  std::vector<std::string>::iterator i;
491  IDODNodeMapper *nodetool = 0;
492  for(i = m_nodeMapTools.begin(); i != m_nodeMapTools.end(); ++i) {
493  const StatusCode sc = m_toolSvc->retrieveTool(*i, nodetool);
494  if (sc.isFailure()) return sc;
495  m_nodeMappers.push_back(nodetool);
496  }
497  IDODAlgMapper *algtool = 0;
498  for(i = m_algMapTools.begin(); i != m_algMapTools.end(); ++i) {
499  const StatusCode sc = m_toolSvc->retrieveTool(*i, algtool);
500  if (sc.isFailure()) return sc;
501  m_algMappers.push_back(algtool);
502  }
503  }
504  return update();
505 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::list< IDODNodeMapper * > m_nodeMappers
SmartIF< IIncidentSvc > m_incSvc
Incident service.
std::vector< std::string > m_algMapTools
std::string m_trapType
Trap name.
std::string m_dataSvcName
Data service name.
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
SmartIF< IDataProviderSvc > m_dataSvc
Data provider reference.
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:82
std::list< IDODAlgMapper * > m_algMappers
Interface of tools used by the DataOnDemandSvc to choose the type of node to be created at a path...
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
std::vector< std::string > m_nodeMapTools
Interface of tools used by the DataOnDemandSvc to choose the algorithm to be run to produce the data ...
Definition: IDODAlgMapper.h:17
SmartIF< IAlgManager > m_algMgr
Algorithm manager.
SmartIF< IToolSvc > m_toolSvc
Data provider reference.
virtual void addListener(IIncidentListener *lis, const std::string &type="", long priority=0, bool rethrow=false, bool singleShot=false)=0
Add listener.
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.
Definition: Service.h:143
list i
Definition: ana.py:128
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
StatusCode retrieveTool(const std::string &type, T *&tool, const IInterface *parent=0, bool createIf=true)
Retrieve specified tool sub-type with tool dependent part of the name automatically assigned...
Definition: IToolSvc.h:141
StatusCode update()
update the handlers
SmartIF< ISvcLocator > & serviceLocator() const
Retrieve pointer to service locator.
Definition: Service.cpp:334
StatusCode DataOnDemandSvc::setupAlgHandlers ( )
protected

Initialize leaf handlers.

Definition at line 546 of file DataOnDemandSvc.cpp.

547 {
548  std::string typ, tag;
549 
550  for (auto alg: m_algMapping)
551  {
552  using Parser = Gaudi::Utils::AttribStringParser;
553  for (auto attrib: Parser(alg)) {
554  switch( ::toupper(attrib.tag[0]) ) {
555  case 'D':
556  tag = std::move(attrib.value);
557  break;
558  case 'T':
559  typ = std::move(attrib.value);
560  break;
561  }
562  }
564  if ( m_algMap .end () != m_algMap .find ( tag ) ||
565  m_nodeMap .end () != m_nodeMap .find ( tag ) )
566  {
567  stream()
568  << MSG::WARNING
569  << "The obsolete property 'Algorithms' redefines the action for '"
570  + tag + "' to be '" +item.type() +"/"+item.name()+"'"
571  << endmsg ;
572  }
573  m_algMap[tag] = item.type() + "/" + item.name() ;
574  }
575  m_updateRequired = true ;
576  return StatusCode::SUCCESS;
577 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
Map m_algMap
the major configuration property { 'data' : 'algorithm' }
Setup m_algMapping
Mapping to algorithms.
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:9
tuple end
Definition: IOTest.py:101
tuple item
print s1,s2
Definition: ana.py:146
Map m_nodeMap
the major configuration property { 'data' : 'type' }
void toupper(std::string &s)
StatusCode DataOnDemandSvc::setupNodeHandlers ( )
protected

Initialize node handlers.

Definition at line 509 of file DataOnDemandSvc.cpp.

510 {
511  std::string nam, typ, tag;
513  // Setup for node leafs, where simply a constructor is called...
514  for (auto node: m_nodeMapping)
515  {
516  using Parser = Gaudi::Utils::AttribStringParser;
517  for (auto attrib: Parser(node)) {
518  switch( ::toupper(attrib.tag[0]) ) {
519  case 'D':
520  tag = std::move(attrib.value);
521  break;
522  case 'T':
523  nam = std::move(attrib.value);
524  break;
525  }
526  }
527  if ( m_algMap .end () != m_algMap .find ( tag ) ||
528  m_nodeMap .end () != m_nodeMap .find ( tag ) )
529  {
530  stream()
531  << MSG::WARNING
532  << "The obsolete property 'Nodes' redefines the action for '"
533  + tag + "' to be '" +nam+"'"
534  << endmsg ;
535  }
536  m_nodeMap[tag] = nam ;
537  }
538  //
539  m_updateRequired = true ;
540  //
541  return sc;
542 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
Setup m_nodeMapping
Mapping to nodes.
Map m_algMap
the major configuration property { 'data' : 'algorithm' }
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
tuple end
Definition: IOTest.py:101
Map m_nodeMap
the major configuration property { 'data' : 'type' }
void toupper(std::string &s)
MsgStream& DataOnDemandSvc::stream ( ) const
inlineprotected

get the message stream

Definition at line 240 of file DataOnDemandSvc.h.

241  {
242  if ( 0 == m_log ) { m_log = new MsgStream( msgSvc() , name() ) ; }
243  return *m_log;
244  }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
MsgStream * m_log
virtual const std::string & name() const
Retrieve name of the service.
Definition: Service.cpp:329
StatusCode DataOnDemandSvc::update ( )
protected

update the handlers

convert obsolete "Nodes" into new "NodeMap"

convert obsolete "Algorithms" into new "AlgMap"

add the default prefix

add the default prefix

get all directories

setup algorithms

setup nodes

Definition at line 279 of file DataOnDemandSvc.cpp.

280 {
281  if ( !m_updateRequired ) { return StatusCode::SUCCESS ; }
282 
284  StatusCode sc = setupNodeHandlers() ; // convert "Nodes" new "NodeMap"
285  if ( sc.isFailure() )
286  {
287  stream() << MSG::ERROR << "Failed to setup old \"Nodes\"" << endmsg ;
288  return sc ;
289  }
291  sc = setupAlgHandlers() ; // convert "Algorithms" into "AlgMap"
292  if ( sc.isFailure() )
293  {
294  stream() << MSG::ERROR << "Failed to setup old \"Algorithms\"" << endmsg ;
295  return sc ;
296  }
298  add_prefix ( m_algMap , m_prefix ) ;
300  add_prefix ( m_nodeMap , m_prefix ) ;
302  typedef std::set<std::string> Set ;
303  Set dirs ;
304  if ( m_partialPath ){ get_dirs ( m_algMap , dirs ) ; }
305  if ( m_partialPath ){ get_dirs ( m_nodeMap , dirs ) ; }
306  //
307  Set::iterator _e = dirs.find("/Event") ;
308  if ( dirs.end() != _e ) { dirs.erase( _e ) ; }
309  // add all directories as nodes
310  for ( Set::const_iterator dir = dirs.begin() ; dirs.end() != dir ; ++dir )
311  {
312  if ( m_algMap .end () != m_algMap .find ( *dir ) ) { continue ; }
313  if ( m_nodeMap .end () != m_nodeMap .find ( *dir ) ) { continue ; }
314  m_nodeMap [*dir] = "DataObject" ;
315  }
316  //
317  m_algs .clear () ;
318  m_nodes .clear () ;
319  //
321  for ( Map::const_iterator ialg = m_algMap.begin() ;
322  m_algMap.end() != ialg ; ++ialg )
323  {
324  if (i_setAlgHandler(ialg->first, ialg->second).isFailure())
325  return StatusCode::FAILURE;
326  }
328  for ( Map::const_iterator inode = m_nodeMap.begin() ;
329  m_nodeMap.end() != inode ; ++inode )
330  {
331  i_setNodeHandler(inode->first, inode->second);
332  }
335  //
336  return StatusCode::SUCCESS ;
337 }
void i_setNodeHandler(const std::string &name, const std::string &type)
Internal method to initialize a node handler.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
return false
Definition: Bootstrap.cpp:338
Map m_algMap
the major configuration property { 'data' : 'algorithm' }
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:85
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
StatusCode setupNodeHandlers()
Initialize node handlers.
NodeMap m_nodes
Map of "empty" objects to be placed as intermediate nodes.
std::string m_prefix
tuple end
Definition: IOTest.py:101
bool m_partialPath
Flag to allow for the creation of partial leaves.
AlgMap m_algs
Map of algorithms to handle incidents.
void clear()
Definition: Map.h:176
Map m_nodeMap
the major configuration property { 'data' : 'type' }
StatusCode setupAlgHandlers()
Initialize leaf handlers.
StatusCode i_setAlgHandler(const std::string &name, const Gaudi::Utils::TypeNameString &alg)
Internal method to initialize an algorithm handler.
void DataOnDemandSvc::update_1 ( Property p)

Definition at line 126 of file DataOnDemandSvc.cpp.

127 {
128  stream() << MSG::VERBOSE << " I am update handler for property " << p << endmsg ;
129  // force update
130  m_updateRequired = true ;
131 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
void DataOnDemandSvc::update_2 ( Property p)

Definition at line 147 of file DataOnDemandSvc.cpp.

148 {
149  stream() << MSG::WARNING
150  << "The property 'Algorithms' is obsolete, switch to map-like 'AlgMap' "
151  << " = { 'data' : 'algorithm' } "
152  << endmsg ;
153  // force update
154  m_updateRequired = true ;
155 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
void DataOnDemandSvc::update_3 ( Property p)

Definition at line 135 of file DataOnDemandSvc.cpp.

136 {
137  stream() << MSG::WARNING
138  << "The property 'Nodes' is obsolete, switch to map-like 'NodeMap' "
139  << " = { 'data' : 'type' } "
140  << endmsg ;
141  // force update
142  m_updateRequired = true ;
143 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
MsgStream & stream() const
get the message stream
void DataOnDemandSvc::update_dump ( Property )

update handler for 'Dump' property

Definition at line 159 of file DataOnDemandSvc.cpp.

160 {
161  // no action if not yet initialized
162  if ( FSMState() < Gaudi::StateMachine::INITIALIZED ) { return ; }
163  // dump the configuration:
164  if ( m_dump ) { dump ( MSG::ALWAYS ) ; }
165 }
void dump(const MSG::Level level, const bool mode=true) const
dump the content of DataOnDemand service
virtual Gaudi::StateMachine::State FSMState() const
Get the current state.
Definition: Service.h:56
bool m_dump
flag to force the printout

Member Data Documentation

Map DataOnDemandSvc::m_algMap
private

the major configuration property { 'data' : 'algorithm' }

Definition at line 285 of file DataOnDemandSvc.h.

std::list<IDODAlgMapper *> DataOnDemandSvc::m_algMappers
private

Definition at line 307 of file DataOnDemandSvc.h.

Setup DataOnDemandSvc::m_algMapping
private

Mapping to algorithms.

Definition at line 275 of file DataOnDemandSvc.h.

std::vector<std::string> DataOnDemandSvc::m_algMapTools
private

Definition at line 306 of file DataOnDemandSvc.h.

SmartIF<IAlgManager> DataOnDemandSvc::m_algMgr
private

Algorithm manager.

Definition at line 256 of file DataOnDemandSvc.h.

AlgMap DataOnDemandSvc::m_algs
private

Map of algorithms to handle incidents.

Definition at line 279 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_allowInitFailure
private

flag to allow DataOnDemand initialization to succeed even if the (pre)initialization of the algorithms fails (m_init).

Definition at line 273 of file DataOnDemandSvc.h.

SmartIF<IDataProviderSvc> DataOnDemandSvc::m_dataSvc
private

Data provider reference.

Definition at line 258 of file DataOnDemandSvc.h.

std::string DataOnDemandSvc::m_dataSvcName
private

Data service name.

Definition at line 264 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_dump
private

flag to force the printout

Definition at line 268 of file DataOnDemandSvc.h.

SmartIF<IIncidentSvc> DataOnDemandSvc::m_incSvc
private

Incident service.

Definition at line 254 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_init
private

flag to warm up the configuration

Definition at line 270 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_locked_algs
private

Definition at line 301 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_locked_all
private

Definition at line 302 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_locked_nodes
private

Definition at line 300 of file DataOnDemandSvc.h.

MsgStream* DataOnDemandSvc::m_log
mutableprivate

Definition at line 290 of file DataOnDemandSvc.h.

Map DataOnDemandSvc::m_nodeMap
private

the major configuration property { 'data' : 'type' }

Definition at line 287 of file DataOnDemandSvc.h.

std::list<IDODNodeMapper *> DataOnDemandSvc::m_nodeMappers
private

Definition at line 305 of file DataOnDemandSvc.h.

Setup DataOnDemandSvc::m_nodeMapping
private

Mapping to nodes.

Definition at line 277 of file DataOnDemandSvc.h.

std::vector<std::string> DataOnDemandSvc::m_nodeMapTools
private

Definition at line 304 of file DataOnDemandSvc.h.

NodeMap DataOnDemandSvc::m_nodes
private

Map of "empty" objects to be placed as intermediate nodes.

Definition at line 281 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_partialPath
private

Flag to allow for the creation of partial leaves.

Definition at line 266 of file DataOnDemandSvc.h.

std::string DataOnDemandSvc::m_prefix
private

Definition at line 289 of file DataOnDemandSvc.h.

ulonglong DataOnDemandSvc::m_stat
private

Definition at line 295 of file DataOnDemandSvc.h.

ulonglong DataOnDemandSvc::m_statAlg
private

Definition at line 293 of file DataOnDemandSvc.h.

ulonglong DataOnDemandSvc::m_statNode
private

Definition at line 294 of file DataOnDemandSvc.h.

ChronoEntity DataOnDemandSvc::m_timer_algs
private

Definition at line 298 of file DataOnDemandSvc.h.

ChronoEntity DataOnDemandSvc::m_timer_all
private

Definition at line 299 of file DataOnDemandSvc.h.

ChronoEntity DataOnDemandSvc::m_timer_nodes
private

Definition at line 297 of file DataOnDemandSvc.h.

SmartIF<IToolSvc> DataOnDemandSvc::m_toolSvc
private

Data provider reference.

Definition at line 260 of file DataOnDemandSvc.h.

ChronoEntity DataOnDemandSvc::m_total
private

Definition at line 292 of file DataOnDemandSvc.h.

std::string DataOnDemandSvc::m_trapType
private

Trap name.

Definition at line 262 of file DataOnDemandSvc.h.

bool DataOnDemandSvc::m_updateRequired
private

Definition at line 288 of file DataOnDemandSvc.h.


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