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
2 files
+ 27
7
Comparer les modifications
  • Côte à côte
  • En ligne

Fichiers

+ 16
7
@@ -119,22 +119,28 @@ public:
@@ -119,22 +119,28 @@ public:
// Class used to check the messageQueue and send needFlush or something like
// Class used to check the messageQueue and send needFlush or something like
// that messages. It needs to be moved to its own thread and connected with the
// that messages. It needs to be moved to its own thread and connected with the
// queue version of the QObject::connect method.
// queue version of the QObject::connect method.
template <class MutexType, class MessageQueueType> class LogSinkUpdater final {
template <class Mutex, class MessageQueue>
MutexType *const messageQueueLock;
requires MutexType<Mutex>
MessageQueueType *const messageQueue;
class LogSinkUpdater final {
 
VIVY_UNMOVABLE_OBJECT(LogSinkUpdater)
using size_type = typename MessageQueueType::size_type;
Mutex *const messageQueueLock;
 
MessageQueue *const messageQueue;
 
 
using size_type = typename MessageQueue::size_type;
public:
public:
explicit LogSinkUpdater(MutexType *const lock, MessageQueueType *const queue) noexcept
explicit LogSinkUpdater(Mutex *const lock, MessageQueue *const queue)
: messageQueueLock(lock)
: messageQueueLock(lock)
, messageQueue(queue)
, messageQueue(queue)
{
{
 
if (lock == nullptr || queue == nullptr)
 
throw std::logic_error("Can't pass null pointers for the queue and its lock");
}
}
bool isMessageAvailable() const noexcept
bool isMessageAvailable() const noexcept
{
{
std::lock_guard<MutexType> lockGuard(*messageQueueLock);
std::lock_guard<Mutex> lockGuard(*messageQueueLock);
size_type size = messageQueue->size();
size_type size = messageQueue->size();
return size != 0;
return size != 0;
}
}
@@ -142,9 +148,12 @@ public:
@@ -142,9 +148,12 @@ public:
// LogSinkUpdater controller, needed because templated Q_OBJECT are not
// LogSinkUpdater controller, needed because templated Q_OBJECT are not
// supported by Qt. This controller is specialized for a std implementation of
// supported by Qt. This controller is specialized for a std implementation of
// the message queue.
// the message queue. For a Qt version use the following types:
 
// using MutexType = QMutex;
 
// using MessageQueueType = QVector<QTuple<QStringView, LogMessage>>;
class StlLogSinkUpdater final : public QThread {
class StlLogSinkUpdater final : public QThread {
Q_OBJECT
Q_OBJECT
 
VIVY_UNMOVABLE_OBJECT(StlLogSinkUpdater)
public:
public:
using MutexType = std::mutex;
using MutexType = std::mutex;
Chargement en cours