| The Gaudi Framework v27r1

- 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::RECOVERABLE
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::SUCCESS
Definition: StatusCode.h:30

## 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:178
std::move
T move(T...args)
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:180

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
IssueSeverity::ERROR
Definition: IssueSeverity.h:56
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::SUCCESS
Definition: StatusCode.h:30
std::move
T move(T...args)
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:179
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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:179
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178
StatusCode::m_severity
std::shared_ptr< const IssueSeverity > m_severity
Pointer to a IssueSeverity.
Definition: StatusCode.h:180

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

Move constructor.

Definition at line 63 of file StatusCode.h.

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

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

Destructor.

Definition at line 70 of file StatusCode.h.

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

## 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
GaudiMP.FdsRegistry.msg
tuple msg
Definition: FdsRegistry.py:8
System::getStackLevel
GAUDI_API bool getStackLevel(void *addresses, void *&addr, std::string &fnc, std::string &lib)
Gaudi.Configuration.log
tuple log
Definition: Configuration.py:13
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179
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)
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

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:182

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:182

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:182

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

Get the status code by value.

Definition at line 93 of file StatusCode.h.

93 {
94 m_checked = true;
95 return d_code;
96 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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

Definition at line 108 of file StatusCode.h.

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

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 86 of file StatusCode.h.

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

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

Definition at line 87 of file StatusCode.h.

87 {
88 m_checked = true;
89 return (d_code == RECOVERABLE);
90 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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 76 of file StatusCode.h.

76 {
77 m_checked = true;
78 return (d_code == SUCCESS);
79 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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

Definition at line 141 of file StatusCode.h.

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

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

Cast operator.

Definition at line 111 of file StatusCode.h.

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

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

Assignment operator.

Definition at line 117 of file StatusCode.h.

117 {
118 setCode(value);
119 return *this;
120 }
StatusCode::setCode
void setCode(unsigned long value)
Set the status code by value.
Definition: StatusCode.h:99
dump_component_properties.value
list value
Definition: dump_component_properties.py:12

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

Definition at line 121 of file StatusCode.h.

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

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

Ignore the checking code;.

Definition at line 105 of file StatusCode.h.

105 {
106 m_checked = true;
107 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179

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

Set the status code by value.

Definition at line 99 of file StatusCode.h.

99 {
100 m_checked = false;
101 d_code = value;
102 }
StatusCode::m_checked
bool m_checked
If the Status code has been checked.
Definition: StatusCode.h:179
dump_component_properties.value
list value
Definition: dump_component_properties.py:12
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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:180

## Friends And Related Function Documentation

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

Comparison operator.

Definition at line 131 of file StatusCode.h.

131 {
132 return a.d_code < b.d_code;
133 }
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

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

Comparison operator.

Definition at line 136 of file StatusCode.h.

136 {
137 return a.d_code > b.d_code;
138 }
StatusCode::d_code
unsigned long d_code
The status code.
Definition: StatusCode.h:178

## Member Data Documentation

unsigned long StatusCode::d_code = SUCCESS
| protected

The status code.

The status code

Definition at line 178 of file StatusCode.h.

bool StatusCode::m_checked = false
| mutable protected

If the Status code has been checked.

Definition at line 179 of file StatusCode.h.

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

Pointer to a IssueSeverity.

Definition at line 180 of file StatusCode.h.

bool StatusCode::s_checking
| static protected

Global flag to control if StatusCode need to be checked.

Definition at line 182 of file StatusCode.h.

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

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