| The Gaudi Framework v28r2-patches (bc4ad17a)

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Friends | List of all members
StatusCode Class Referencefinal

This class is used for returning status codes from appropriate routines. More...

`#include <GaudiKernel/StatusCode.h>`

Collaboration diagram for StatusCode:
[legend]

## Classes
class | ScopedDisableChecking
| Simple RAII class to ignore unchecked StatusCode instances in a scope. More...

## Public Types
enum | { FAILURE = 0, SUCCESS = 1, RECOVERABLE = 2 }

## Public Member Functions
| StatusCode ()=default
| Constructor. More...
| StatusCode (unsigned long code, IssueSeverity &&sev)
| StatusCode (IssueSeverity &&is)
| StatusCode (unsigned long code, bool checked=false)
| StatusCode (const StatusCode &rhs)
| StatusCode (StatusCode &&rhs) noexcept
| Move constructor. More...
| ~StatusCode ()
| Destructor. More...
bool | isSuccess () const
| Test for a status code of SUCCESS. More...
bool | isFailure () const
| Test for a status code of FAILURE. More...
bool | isRecoverable () const
unsigned long | getCode () const
| Get the status code by value. More...
void | setCode (unsigned long value)
| Set the status code by value. More...
void | setChecked () const
| Ignore the checking code;. More...
void | ignore () const
| operator unsigned long () const
| Cast operator. More...
GAUDI_API const IssueSeverity & | severity () const
| Severity. More...
StatusCode & | operator= (unsigned long value)
| Assignment operator. More...
StatusCode & | operator= (const StatusCode &rhs)
| operator IgnoreError () const

## Static Public Member Functions
static GAUDI_API void | enableChecking ()
static GAUDI_API void | disableChecking ()
static GAUDI_API bool | checkingEnabled ()

## Protected Attributes
unsigned long | d_code = SUCCESS
| The status code. More...
bool | m_checked = false
| If the Status code has been checked. More...
std::shared_ptr< const IssueSeverity > | m_severity
| Pointer to a IssueSeverity. More...

## Static Protected Attributes
static bool | s_checking
| Global flag to control if StatusCode need to be checked. More...

## Private Member Functions
void | check ()

## Friends
bool | operator< (const StatusCode &a, const StatusCode &b)
| Comparison operator. More...
bool | operator> (const StatusCode &a, const StatusCode &b)
| Comparison operator. More...

## Detailed Description

This class is used for returning status codes from appropriate routines.

Author
  Iain Last
  Pere Mato
  Sebastien Ponce

Definition at line 26 of file StatusCode.h.

## Member Enumeration Documentation

anonymous enum

Enumerator
FAILURE |
SUCCESS |
RECOVERABLE |

Definition at line 28 of file StatusCode.h.

28 {
29 FAILURE = 0,
30 SUCCESS = 1,
31 RECOVERABLE = 2
32 };
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::RECOVERABLE
Definition: StatusCode.h:31

## Constructor & Destructor Documentation

StatusCode::StatusCode | ( |  | ) |
| default

Constructor.

StatusCode::StatusCode | ( | unsigned long | code,
|  | IssueSeverity && | sev
| ) |  |
| inline

Definition at line 37 of file StatusCode.h.

37 :
38 d_code(code) {
39 try { // ensure that we do not throw even if we cannot move the severity
40 m_severity = std::make_shared<const IssueSeverity>(std::move(sev));
41 }
42 catch (...) {}
43 }
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176
std::move
T move(T...args)
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:178

StatusCode::StatusCode | ( | IssueSeverity && | is | ) |
| inline

Definition at line 45 of file StatusCode.h.

45 :
46 StatusCode( is.getLevel() == IssueSeverity::RECOVERABLE ?
47 StatusCode::RECOVERABLE :
48 ( is.getLevel() < IssueSeverity::ERROR ?
49 StatusCode::SUCCESS :
50 StatusCode::FAILURE )
51 , std::move(is) ) { }
IssueSeverity::RECOVERABLE
Definition: IssueSeverity.h:55
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::FAILURE
Definition: StatusCode.h:29
IssueSeverity::ERROR
Definition: IssueSeverity.h:56
std::move
T move(T...args)
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
StatusCode::StatusCode
StatusCode()=default
Constructor.
IssueSeverity::getLevel
IssueSeverity::Level getLevel() const
Definition: IssueSeverity.h:82

StatusCode::StatusCode | ( | unsigned long | code,
|  | bool | checked = `false`
| ) |  |
| inline

