Commit | Line | Data |
---|---|---|
b4953462 SM |
1 | /* |
2 | * SPDX-License-Identifier: MIT | |
3 | * | |
4 | * Copyright (c) 2022 Simon Marchi <simon.marchi@efficios.com> | |
5 | * Copyright (c) 2022 Philippe Proulx <eeppeliteloop@gmail.com> | |
6 | */ | |
7 | ||
8 | #ifndef BABELTRACE_CPP_COMMON_CFG_ERROR_REPORTING_HPP | |
9 | #define BABELTRACE_CPP_COMMON_CFG_ERROR_REPORTING_HPP | |
10 | ||
11 | #include <babeltrace2/babeltrace.h> | |
c802cacb | 12 | |
b4953462 SM |
13 | #include "cfg-logging.hpp" |
14 | ||
15 | /* | |
16 | * Appends a cause to the error of the current thread using the logging | |
17 | * configuration `_log_cfg`. | |
18 | */ | |
19 | #define BT_APPEND_CAUSE_EX(_log_cfg, _fmt, ...) \ | |
20 | do { \ | |
21 | if ((_log_cfg).selfMsgIter()) { \ | |
22 | BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_MESSAGE_ITERATOR((_log_cfg).selfMsgIter(), \ | |
23 | _fmt, ##__VA_ARGS__); \ | |
24 | } else if ((_log_cfg).selfComp()) { \ | |
25 | BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT((_log_cfg).selfComp(), _fmt, \ | |
26 | ##__VA_ARGS__); \ | |
27 | } else if ((_log_cfg).selfCompCls()) { \ | |
28 | BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT_CLASS((_log_cfg).selfCompCls(), \ | |
29 | _fmt, ##__VA_ARGS__); \ | |
30 | } else { \ | |
31 | BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN((_log_cfg).moduleName(), _fmt, \ | |
32 | ##__VA_ARGS__); \ | |
33 | } \ | |
34 | } while (false) | |
35 | ||
36 | #define BT_APPEND_CAUSE(_fmt, ...) BT_APPEND_CAUSE_EX((BT_CLOG_CFG), _fmt, ##__VA_ARGS__) | |
37 | ||
38 | /* | |
39 | * Appends a cause to the error of the current thread using the logging | |
40 | * configuration `_log_cfg`. | |
41 | */ | |
42 | #define BT_APPEND_CAUSE_STR_EX(_log_cfg, _str) BT_APPEND_CAUSE_EX((_log_cfg), "%s", _str) | |
43 | ||
44 | #define BT_APPEND_CAUSE_STR(_str) BT_APPEND_CAUSE_STR_EX((BT_CLOG_CFG), _str) | |
45 | ||
46 | /* | |
47 | * Appends a cause with an errno message to the error of the current | |
48 | * thread using the logging configuration `_log_cfg`. | |
49 | */ | |
50 | #define BT_APPEND_CAUSE_ERRNO_EX(_log_cfg, _init_msg, _fmt, ...) \ | |
51 | do { \ | |
52 | const auto errStr = g_strerror(errno); \ | |
53 | BT_APPEND_CAUSE_EX((_log_cfg), "%s: %s" _fmt, _init_msg, errStr, ##__VA_ARGS__); \ | |
54 | } while (false) | |
55 | ||
56 | #define BT_APPEND_CAUSE_ERRNO(_init_msg, _fmt, ...) \ | |
57 | BT_APPEND_CAUSE_EX((BT_CLOG_CFG), _init_msg, _fmt, ##__VA_ARGS__) | |
58 | ||
59 | #endif /* BABELTRACE_CPP_COMMON_CFG_ERROR_REPORTING_HPP */ |