aboutsummaryrefslogtreecommitdiff
path: root/computer-network-experiment/Output.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-06-07 23:24:43 +0800
committercrupest <crupest@outlook.com>2021-06-07 23:24:43 +0800
commit2dd9b0e926ed97b64f0e6c2b6c071feaab9c47a0 (patch)
tree6a87c790fc03e3e95f14de9a59257aec66ba65b7 /computer-network-experiment/Output.cpp
parent1dd5c424e198a59b3572352fd973fe34dad225d1 (diff)
downloadlife-2dd9b0e926ed97b64f0e6c2b6c071feaab9c47a0.tar.gz
life-2dd9b0e926ed97b64f0e6c2b6c071feaab9c47a0.tar.bz2
life-2dd9b0e926ed97b64f0e6c2b6c071feaab9c47a0.zip
...
Diffstat (limited to 'computer-network-experiment/Output.cpp')
-rw-r--r--computer-network-experiment/Output.cpp76
1 files changed, 0 insertions, 76 deletions
diff --git a/computer-network-experiment/Output.cpp b/computer-network-experiment/Output.cpp
deleted file mode 100644
index fbbd6ba..0000000
--- a/computer-network-experiment/Output.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "Output.h"
-
-#include <folly/CancellationToken.h>
-
-#include <mutex>
-#include <ostream>
-#include <type_traits>
-
-std::mutex m;
-
-folly::MPMCQueue<Output> output_queue(100);
-
-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:
- stream = &error_stream;
- break;
- default:
- 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[39m")
- << std::flush;
- break;
- case OutputColor::Red:
- (*stream) << CRUT("\x1b[31m") << output.message << CRUT("\x1b[39m")
- << std::flush;
- break;
- case OutputColor::Yellow:
- (*stream) << CRUT("\x1b[33m") << output.message << CRUT("\x1b[39m")
- << std::flush;
- break;
- }
-}
-
-void OutputThread() {
- while (true) {
- std::lock_guard<std::mutex> guard(m);
-
- if (cancellation_source.getToken().isCancellationRequested()) {
- while (true) {
- Output output;
- if (output_queue.readIfNotEmpty(output)) {
- PrintOutput(output);
- } else {
- return;
- }
- }
- }
-
- Output output;
- if (output_queue.readIfNotEmpty(output))
- PrintOutput(output);
- }
-}
-
-void SignalAndWaitForOutputThreadStop() {
- cancellation_source.requestCancellation();
- output_thread.join();
-}
-
-std::lock_guard<std::mutex> BlockOutputThread() {
- return std::lock_guard<std::mutex>(m);
-}