aboutsummaryrefslogtreecommitdiff
path: root/works/life/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
commit868936626cd32590b697cc5ba0c67e032deabd38 (patch)
tree1834fb5eabb761252f34022284ed221cfa83b110 /works/life/computer-network-experiment/Output.cpp
parent0dd20e5dde39d1cc42ca5c92f56cdb087c1b8f00 (diff)
downloadcrupest-868936626cd32590b697cc5ba0c67e032deabd38.tar.gz
crupest-868936626cd32590b697cc5ba0c67e032deabd38.tar.bz2
crupest-868936626cd32590b697cc5ba0c67e032deabd38.zip
import(life): ...
Diffstat (limited to 'works/life/computer-network-experiment/Output.cpp')
-rw-r--r--works/life/computer-network-experiment/Output.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/works/life/computer-network-experiment/Output.cpp b/works/life/computer-network-experiment/Output.cpp
index 8efb525..e3dc69e 100644
--- a/works/life/computer-network-experiment/Output.cpp
+++ b/works/life/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;
}
}