| # Gaudi Framework, version v20r2
Generated: 18 Jul 2008

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Gaudi::Guards::AuditorGuard Class Reference

`#include <GaudiKernel/Guards.h>`

Collaboration diagram for Gaudi::Guards::AuditorGuard:

[legend]
List of all members.

## Detailed Description

It is a simple guard, which "locks" the scope for the Auditor Service is am exception-safe way.

The pattern ensures that "post-action" will be always executed

      StatusCode Algorithm::sysInitialize ()
       {
          AuditorGuard auditor ( this ,
            auditSvc()                ,
            IAuditor::Initialize      ) ;
          ...
          StatusCode sc = ... ;
          ...
          return sc ;
       }

      StatusCode Algorithm::sysExecute ()
       {
          AuditorGuard auditor ( this       ,
            auditSvc()                      ,
            IAuditor::execute               ) ;
          ...
          StatusCode sc = ... ;
          ...
          auditor.setCode ( sc ) ;
          ...
          return sc ;
       }

Author:
  Vanya BELYAEV ibelyaev@physics.syr.edu

Date:
  2007-03-07

Definition at line 218 of file Guards.h.

## Public Member Functions
| AuditorGuard (INamedInterface *obj, IAuditor *svc, IAuditor::StandardEventType evt)
| constructor
| AuditorGuard (INamedInterface *obj, IAuditor *svc, IAuditor::CustomEventTypeRef evt)
| constructor
| AuditorGuard (INamedInterface *obj, IAuditor *svc, IAuditor::StandardEventType evt, const StatusCode &sc)
| constructor
| AuditorGuard (INamedInterface *obj, IAuditor *svc, IAuditor::CustomEventTypeRef evt, const StatusCode &sc)
| constructor
| AuditorGuard (const std::string &name, IAuditor *svc, IAuditor::StandardEventType evt)
| constructor
| AuditorGuard (const std::string &name, IAuditor *svc, IAuditor::CustomEventTypeRef evt)
| constructor
| AuditorGuard (const std::string &name, IAuditor *svc, IAuditor::StandardEventType evt, const StatusCode &sc)
| constructor
| AuditorGuard (const std::string &name, IAuditor *svc, IAuditor::CustomEventTypeRef evt, const StatusCode &sc)
| constructor
| ~AuditorGuard ()
| dectructor
const StatusCode & | code () const
## Private Member Functions
| AuditorGuard ()
| the default constructor is disabled
| AuditorGuard (const AuditorGuard &right)
| no copy
AuditorGuard & | operator= (const AuditorGuard &right)
| no assignement
void | i_before ()
void | i_after ()
## Private Attributes
INamedInterface * | m_obj
| the guarded object
std::string | m_objName
| the guarded object name (if there is no INamedInterface)
IAuditor * | m_svc
| auditor service
IAuditor::StandardEventType | m_evt
| Event type (standard events).
IAuditor::CustomEventType | m_cevt
| Event type (custom events).
const StatusCode * | m_sc
| Pointer to a status code instance, to be passed to the "after" function if needed The instance must have a scope larger than the one of the guard.
bool | m_customEvtType
| Flag to remember which event type was used.

## Constructor & Destructor Documentation

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | INamedInterface * | obj,
|  | IAuditor * | svc,
|  | IAuditor::StandardEventType | evt |
| ) |  |  |

constructor

Definition at line 101 of file Guards.cpp.

