logging: Make use of bounded queue
This commit is contained in:
		| @@ -28,7 +28,7 @@ | ||||
| #ifdef _WIN32 | ||||
| #include "common/string_util.h" | ||||
| #endif | ||||
| #include "common/threadsafe_queue.h" | ||||
| #include "common/bounded_threadsafe_queue.h" | ||||
|  | ||||
| namespace Common::Log { | ||||
|  | ||||
| @@ -204,11 +204,11 @@ public: | ||||
|  | ||||
|     void PushEntry(Class log_class, Level log_level, const char* filename, unsigned int line_num, | ||||
|                    const char* function, std::string&& message) { | ||||
|         if (!filter.CheckMessage(log_class, log_level)) | ||||
|         if (!filter.CheckMessage(log_class, log_level)) { | ||||
|             return; | ||||
|         const Entry& entry = | ||||
|             CreateEntry(log_class, log_level, filename, line_num, function, std::move(message)); | ||||
|         message_queue.Push(entry); | ||||
|         } | ||||
|         message_queue.Push( | ||||
|             CreateEntry(log_class, log_level, filename, line_num, function, std::move(message))); | ||||
|     } | ||||
|  | ||||
| private: | ||||
| @@ -225,7 +225,7 @@ private: | ||||
|                 ForEachBackend([&entry](Backend& backend) { backend.Write(entry); }); | ||||
|             }; | ||||
|             while (!stop_token.stop_requested()) { | ||||
|                 entry = message_queue.PopWait(stop_token); | ||||
|                 message_queue.PopWait(entry, stop_token); | ||||
|                 if (entry.filename != nullptr) { | ||||
|                     write_logs(); | ||||
|                 } | ||||
| @@ -233,7 +233,7 @@ private: | ||||
|             // Drain the logging queue. Only writes out up to MAX_LOGS_TO_WRITE to prevent a | ||||
|             // case where a system is repeatedly spamming logs even on close. | ||||
|             int max_logs_to_write = filter.IsDebug() ? INT_MAX : 100; | ||||
|             while (max_logs_to_write-- && message_queue.Pop(entry)) { | ||||
|             while (max_logs_to_write-- && message_queue.TryPop(entry)) { | ||||
|                 write_logs(); | ||||
|             } | ||||
|         }); | ||||
| @@ -273,7 +273,7 @@ private: | ||||
|     ColorConsoleBackend color_console_backend{}; | ||||
|     FileBackend file_backend; | ||||
|  | ||||
|     MPSCQueue<Entry, true> message_queue{}; | ||||
|     MPSCQueue<Entry> message_queue{}; | ||||
|     std::chrono::steady_clock::time_point time_origin{std::chrono::steady_clock::now()}; | ||||
|     std::jthread backend_thread; | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user