Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

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

  StatusCode Algorithm::sysInitialize ()
   {
    // create the message stream:
    MsgStream log ( msgSvc() , name() ) ;

    // lock the scope for Auditor Service
    Gaudi::Guards::AuditorGuard auditor
           ( 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:
    Gaudi::Guards::ExceptionGuard guard
        ( this                                  , 
          std::mem_fun(&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 ibelyaev@physics.syr.edu
Date:
2007-03-07
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Wed Feb 9 16:33:08 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004