| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

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 constains two simple guards:

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

All these guards could work togather 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

| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:57:17 2011 for GaudiKernel by doxygen 1.4.7