Skip to content
Extraits de code Groupes Projets

Add clean logs support + dependent MR

Fusionnées Kubat a demandé de fusionner log-macros vers master
3 fichiers
+ 41
23
Comparer les modifications
  • Côte à côte
  • En ligne
Fichiers
3
+ 13
12
@@ -3,6 +3,7 @@
using namespace Vivy;
LogSink::~LogSink() noexcept {}
Logger::~Logger() noexcept { parentLogSink->closeLoggerClients(); }
LogMessage::~LogMessage() noexcept { parentLogger->sendLogMessage(*this); }
const chrono::milliseconds
@@ -30,12 +31,19 @@ Logger::sendLogMessage(const LogMessage &msg) const noexcept
parentLogSink->recieveLogMessage(this, msg);
}
const std::string_view
Logger::getCategoryView() const noexcept
{
return std::string_view{ logCategory };
}
// Get the log message from the logger and add it to the sink's queue.
void
LogSink::recieveLogMessage(const Logger *const logger, LogMessage const &msg) noexcept
{
const std::lock_guard<std::mutex> messageQueueLockGuard(messageQueueLock);
messageQueue.emplace_back(msg);
messageQueue.push_back(
std::tuple<const std::string_view, const LogMessage>{ logger->getCategoryView(), msg });
}
std::shared_ptr<LogSink>
@@ -54,18 +62,11 @@ LogSink::registerLoggerClient(std::shared_ptr<Logger> logger) noexcept
}
void
LogSink::closeLoggerClient(Logger *const logger) noexcept
{
clientLoggers.erase(std::remove_if(std::begin(clientLoggers), std::end(clientLoggers),
[logger](const std::shared_ptr<Logger> &ptr) {
return ptr.get() == logger;
}));
}
void
LogSink::closeLoggerClient(const std::shared_ptr<Logger> &ptr) noexcept
LogSink::closeLoggerClients() noexcept
{
closeLoggerClient(ptr.get());
clientLoggers.erase(
std::remove_if(std::begin(clientLoggers), std::end(clientLoggers),
[](const std::weak_ptr<Logger> &weakPtr) { return !weakPtr.expired(); }));
}
LogMessage
Chargement en cours