This source file includes following definitions.
- event_set_fatal_callback
- event_exit
- event_err
- event_warn
- event_sock_err
- event_sock_warn
- event_errx
- event_warnx
- event_msgx
- _event_debugx
- _warn_helper
- event_set_log_callback
- event_log
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 #include "event2/event-config.h"
41
42 #ifdef WIN32
43 #include <winsock2.h>
44 #define WIN32_LEAN_AND_MEAN
45 #include <windows.h>
46 #undef WIN32_LEAN_AND_MEAN
47 #endif
48 #include <sys/types.h>
49 #include <stdio.h>
50 #include <stdlib.h>
51 #include <stdarg.h>
52 #include <string.h>
53 #include <errno.h>
54 #include "event2/event.h"
55 #include "event2/util.h"
56
57 #include "log-internal.h"
58
59 static void _warn_helper(int severity, const char *errstr, const char *fmt,
60 va_list ap);
61 static void event_log(int severity, const char *msg);
62 static void event_exit(int errcode) EV_NORETURN;
63
64 static event_fatal_cb fatal_fn = NULL;
65
66
67 int ompi_event_enable_debug_output = 0;
68
69
70 void
71 event_set_fatal_callback(event_fatal_cb cb)
72 {
73 fatal_fn = cb;
74 }
75
76 static void
77 event_exit(int errcode)
78 {
79 if (fatal_fn) {
80 fatal_fn(errcode);
81 exit(errcode);
82 } else if (errcode == _EVENT_ERR_ABORT)
83 abort();
84 else
85 exit(errcode);
86 }
87
88 void
89 event_err(int eval, const char *fmt, ...)
90 {
91 va_list ap;
92
93 va_start(ap, fmt);
94 _warn_helper(_EVENT_LOG_ERR, strerror(errno), fmt, ap);
95 va_end(ap);
96 event_exit(eval);
97 }
98
99 void
100 event_warn(const char *fmt, ...)
101 {
102 va_list ap;
103
104 va_start(ap, fmt);
105 _warn_helper(_EVENT_LOG_WARN, strerror(errno), fmt, ap);
106 va_end(ap);
107 }
108
109 void
110 event_sock_err(int eval, evutil_socket_t sock, const char *fmt, ...)
111 {
112 va_list ap;
113 int err = evutil_socket_geterror(sock);
114
115 va_start(ap, fmt);
116 _warn_helper(_EVENT_LOG_ERR, evutil_socket_error_to_string(err), fmt, ap);
117 va_end(ap);
118 event_exit(eval);
119 }
120
121 void
122 event_sock_warn(evutil_socket_t sock, const char *fmt, ...)
123 {
124 va_list ap;
125 int err = evutil_socket_geterror(sock);
126
127 va_start(ap, fmt);
128 _warn_helper(_EVENT_LOG_WARN, evutil_socket_error_to_string(err), fmt, ap);
129 va_end(ap);
130 }
131
132 void
133 event_errx(int eval, const char *fmt, ...)
134 {
135 va_list ap;
136
137 va_start(ap, fmt);
138 _warn_helper(_EVENT_LOG_ERR, NULL, fmt, ap);
139 va_end(ap);
140 event_exit(eval);
141 }
142
143 void
144 event_warnx(const char *fmt, ...)
145 {
146 va_list ap;
147
148 va_start(ap, fmt);
149 _warn_helper(_EVENT_LOG_WARN, NULL, fmt, ap);
150 va_end(ap);
151 }
152
153 void
154 event_msgx(const char *fmt, ...)
155 {
156 va_list ap;
157
158 va_start(ap, fmt);
159 _warn_helper(_EVENT_LOG_MSG, NULL, fmt, ap);
160 va_end(ap);
161 }
162
163 void
164 _event_debugx(const char *fmt, ...)
165 {
166 va_list ap;
167
168 va_start(ap, fmt);
169 _warn_helper(_EVENT_LOG_DEBUG, NULL, fmt, ap);
170 va_end(ap);
171 }
172
173 static void
174 _warn_helper(int severity, const char *errstr, const char *fmt, va_list ap)
175 {
176 char buf[1024];
177 size_t len;
178
179 if (fmt != NULL)
180 evutil_vsnprintf(buf, sizeof(buf), fmt, ap);
181 else
182 buf[0] = '\0';
183
184 if (errstr) {
185 len = strlen(buf);
186 if (len < sizeof(buf) - 3) {
187 evutil_snprintf(buf + len, sizeof(buf) - len, ": %s", errstr);
188 }
189 }
190
191 event_log(severity, buf);
192 }
193
194 static event_log_cb log_fn = NULL;
195
196 void
197 event_set_log_callback(event_log_cb cb)
198 {
199 log_fn = cb;
200 }
201
202 static void
203 event_log(int severity, const char *msg)
204 {
205 if (log_fn)
206 log_fn(severity, msg);
207 else {
208 const char *severity_str;
209 switch (severity) {
210 case _EVENT_LOG_DEBUG:
211 severity_str = "debug";
212 break;
213 case _EVENT_LOG_MSG:
214 severity_str = "msg";
215 break;
216 case _EVENT_LOG_WARN:
217 severity_str = "warn";
218 break;
219 case _EVENT_LOG_ERR:
220 severity_str = "err";
221 break;
222 default:
223 severity_str = "???";
224 break;
225 }
226 (void)fprintf(stderr, "[%s] %s\n", severity_str, msg);
227 }
228 }