aboutsummaryrefslogtreecommitdiff
path: root/computer-network-experiment/Output.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-06-07 19:24:39 +0800
committercrupest <crupest@outlook.com>2021-06-07 19:24:39 +0800
commitce6348fa3731326046d8d69ec2171c1648a3d7d6 (patch)
treefbfd5a657de86dab73fbab446a8c0955bbd76104 /computer-network-experiment/Output.cpp
parentad9a2ad2a3f0488127e3fb618e4b30a40b50f57d (diff)
downloadlife-ce6348fa3731326046d8d69ec2171c1648a3d7d6.tar.gz
life-ce6348fa3731326046d8d69ec2171c1648a3d7d6.tar.bz2
life-ce6348fa3731326046d8d69ec2171c1648a3d7d6.zip
...
Diffstat (limited to 'computer-network-experiment/Output.cpp')
-rw-r--r--computer-network-experiment/Output.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/computer-network-experiment/Output.cpp b/computer-network-experiment/Output.cpp
index 8efb525..e3dc69e 100644
--- a/computer-network-experiment/Output.cpp
+++ b/computer-network-experiment/Output.cpp
@@ -1,5 +1,9 @@
#include "Output.h"
-#include "folly/CancellationToken.h"
+
+#include <folly/CancellationToken.h>
+
+#include <ostream>
+#include <type_traits>
folly::MPMCQueue<Output> output_queue(100);
@@ -8,12 +12,29 @@ folly::CancellationSource cancellation_source;
std::thread output_thread(OutputThread);
void PrintOutput(const Output &output) {
+ std::basic_ostream<Char> *stream;
+
switch (output.type) {
case OutputType::Error:
- error_stream << output.message;
+ stream = &error_stream;
break;
default:
- output_stream << output.message;
+ stream = &output_stream;
+ break;
+ }
+
+ switch (output.color) {
+ case OutputColor::Normal:
+ (*stream) << output.message;
+ break;
+ case OutputColor::Green:
+ (*stream) << CRUT("\x1b[32m") << output.message << CRUT("\x1b[0m");
+ break;
+ case OutputColor::Red:
+ (*stream) << CRUT("\x1b[31m") << output.message << CRUT("\x1b[0m");
+ break;
+ case OutputColor::Yellow:
+ (*stream) << CRUT("\x1b[33m") << output.message << CRUT("\x1b[0m");
break;
}
}