///////////////////////////////////////////////////////////////////////////////
// MuldeR's Utilities for Qt
-// Copyright (C) 2004-2015 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2019 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
friend class IPCChannel;
protected:
- volatile bool initialized;
+ QAtomicInt initialized;
QScopedPointer<QSharedMemory> sharedmem;
QScopedPointer<QSystemSemaphore> semaphore_rd;
QScopedPointer<QSystemSemaphore> semaphore_wr;
m_appVersionNo(appVersionNo),
m_headerStr(QCryptographicHash::hash(MAKE_ID(applicationId, appVersionNo, channelId, "header").toLatin1(), QCryptographicHash::Sha1).toHex())
{
- p->initialized = false;
if(m_headerStr.length() != Internal::HDR_LEN)
{
MUTILS_THROW("Invalid header length has been detected!");
MUtils::IPCChannel::~IPCChannel(void)
{
- if(p->initialized)
+ if(MUTILS_BOOLIFY(p->initialized))
{
if(p->sharedmem->isAttached())
{
{
QWriteLocker writeLock(&p->lock);
- if(p->initialized)
+ if(MUTILS_BOOLIFY(p->initialized))
{
return RET_ALREADY_INITIALIZED;
}
qWarning("Failed to access shared memory: %s", MUTILS_UTF8(errorMessage));
return RET_FAILURE;
}
- p->initialized = true;
+ p->initialized.ref();
return RET_SUCCESS_SLAVE;
}
else
//qDebug("IPC KEY #2: %s", MUTILS_UTF8(p->semaphore_rd->key()));
//qDebug("IPC KEY #3: %s", MUTILS_UTF8(p->semaphore_wr->key()));
- p->initialized = true;
+ p->initialized.ref();
return RET_SUCCESS_MASTER;
}
const quint32 param_count = qMin(MAX_PARAM_CNT, (quint32)params.count());
for(quint32 i = 0; i < param_count; i++)
{
- strncpy_s(ipc_msg.payload.params.values[i], MAX_PARAM_LEN, MUTILS_UTF8(params[i]), _TRUNCATE);
+ strncpy_s(ipc_msg.payload.params.values[i], MAX_PARAM_LEN, MUTILS_UTF8(params[i].trimmed()), _TRUNCATE);
}
ipc_msg.payload.params.count = param_count;
}