21
21
22
22
ui_message_handlert::ui_message_handlert ()
23
23
: _ui(uit::PLAIN),
24
+ always_flush(false ),
24
25
time(timestampert::make(timestampert::clockt::NONE)),
25
26
out(std::cout),
26
27
json_stream(nullptr )
@@ -30,8 +31,10 @@ ui_message_handlert::ui_message_handlert()
30
31
ui_message_handlert::ui_message_handlert (
31
32
uit __ui,
32
33
const std::string &program,
34
+ bool always_flush,
33
35
timestampert::clockt clock_type)
34
36
: _ui(__ui),
37
+ always_flush(always_flush),
35
38
time(timestampert::make(clock_type)),
36
39
out(std::cout),
37
40
json_stream(nullptr )
@@ -79,6 +82,7 @@ ui_message_handlert::ui_message_handlert(
79
82
? uit::JSON_UI
80
83
: uit::PLAIN,
81
84
program,
85
+ cmdline.isset(" flush" ),
82
86
cmdline.isset(" timestamp" )
83
87
? cmdline.get_value(" timestamp" ) == "monotonic"
84
88
? timestampert::clockt::MONOTONIC
@@ -130,11 +134,13 @@ void ui_message_handlert::print(
130
134
{
131
135
case uit::PLAIN:
132
136
{
133
- console_message_handlert console_message_handler;
137
+ console_message_handlert console_message_handler (always_flush) ;
134
138
std::stringstream ss;
135
139
const std::string timestamp = time ->stamp ();
136
140
ss << timestamp << (timestamp.empty () ? " " : " " ) << message;
137
141
console_message_handler.print (level, ss.str ());
142
+ if (always_flush)
143
+ console_message_handler.flush (level);
138
144
}
139
145
break ;
140
146
@@ -144,6 +150,8 @@ void ui_message_handlert::print(
144
150
source_locationt location;
145
151
location.make_nil ();
146
152
print (level, message, -1 , location);
153
+ if (always_flush)
154
+ flush (level);
147
155
}
148
156
break ;
149
157
}
@@ -302,7 +310,7 @@ void ui_message_handlert::flush(unsigned level)
302
310
{
303
311
case uit::PLAIN:
304
312
{
305
- console_message_handlert console_message_handler;
313
+ console_message_handlert console_message_handler (always_flush) ;
306
314
console_message_handler.flush (level);
307
315
}
308
316
break ;
0 commit comments