20 template <
typename FUN>
45 StatusCode sc = base_class::queryInterface( riid, ppvi );
51 return Status::NO_INTERFACE;
114 return jos->setMyProperties(
name(),
this );
120 : m_type(
type ), m_name(
name ), m_parent( parent ) {
127 }
else if (
Service* _svc = dynamic_cast<Service*>( _p ) ) {
129 }
else if (
AlgTool* _too = dynamic_cast<AlgTool*>( _p ) ) {
131 }
else if (
Auditor* _aud = dynamic_cast<Auditor*>( _p ) ) {
165 return attempt( *
this,
"sysInitialize", [&]() {
171 if ( !sc )
return sc;
179 if ( !h->objKey().empty() ) out.
emplace( h->fullKey() );
182 if ( !h->objKey().empty() && out.find( h->fullKey() ) != out.end() ) {
183 error() <<
"Explicit circular data dependency found for id " << h->fullKey() <<
endmsg;
188 if ( !sc )
return sc;
213 return attempt( *
this,
"sysStart", [&]() {
235 return attempt( *
this,
"sysStop", [&]() {
257 return attempt( *
this,
"sysFinalize", [&]() {
281 error() <<
"sysReinitialize(): cannot reinitialize tool not initialized" <<
endmsg;
285 return attempt( *
this,
"SysReinitialize()", [&]() {
322 error() <<
"sysRestart(): cannot reinitialize tool not started" <<
endmsg;
326 return attempt( *
this,
"sysRestart", [&]() {
342 error() <<
"restart(): cannot be stopped" <<
endmsg;
347 error() <<
"restart(): cannot be started" <<
endmsg;
362 if ( !th->isEnabled() ) {
364 debug() <<
"ToolHandle " << th->typeAndName() <<
" not used" <<
endmsg;
368 auto sc = th->retrieve();
373 auto* tool = th->get();
375 debug() <<
"Adding " << ( th->isPublic() ?
"public" :
"private" ) <<
" ToolHandle tool " << tool->
name() <<
" (" 382 debug() <<
"Registering all Tools in ToolHandleArray " << thArr->propertyName() <<
endmsg;
384 for (
auto toolHandle : thArr->getBaseArray() ) {
386 BaseToolHandle* bth = dynamic_cast<BaseToolHandle*>( toolHandle );
390 error() <<
"Error retrieving Tool " << toolHandle->typeAndName() <<
" in ToolHandleArray " 391 << thArr->propertyName() <<
". Not registered" <<
endmsg;
417 return helper.
getService( svcName, createIf, iid, ppSvc );
422 void** ppSvc )
const {
447 for (
auto tool :
tools() ) vis->
visit( dynamic_cast<AlgTool*>( tool ) );
std::vector< Gaudi::DataHandle * > inputHandles() const override
Definition of the MsgStream class used to transmit messages.
an helper to share the implementation of service() among the various kernel base classes
Define general base for Gaudi exception.
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
StatusCode createService(const std::string &name, const InterfaceID &iid, void **ppSvc) const
Implementation of property with value of concrete type.
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
StatusCode getService(const std::string &name, bool createIf, const InterfaceID &iid, void **ppSvc) const
virtual const std::string & tag() const
name tag for the exception, or exception type
constexpr static const auto SUCCESS
void initDataHandleHolder()
initializes all handles - called by the sysInitialize method of any descendant of this
Data provider interface definition.
TYPE * get() const
Get interface pointer.
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
virtual void visit(const IDataHandleHolder *)=0
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
DataObjIDColl m_inputDataObjs
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Main interface for the JobOptions service.
This class is used for returning status codes from appropriate routines.
Definition of the basic interface.
virtual bool hasProperty(const std::string &name) const =0
Return true if we have a property with the given name.
virtual StatusCode getProperty(Gaudi::Details::PropertyBase *p) const =0
Get the property by property.
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
SmartIF< IService > service(const std::string &name, const bool quiet=false, const bool createIf=true) const
State GAUDI_API ChangeState(const Transition transition, const State state)
Function to get the new state according to the required transition, checking if the transition is all...
Base class from which all concrete algorithm classes should be derived.
constexpr static const auto FAILURE
bool assign(const Details::PropertyBase &source) override
get the value from another property
The IProperty is the basic interface for all components which have properties that can be set or get.
It is a simple guard, which "locks" the scope for the Auditor Service is am exception-safe way.
The interface implemented by the IAuditorSvc base class.
Base class for all services.
virtual void undeclareAll(const IInterface *owner)=0
Undeclare monitoring information.
std::vector< Gaudi::DataHandle * > outputHandles() const override
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
DataObjIDColl m_outputDataObjs
Base class from which all concrete auditor classes should be derived.