Newer
Older

Graziano Scalamera
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* alarm-thread.cpp
*
* $Author: claudio $
*
* $Revision: 1.7 $
*
* $Log: alarm-thread.cpp,v $
* Revision 1.7 2015-07-21 13:40:59 claudio
* minor cleanups
*
* Revision 1.6 2013-03-06 10:41:11 claudio
* commented out debug print statements
*
* Revision 1.5 2008-07-08 12:11:39 graziano
* omni_thread_fatal exception handling
*
* Revision 1.4 2008/07/07 09:13:12 graziano
* omni_thread_fatal exception handling
*
* Revision 1.3 2008/04/24 06:51:34 graziano
* small code cleanings
*
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
*/
#include "alarm-thread.h"
static const char __FILE__rev[] = __FILE__ " $Revision: 1.7 $";
/*
* alarm_thread::alarm_thread()
*/
alarm_thread::alarm_thread(Alarm_ns::Alarm *p) : p_Alarm(p)
{
//cout << __FILE__rev << endl;
}
/*
* alarm_thread::~alarm_thread()
*/
alarm_thread::~alarm_thread()
{
p_Alarm = NULL;
}
/*
* alarm_thread::run()
*/
void alarm_thread::run(void *)
{
while (true) {
/*
* pop_front() will wait() on condition variable
*/
try
{
bei_t e = p_Alarm->evlist.pop_front();
//DEBUG_STREAM << "alarm_thread::run(): woken up!!!! " << e.name << endl;
if ((e.ev_name == ALARM_THREAD_EXIT) && \
(e.value[0] == ALARM_THREAD_EXIT_VALUE))
break;
p_Alarm->do_alarm(e);
}
catch(omni_thread_fatal& ex)
{
ostringstream err;
err << "omni_thread_fatal exception running alarm thread, err=" << ex.error << ends;
//WARN_STREAM << "alarm_thread::run(): " << err.str() << endl;
printf("alarm_thread::run(): %s", err.str().c_str());
}
catch(Tango::DevFailed& ex)
{
ostringstream err;
err << "exception running alarm thread: '" << ex.errors[0].desc << "'" << ends;
//WARN_STREAM << "alarm_thread::run(): " << err.str() << endl;
printf("alarm_thread::run(): %s", err.str().c_str());
Tango::Except::print_exception(ex);
}
catch(...)
{
//WARN_STREAM << "alarm_thread::run(): catched unknown exception!!" << endl;
printf("alarm_thread::run(): catched unknown exception!!");
}
}
//cout << "alarm_thread::run(): returning" << endl;
} /* alarm_thread::run() */