References i_before().

    00103                                                                    :
    00104                  m_obj(obj),
    00105                  m_objName(),
    00106                  m_svc(svc),
    00107                  m_evt(evt),
    00108                  m_cevt(),
    00109                  m_sc(0),
    00110                  m_customEvtType(false)
    00111 {
    00112   i_before();
    00113 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( INamedInterface*          obj      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | INamedInterface * | obj,
|  | IAuditor * | svc,
|  | IAuditor::CustomEventTypeRef | evt |
| ) |  |  |

constructor

Definition at line 114 of file Guards.cpp.

References i_before().

    00116                                                                       :
    00117                  m_obj(obj),
    00118                  m_objName(),
    00119                  m_svc(svc),
    00120                  m_evt(IAuditor::Initialize), // Windows needs an explicit value
    00121                  m_cevt(evt),
    00122                  m_sc(0),
    00123                  m_customEvtType(true)
    00124 {
    00125   i_before();
    00126 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( INamedInterface*             obj      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | INamedInterface * | obj,
|  | IAuditor * | svc,
|  | IAuditor::StandardEventType | evt,
|  | const StatusCode & | sc |
| ) |  |  |

constructor

Definition at line 127 of file Guards.cpp.

References i_before().

    00130                                             :
    00131       m_obj(obj),
    00132       m_objName(),
    00133       m_svc(svc),
    00134       m_evt(evt),
    00135       m_cevt(),
    00136       m_sc(&sc),
    00137       m_customEvtType(false)
    00138 {
    00139   i_before();
    00140 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( INamedInterface*                   obj      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | INamedInterface * | obj,
|  | IAuditor * | svc,
|  | IAuditor::CustomEventTypeRef | evt,
|  | const StatusCode & | sc |
| ) |  |  |

constructor

Definition at line 141 of file Guards.cpp.

References i_before().

    00144                                                  :
    00145       m_obj(obj),
    00146       m_objName(),
    00147       m_svc(svc),
    00148       m_evt(IAuditor::Initialize), // Windows needs an explicit value
    00149       m_cevt(evt),
    00150       m_sc(&sc),
    00151       m_customEvtType(true)
    00152 {
    00153   i_before();
    00154 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( const std::string           &name      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | const std::string & | name,
|  | IAuditor * | svc,
|  | IAuditor::StandardEventType | evt |
| ) |  |  |

constructor

Definition at line 155 of file Guards.cpp.

References i_before().

    00157                                          :
    00158       m_obj(0),
    00159       m_objName(name),
    00160       m_svc(svc),
    00161       m_evt(evt),
    00162       m_cevt(),
    00163       m_sc(0),
    00164       m_customEvtType(false)
    00165 {
    00166   i_before();
    00167 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( const std::string           &name      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | const std::string & | name,
|  | IAuditor * | svc,
|  | IAuditor::CustomEventTypeRef | evt |
| ) |  |  |

constructor

Definition at line 168 of file Guards.cpp.

References i_before().

    00170                                                :
    00171       m_obj(0),
    00172       m_objName(name),
    00173       m_svc(svc),
    00174       m_evt(IAuditor::Initialize), // Windows needs an explicit value
    00175       m_cevt(evt),
    00176       m_sc(0),
    00177       m_customEvtType(true)
    00178 {
    00179   i_before();
    00180 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( const std::string           &name      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | const std::string & | name,
|  | IAuditor * | svc,
|  | IAuditor::StandardEventType | evt,
|  | const StatusCode & | sc |
| ) |  |  |

constructor

Definition at line 181 of file Guards.cpp.

References i_before().

    00184                                            :
    00185       m_obj(0),
    00186       m_objName(name),
    00187       m_svc(svc),
    00188       m_evt(evt),
    00189       m_cevt(),
    00190       m_sc(&sc),
    00191       m_customEvtType(false)
    00192 {
    00193   i_before();
    00194 }
    Gaudi::Guards::AuditorGuard::AuditorGuard ( const std::string           &name      ,

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | const std::string & | name,
|  | IAuditor * | svc,
|  | IAuditor::CustomEventTypeRef | evt,
|  | const StatusCode & | sc |
| ) |  |  |

constructor

Definition at line 195 of file Guards.cpp.

References i_before().

    00198                                                  :
    00199       m_obj(0),
    00200       m_objName(name),
    00201       m_svc(svc),
    00202       m_evt(IAuditor::Initialize), // Windows needs an explicit value
    00203       m_cevt(evt),
    00204       m_sc(&sc),
    00205       m_customEvtType(true)
    00206 {
    00207   i_before();
    00208 }
    // ============================================================================

Gaudi::Guards::AuditorGuard::~AuditorGuard | ( |  | ) |

dectructor

Definition at line 212 of file Guards.cpp.

References i_after().

    00213 {
    00214   i_after();
    00215 }

Gaudi::Guards::AuditorGuard::AuditorGuard | ( |  | ) | `[private]`

the default constructor is disabled

Gaudi::Guards::AuditorGuard::AuditorGuard | ( | const AuditorGuard & | right | ) | `[private]`

no copy

## Member Function Documentation

const StatusCode& Gaudi::Guards::AuditorGuard::code | ( |  | ) | const`[inline]`

Definition at line 264 of file Guards.h.

References m_sc.

    00264 { return *m_sc ; }

AuditorGuard& Gaudi::Guards::AuditorGuard::operator= | ( | const AuditorGuard & | right | ) | `[private]`

no assignement

void Gaudi::Guards::AuditorGuard::i_before | ( |  | ) | `[inline, private]`

Definition at line 290 of file Guards.h.

References IInterface::addRef(), IAuditor::before(), m_cevt, m_customEvtType, m_evt, m_obj, m_objName, and m_svc.

Referenced by AuditorGuard().

    00290                              {
    00291         if ( 0 != m_svc ) { // if the service is not available, we cannot do anything
    00292           m_svc->addRef(); // increase the reference counting
    00293           if (0 != m_obj) {
    00294             if (m_customEvtType) {
    00295               m_svc->before(m_cevt,m_obj);
    00296             } else {
    00297               m_svc->before(m_evt,m_obj);
    00298             }
    00299           } else { // use object name
    00300             if (m_customEvtType) {
    00301               m_svc->before(m_cevt,m_objName);
    00302             } else {
    00303               m_svc->before(m_evt,m_objName);
    00304             }
    00305           }
    00306         }
    00307       }

void Gaudi::Guards::AuditorGuard::i_after | ( |  | ) | `[inline, private]`

Definition at line 309 of file Guards.h.

References IAuditor::after(), m_cevt, m_customEvtType, m_evt, m_obj, m_objName, m_sc, m_svc, and IInterface::release().

Referenced by ~AuditorGuard().

    00309                             {
    00310         if ( 0 != m_svc ) { // if the service is not available, we cannot do anything
    00311           if (0 != m_obj) {
    00312             if (m_customEvtType) {
    00313               if (0 != m_sc) {
    00314                 m_svc->after(m_cevt,m_obj,*m_sc);
    00315               } else {
    00316                 m_svc->after(m_cevt,m_obj);
    00317               }
    00318             } else {
    00319               if (0 != m_sc) {
    00320                 m_svc->after(m_evt,m_obj,*m_sc);
    00321               } else {
    00322                 m_svc->after(m_evt,m_obj);
    00323               }
    00324             }
    00325           } else { // use object name
    00326             if (m_customEvtType) {
    00327               if (0 != m_sc) {
    00328                 m_svc->after(m_cevt,m_objName,*m_sc);
    00329               } else {
    00330                 m_svc->after(m_cevt,m_objName);
    00331               }
    00332             } else {
    00333               if (0 != m_sc) {
    00334                 m_svc->after(m_evt,m_objName,*m_sc);
    00335               } else {
    00336                 m_svc->after(m_evt,m_objName);
    00337               }
    00338             }
    00339           }
    00340           m_svc->release(); // we do not need the service anymore
    00341           m_svc = 0 ;
    00342         }
    00343       }

## Member Data Documentation

INamedInterface* Gaudi::Guards::AuditorGuard::m_obj`[private]`

the guarded object

Definition at line 274 of file Guards.h.

Referenced by i_after(), and i_before().

std::string Gaudi::Guards::AuditorGuard::m_objName`[private]`

the guarded object name (if there is no INamedInterface)

Definition at line 276 of file Guards.h.

Referenced by i_after(), and i_before().

IAuditor* Gaudi::Guards::AuditorGuard::m_svc`[private]`

auditor service

Definition at line 278 of file Guards.h.

Referenced by i_after(), and i_before().

IAuditor::StandardEventType Gaudi::Guards::AuditorGuard::m_evt`[private]`

Event type (standard events).

Definition at line 280 of file Guards.h.

Referenced by i_after(), and i_before().

IAuditor::CustomEventType Gaudi::Guards::AuditorGuard::m_cevt`[private]`

Event type (custom events).

Definition at line 282 of file Guards.h.

Referenced by i_after(), and i_before().

const StatusCode* Gaudi::Guards::AuditorGuard::m_sc`[private]`

Pointer to a status code instance, to be passed to the "after" function if needed The instance must have a scope larger than the one of the guard.

No check is performed.

Definition at line 286 of file Guards.h.

Referenced by code(), and i_after().

bool Gaudi::Guards::AuditorGuard::m_customEvtType`[private]`

Flag to remember which event type was used.

Definition at line 288 of file Guards.h.

Referenced by i_after(), and i_before().

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r2/GaudiKernel/v25r2/GaudiKernel/Guards.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r2/GaudiKernel/v25r2/src/Lib/Guards.cpp