Definition at line 53 of file StatusCode.h.

53 :
54 d_code(code),m_checked(checked) {}
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

StatusCode::StatusCode | ( | const StatusCode & | rhs | ) |
| inline

Definition at line 56 of file StatusCode.h.

56 :
57 d_code(rhs.d_code), m_checked(rhs.m_checked),
58 m_severity(rhs.m_severity)
59 { rhs.m_checked = true; }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:178

StatusCode::StatusCode | ( | StatusCode && | rhs | ) |
| inline noexcept

Move constructor.

Definition at line 62 of file StatusCode.h.

62 :
63 d_code(rhs.d_code), m_checked(rhs.m_checked),
64 m_severity( std::move(rhs.m_severity) )
65 { rhs.m_checked = true; }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176
std::move
T move(T...args)
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:178

StatusCode::~StatusCode | ( |  | ) |
| inline

Destructor.

Definition at line 68 of file StatusCode.h.

69 { if (UNLIKELY(s_checking)) check(); }
StatusCode::check
void check()
Definition: StatusCode.cpp:36
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:126
StatusCode::s_checking
static bool s_checking
Global flag to control if StatusCode need to be checked.
Definition: StatusCode.h:180

## Member Function Documentation

void StatusCode::check | ( |  | ) |
| private

Fix-Me:
  : (MCl) use backTrace(std::string&, const int, const int) instead

Definition at line 36 of file StatusCode.cpp.

