rssguard/src/librssguard/miscellaneous/mutex.cpp
Martin Rotter b90402eced save
2020-11-23 12:59:59 +01:00

59 lines
954 B
C++

// For license of this file, see <project-root-folder>/LICENSE.md.
#include "miscellaneous/mutex.h"
#include "definitions/definitions.h"
Mutex::Mutex(QObject* parent) : QObject(parent), m_mutex(new QMutex()), m_isLocked(false) {}
Mutex::~Mutex() {
qDebugNN << LOGSEC_CORE << ("Destroying Mutex instance.");
}
void Mutex::lock() {
m_mutex->lock();
setLocked();
}
bool Mutex::tryLock() {
bool result;
if ((result = m_mutex->tryLock())) {
setLocked();
}
return result;
}
bool Mutex::tryLock(int timeout) {
bool result;
if ((result = m_mutex->tryLock(timeout))) {
setLocked();
}
return result;
}
void Mutex::unlock() {
m_mutex->unlock();
setUnlocked();
}
void Mutex::setLocked() {
m_isLocked = true;
emit locked();
}
void Mutex::setUnlocked() {
m_isLocked = false;
emit unlocked();
}
bool Mutex::isLocked() const {
return m_isLocked;
}
Mutex::operator QMutex* () const {
return m_mutex.data();
}