19
19
#include " cout_message.h"
20
20
#include " cmdline.h"
21
21
22
- ui_message_handlert::ui_message_handlert ()
23
- : _ui(uit::PLAIN),
24
- always_flush(false ),
25
- time(timestampert::make(timestampert::clockt::NONE)),
26
- out(std::cout),
27
- json_stream(nullptr )
28
- {
29
- }
30
-
31
22
ui_message_handlert::ui_message_handlert (
23
+ message_handlert *message_handler,
32
24
uit __ui,
33
25
const std::string &program,
34
26
bool always_flush,
35
27
timestampert::clockt clock_type)
36
- : _ui(__ui),
28
+ : message_handler(message_handler),
29
+ _ui(__ui),
37
30
always_flush(always_flush),
38
31
time(timestampert::make(clock_type)),
39
32
out(std::cout),
@@ -73,6 +66,7 @@ ui_message_handlert::ui_message_handlert(
73
66
const class cmdlinet &cmdline,
74
67
const std::string &program)
75
68
: ui_message_handlert(
69
+ nullptr ,
76
70
cmdline.isset(" xml-ui" ) ? uit::XML_UI : cmdline.isset(" json-ui" )
77
71
? uit::JSON_UI
78
72
: uit::PLAIN,
@@ -88,6 +82,12 @@ ui_message_handlert::ui_message_handlert(
88
82
{
89
83
}
90
84
85
+ ui_message_handlert::ui_message_handlert (message_handlert &message_handler)
86
+ : ui_message_handlert(
87
+ &message_handler, uit::PLAIN, " " , false , timestampert::clockt::NONE)
88
+ {
89
+ }
90
+
91
91
ui_message_handlert::~ui_message_handlert ()
92
92
{
93
93
switch (get_ui ())
@@ -129,13 +129,22 @@ void ui_message_handlert::print(
129
129
{
130
130
case uit::PLAIN:
131
131
{
132
- console_message_handlert console_message_handler (always_flush);
133
132
std::stringstream ss;
134
133
const std::string timestamp = time ->stamp ();
135
134
ss << timestamp << (timestamp.empty () ? " " : " " ) << message;
136
- console_message_handler.print (level, ss.str ());
137
- if (always_flush)
138
- console_message_handler.flush (level);
135
+ if (message_handler)
136
+ {
137
+ message_handler->print (level, ss.str ());
138
+ if (always_flush)
139
+ message_handler->flush (level);
140
+ }
141
+ else
142
+ {
143
+ console_message_handlert msg (always_flush);
144
+ msg.print (level, ss.str ());
145
+ if (always_flush)
146
+ msg.flush (level);
147
+ }
139
148
}
140
149
break ;
141
150
@@ -298,8 +307,15 @@ void ui_message_handlert::flush(unsigned level)
298
307
{
299
308
case uit::PLAIN:
300
309
{
301
- console_message_handlert console_message_handler (always_flush);
302
- console_message_handler.flush (level);
310
+ if (message_handler)
311
+ {
312
+ message_handler->flush (level);
313
+ }
314
+ else
315
+ {
316
+ console_message_handlert msg (always_flush);
317
+ msg.flush (level);
318
+ }
303
319
}
304
320
break ;
305
321
0 commit comments