ATLAS Offline Software
Loading...
Searching...
No Matches
RCU::Message Struct Reference

#include <Message.h>

Collaboration diagram for RCU::Message:

Public Member Functions

 Message ()
 effects: standard constructor guarantee: no-fail
void send () const
 effects: print the given message guarantee: basic failures: i/o errors

Public Attributes

const char * file
 description: the location where the message was send
unsigned line
MessageType type
 description: the type of this message
const char * message
 description: the actual message we are sending or 0 if there isn't one

Detailed Description

Constructor & Destructor Documentation

◆ Message()

RCU::Message::Message ( )

effects: standard constructor guarantee: no-fail

Definition at line 27 of file Message.cxx.

29 : file (nullptr), line (0), type (MESSAGE_UNSPECIFIED),
30 message (nullptr)
31 {
32 }
@ MESSAGE_UNSPECIFIED
description: unspecified message type
Definition MessageType.h:34
const char * file
description: the location where the message was send
MessageType type
description: the type of this message
const char * message
description: the actual message we are sending or 0 if there isn't one

Member Function Documentation

◆ send()

void RCU::Message::send ( ) const

effects: print the given message guarantee: basic failures: i/o errors

Definition at line 36 of file Message.cxx.

38 {
39 using namespace msgRootCoreUtils;
40
41 MessageType mytype = type;
42 if (mytype < 0 || mytype > MESSAGE_UNSPECIFIED)
43 mytype = MESSAGE_UNSPECIFIED;
44
45 std::ostringstream str;
46
47 if (file != nullptr)
48 {
49 if (strncmp (file, "../", 3) == 0)
50 str << (file+3) << ":";
51 else
52 str << file << ":";
53 }
54 if (line != 0)
55 str << line << ":";
56
57 if (mytype != MESSAGE_UNSPECIFIED)
58 {
59 static const char * const type_names[MESSAGE_UNSPECIFIED] =
60 {"message", "warning", "error", "exception", "abort"};
61 str << type_names[mytype] << ":";
62 }
63
64 if (!str.str().empty())
65 str << " ";
66 if (message != nullptr)
67 str << message;
68 else
69 str << "(null)";
70
71 const char *envname = nullptr;
72 if (mytype == MESSAGE_ABORT)
73 envname = "ROOTCOREUTILS_ABORT";
74 else if (mytype == MESSAGE_EXCEPTION)
75 envname = "ROOTCOREUTILS_EXCEPTION";
76 if (envname)
77 {
78 const char *abort_type = getenv (envname);
79 const MessageType def_type = MESSAGE_EXCEPTION;
80
81 if (abort_type == nullptr)
82 {
83 mytype = def_type;
84 } else if (strcmp (abort_type, "abort") == 0)
85 {
86 mytype = MESSAGE_ABORT;
87 } else if (strcmp (abort_type, "exception") == 0)
88 {
89 mytype = MESSAGE_EXCEPTION;
90 } else
91 {
92 mytype = def_type;
93
94 ANA_MSG_WARNING (std::string ("unknown value for ") << envname << " " << abort_type);
95 }
96 }
97
98 std::cout << str.str() << std::endl;
99 if (mytype == MESSAGE_EXCEPTION)
100 throw std::runtime_error (str.str());
101 if (mytype == MESSAGE_ABORT)
102 std::abort ();
103 }
#define ANA_MSG_WARNING(xmsg)
Macro printing warning messages.
MessageType
Definition MessageType.h:17
@ MESSAGE_ABORT
description: print and abort
Definition MessageType.h:31
@ MESSAGE_EXCEPTION
description: send out an exception
Definition MessageType.h:28
std::string getenv(const std::string &variableName)
get an environment variable

Member Data Documentation

◆ file

const char* RCU::Message::file

description: the location where the message was send

Definition at line 22 of file PhysicsAnalysis/D3PDTools/RootCoreUtils/RootCoreUtils/Message.h.

◆ line

unsigned RCU::Message::line

◆ message

const char* RCU::Message::message

description: the actual message we are sending or 0 if there isn't one

Definition at line 33 of file PhysicsAnalysis/D3PDTools/RootCoreUtils/RootCoreUtils/Message.h.

◆ type

MessageType RCU::Message::type

description: the type of this message

Definition at line 28 of file PhysicsAnalysis/D3PDTools/RootCoreUtils/RootCoreUtils/Message.h.


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