The Gaudi Framework  v29r0 (ff2e7097)
Gaudi::Guards Namespace Reference

Guards.h GaudiKernel/Guards.h Collection of very simple classes which allows to execution of some functions within the given well-defined and exception-safe context. More...

Classes

class  AuditorGuard
 It is a simple guard, which "locks" the scope for the Auditor Service is am exception-safe way. More...
 
class  ExceptionGuard
 The most simple guard - it execute the certain code withing typical "try {} catch" clause, used in Auditor, Algorithm, AlgTool, etc. More...
 

Detailed Description

Guards.h GaudiKernel/Guards.h Collection of very simple classes which allows to execution of some functions within the given well-defined and exception-safe context.

In addition these utilities allow to remove many ugly lines from many ancient base classes

The namespace contains two simple guards:

Please note tha the class Gaudi::Utils::AlgContext is also some kind of "guard".

All these guards could work together in very collaborative way:

{
// create the message stream:
MsgStream log ( msgSvc() , name() ) ;
// lock the scope for Auditor Service
( this ,
auditorSvc() ,
&IAuditorSvc::beforeInitialize ,
&IAuditorsvc::afterInitialize ) ;
// Lock the scope for Algorithm Context Service:
Gaudi::Utils::AlgContext context ( this , m_contextSvc ) ;
// execute IAlgorithm::initialize within "try{}catch(..)" clause:
( this ,
std::mem_fn(&IAlgorithm::initialize) ,
log ,
m_exceptionSvc ) ;
return guard ;
}

C++ guarantees the proper execution of all "post"-actions for all involved guards when the scope is destroyed.

Author
Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u
Date
2007-03-07