10 #include "core/chrono.h" 26 #define JLE_HERE JLE_SS(__PRETTY_FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ << ")") 60 std::string code_source ;
63 al::priority priority ;
68 const std::string& _code_source ,
69 const std::string& _subject ,
70 const std::string& _message ,
71 al::priority _priority ,
74 : code_source (_code_source),
79 time_point (jle::chrono::now())
103 const std::string& _codeSource,
104 const std::string& _subject,
105 const std::string& _message,
106 al::priority _priority,
107 al::type _type = al::type::unknown
109 : base_alarm(_codeSource, _subject, _message, _priority, _type)
110 , alarm_id(++class_alarm_id%=2000000000)
115 alarm& add (
const base_alarm& prev_alarm) {
116 stack_alarms.push_back(prev_alarm);
121 stack_alarms.push_back(prev_alarm);
123 std::list<base_alarm>::const_iterator it= prev_alarm.stack_alarms.begin();
124 while (it != prev_alarm.stack_alarms.end())
126 stack_alarms.push_back(*it);
133 std::list<base_alarm> stack_alarms;
136 static int class_alarm_id;
144 extern void alarm_msg (
const alarm& error);
155 #define JLE_CATCH_RETHROW(__SUBJECT__, __DESCRIPTION__) \ 156 catch (jle::alarm& __alarm__) { \ 157 if (__alarm__.subject == __SUBJECT__ && __alarm__.message ==(__DESCRIPTION__ +std::string(" alarm"))) \ 159 jle::alarm jle_error( \ 162 __DESCRIPTION__ +std::string(" alarm"), \ 163 __alarm__.priority, \ 166 jle_error.add(__alarm__); \ 168 } catch (std::exception& e) { \ 172 __DESCRIPTION__ +std::string(" exception ") + e.what(),\ 173 jle::al::priority::critic); \ 178 __DESCRIPTION__ +std::string(" ..."), \ 179 jle::al::priority::critic); \ 182 #define JLE_CATCH_CALLFUNCION(__FUNCTION2CALL__, __SUBJECT__, __DESCRIPTION__) \ 183 catch (const jle::alarm& __alarm__) { \ 184 jle::alarm jle_error( \ 187 __DESCRIPTION__ + std::string(" alarm"),\ 188 jle::al::priority::critic, \ 191 jle_error.add(__alarm__); \ 192 __FUNCTION2CALL__ (jle_error); \ 193 } catch (std::exception& e) { \ 194 __FUNCTION2CALL__ (jle::alarm( \ 197 __DESCRIPTION__ + std::string(" exception ") + e.what(), \ 198 jle::al::priority::critic)); \ 200 __FUNCTION2CALL__ (jle::alarm( \ 203 __DESCRIPTION__ + std::string(" exception"),\ 204 jle::al::priority::critic)); \ 207 std::ostream& operator<< (std::ostream& os,
const jle::alarm& a);
216 #endif // JLE_ALARM_H similar to std::chrono::time_point but monotonic with adjustments to system_clock ...
Definition: chrono.h:42
generic namespace
Definition: alarm.cpp:12