36 {
37
38 if (!m_checked && !GaudiException::s_proc && !std::uncaught_exception() ) {
39
40 auto msg = Gaudi::svcLocator()->as<IMessageSvc>();
41 auto scs = Gaudi::svcLocator()->service<IStatusCodeSvc>("StatusCodeSvc");
42
43 const size_t depth = 21;
44 void* addresses[depth];
45
46 std::string lib, fnc;
47 void* addr = nullptr;
49 if (System::backTrace(addresses, depth)) {
50
51 for(size_t idx: {2, 3}) {
52 if (System::getStackLevel(addresses[idx], addr, fnc, lib) &&
53 fnc != "StatusCode::~StatusCode()") {
54
55 if (scs) {
56 scs->regFnc(fnc, lib);
57 } else {
58 MsgStream log(msg, "StatusCode");
59 log << MSG::WARNING << "Unchecked in " << fnc
60 << " (" << lib << ")" << endmsg;
61 }
62 break;
63 }
64 }
65 }
66 }
67 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
System::getStackLevel
GAUDI_API bool getStackLevel(void *addresses, void *&addr, std::string &fnc, std::string &lib)
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
GaudiException::s_proc
static bool s_proc
"previous" element in the linked list
Definition: GaudiException.h:169
ISvcLocator::as
SmartIF< IFace > as()
Definition: ISvcLocator.h:106
System::backTrace
GAUDI_API int backTrace(void **addresses, const int depth)
std::string
STL class.
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:78
Gaudi::svcLocator
GAUDI_API ISvcLocator * svcLocator()
IMessageSvc
The IMessage is the interface implemented by the message service.
Definition: IMessageSvc.h:57
std::uncaught_exception
T uncaught_exception(T...args)
GaudiMP.FdsRegistry.msg
msg
Definition: FdsRegistry.py:8
MSG::WARNING
Definition: IMessageSvc.h:20
IStatusCodeSvc
Definition: IStatusCodeSvc.h:7
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
Gaudi.Configuration.log
log
Definition: Configuration.py:13

bool StatusCode::checkingEnabled | ( |  | ) |
| static

Definition at line 27 of file StatusCode.cpp.

27 {
28 return s_checking;
29 }
StatusCode::s_checking
static bool s_checking
Global flag to control if StatusCode need to be checked.
Definition: StatusCode.h:180

void StatusCode::disableChecking | ( |  | ) |
| static

Definition at line 23 of file StatusCode.cpp.

23 {
24 s_checking = false;
25 }
StatusCode::s_checking
static bool s_checking
Global flag to control if StatusCode need to be checked.
Definition: StatusCode.h:180

void StatusCode::enableChecking | ( |  | ) |
| static

Definition at line 19 of file StatusCode.cpp.

19 {
20 s_checking = true;
21 }
StatusCode::s_checking
static bool s_checking
Global flag to control if StatusCode need to be checked.
Definition: StatusCode.h:180

unsigned long StatusCode::getCode | ( |  | ) | const
| inline

Get the status code by value.

Definition at line 91 of file StatusCode.h.

91 {
92 m_checked = true;
93 return d_code;
94 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

void StatusCode::ignore | ( |  | ) | const
| inline

Definition at line 106 of file StatusCode.h.

106 { setChecked(); }
StatusCode::setChecked
void setChecked() const
Ignore the checking code;.
Definition: StatusCode.h:103

bool StatusCode::isFailure | ( |  | ) | const
| inline

Test for a status code of FAILURE.

N.B. This is a specific type of failure where there aren't any more appropriate status codes. To test for any failure use : if ( !StatusCode.isSuccess() ) ...

Definition at line 84 of file StatusCode.h.

84 { return !isSuccess(); }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74

bool StatusCode::isRecoverable | ( |  | ) | const
| inline

Definition at line 85 of file StatusCode.h.

85 {
86 m_checked = true;
87 return (d_code == RECOVERABLE);
88 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176
StatusCode::RECOVERABLE
Definition: StatusCode.h:31

bool StatusCode::isSuccess | ( |  | ) | const
| inline

Test for a status code of SUCCESS.

N.B. This is the only case where a function has succeeded.

Definition at line 74 of file StatusCode.h.

74 {
75 m_checked = true;
76 return (d_code == SUCCESS);
77 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

StatusCode::operator IgnoreError | ( |  | ) | const
| inline

Definition at line 139 of file StatusCode.h.

139 {
140 m_checked = true;
141 return IgnoreError();
142 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
IgnoreError
Definition: StatusCode.h:24

StatusCode::operator unsigned long | ( |  | ) | const
| inline

Cast operator.

Definition at line 109 of file StatusCode.h.

109 { return getCode(); }
StatusCode::getCode
unsigned long getCode() const
Get the status code by value.
Definition: StatusCode.h:91

StatusCode& StatusCode::operator= | ( | unsigned long | value | ) |
| inline

Assignment operator.

Definition at line 115 of file StatusCode.h.

115 {
116 setCode(value);
117 return *this;
118 }
StatusCode::setCode
void setCode(unsigned long value)
Set the status code by value.
Definition: StatusCode.h:97

StatusCode& StatusCode::operator= | ( | const StatusCode & | rhs | ) |
| inline

Definition at line 119 of file StatusCode.h.

119 {
120 if (this == &rhs) return *this; // Protection against self-assignment
121 d_code = rhs.d_code;
122 m_checked = rhs.m_checked;
123 rhs.m_checked = true;
124 m_severity = rhs.m_severity;
125 return *this;
126 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:178

void StatusCode::setChecked | ( |  | ) | const
| inline

Ignore the checking code;.

Definition at line 103 of file StatusCode.h.

103 {
104 m_checked = true;
105 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177

void StatusCode::setCode | ( | unsigned long | value | ) |
| inline

Set the status code by value.

Definition at line 97 of file StatusCode.h.

97 {
98 m_checked = false;
99 d_code = value;
100 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:177
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

const IssueSeverity & StatusCode::severity | ( |  | ) | const

Severity.

Definition at line 31 of file StatusCode.cpp.

31 {
32 static const IssueSeverity dummy;
33 return m_severity ? *m_severity : dummy;
34 }
IssueSeverity
Definition: IssueSeverity.h:42
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:178

## Friends And Related Function Documentation

bool operator< | ( | const StatusCode & | a,
|  | const StatusCode & | b
| ) |  |
| friend

Comparison operator.

Definition at line 129 of file StatusCode.h.

129 {
130 return a.d_code < b.d_code;
131 }
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

bool operator> | ( | const StatusCode & | a,
|  | const StatusCode & | b
| ) |  |
| friend

Comparison operator.

Definition at line 134 of file StatusCode.h.

134 {
135 return a.d_code > b.d_code;
136 }
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:176

## Member Data Documentation

unsigned long StatusCode::d_code = SUCCESS
| protected

The status code.

The status code

Definition at line 176 of file StatusCode.h.

bool StatusCode::m_checked = false
| mutable protected

If the Status code has been checked.

Definition at line 177 of file StatusCode.h.

std::shared_ptr<const IssueSeverity> StatusCode::m_severity
| protected

Pointer to a IssueSeverity.

Definition at line 178 of file StatusCode.h.

bool StatusCode::s_checking
| static protected

Global flag to control if StatusCode need to be checked.

Definition at line 180 of file StatusCode.h.

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

- GaudiKernel/GaudiKernel/StatusCode.h
- GaudiKernel/src/Lib/StatusCode.cpp