![]() |
|
|
Generated: 18 Jul 2008 |
#include <GaudiKernel/Guards.h>
Collaboration diagram for Gaudi::Guards::AuditorGuard:

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 ; }
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. | |
| 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
| const StatusCode& Gaudi::Guards::AuditorGuard::code | ( | ) | const [inline] |
| 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 }
the guarded object
Definition at line 274 of file Guards.h.
Referenced by i_after(), and i_before().
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] |
Event type (standard events).
Definition at line 280 of file Guards.h.
Referenced by i_after(), and i_before().
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] |
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().