mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 05:26:45 +08:00
refs #522, mutex for mutable members (thread safe)
* copy/assignment/lock for mutable members * also removed redundant in status message (slack discussion MS/KB)
This commit is contained in:
@@ -18,10 +18,24 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
void CStatusMessage::registerMetadata()
|
||||
CStatusMessage::CStatusMessage(const CStatusMessage &other) :
|
||||
CValueObject(other),
|
||||
ITimestampBased(other)
|
||||
{
|
||||
CValueObject<CStatusMessage>::registerMetadata();
|
||||
qRegisterMetaType<StatusSeverity>();
|
||||
*this = other;
|
||||
}
|
||||
|
||||
CStatusMessage &CStatusMessage::operator =(const CStatusMessage &other)
|
||||
{
|
||||
if (this == &other) { return *this; }
|
||||
|
||||
QReadLocker readLock(&other.m_lock);
|
||||
auto tuple = std::make_tuple(other.m_categories, other.m_severity, other.m_message, other.m_handledByObjects);
|
||||
readLock.unlock(); // avoid deadlock
|
||||
|
||||
QWriteLocker writeLock(&this->m_lock);
|
||||
std::tie(m_categories, m_severity, m_message, m_handledByObjects) = tuple;
|
||||
return *this;
|
||||
}
|
||||
|
||||
CStatusMessage::CStatusMessage(const QString &message)
|
||||
@@ -39,7 +53,6 @@ namespace BlackMisc
|
||||
CStatusMessage::CStatusMessage(QtMsgType type, const QMessageLogContext &context, const QString &message)
|
||||
: CStatusMessage(message)
|
||||
{
|
||||
m_redundant = CLogMessageHelper::hasRedundantFlag(context.category);
|
||||
bool debug = CLogMessageHelper::hasDebugFlag(context.category);
|
||||
auto categories = CLogMessageHelper::stripFlags(context.category);
|
||||
m_categories = CLogCategoryList::fromQString(categories);
|
||||
@@ -67,10 +80,6 @@ namespace BlackMisc
|
||||
{
|
||||
category = CLogMessageHelper::addDebugFlag(category);
|
||||
}
|
||||
if (this->m_redundant)
|
||||
{
|
||||
category = CLogMessageHelper::addRedundantFlag(category);
|
||||
}
|
||||
|
||||
*o_category = category;
|
||||
*o_message = this->m_message;
|
||||
@@ -106,14 +115,9 @@ namespace BlackMisc
|
||||
|
||||
QString CStatusMessage::getHumanReadablePattern() const
|
||||
{
|
||||
//! \todo This should me not hardcoded
|
||||
if (this->m_humanReadableCategory.isEmpty())
|
||||
{
|
||||
QStringList patternNames(getHumanReadablePatterns());
|
||||
this->m_humanReadableCategory = patternNames.isEmpty() ?
|
||||
"None" : patternNames.join(", ");
|
||||
}
|
||||
return this->m_humanReadableCategory;
|
||||
QStringList patternNames(getHumanReadablePatterns());
|
||||
return patternNames.isEmpty() ?
|
||||
"None" : patternNames.join(", ");
|
||||
}
|
||||
|
||||
QStringList CStatusMessage::getHumanReadablePatterns() const
|
||||
@@ -183,6 +187,12 @@ namespace BlackMisc
|
||||
return m;
|
||||
}
|
||||
|
||||
void CStatusMessage::registerMetadata()
|
||||
{
|
||||
CValueObject<CStatusMessage>::registerMetadata();
|
||||
qRegisterMetaType<StatusSeverity>();
|
||||
}
|
||||
|
||||
CStatusMessage::StatusSeverity CStatusMessage::stringToSeverity(const QString &severity)
|
||||
{
|
||||
// pre-check
|
||||
@@ -339,4 +349,4 @@ namespace BlackMisc
|
||||
html.append("</font>");
|
||||
return html;
|
||||
}
|
||||
}
|
||||
} // ns
|
||||
|
||||
Reference in New Issue
Block a user