bool BasicKeywordsModel::isEmpty() { QReadLocker readKeywordsLock(&m_KeywordsLock); Q_UNUSED(readKeywordsLock); QReadLocker readDescriptionLock(&m_DescriptionLock); Q_UNUSED(readDescriptionLock); return m_KeywordsList.isEmpty() || m_Description.trimmed().isEmpty(); }
void PeerObject::checkReadData() { // qDebug("[%p] PeerObject::checkReadData() - data: %d; stdin: %d", QCoreApplication::instance(), m_data.size(), m_dataDescription.size()); // m_dbgLog.write("PeerObject::checkReadData()\n"); // m_dbgLog.flush(); // m_dbgLog.write("Locking: 200\n");// m_dbgLog.flush(); QWriteLocker readDescriptionLock(&m_dataDescriptionLock); while(!m_dataDescription.isEmpty() && (!m_data.isEmpty() || !m_dataPkg.isEmpty() || !m_dataFD.isEmpty())) { QPair<QChar, QByteArray> description(m_dataDescription.takeFirst()); QByteArray data; if(description.first == 'd') { QWriteLocker readDataLock(&m_dataLock); if(m_data.isEmpty()) { m_dataDescription.prepend(description); return; } data = QCryptographicHash::hash(m_data.takeFirst(), QCryptographicHash::Md5); // data = m_data.takeFirst(); } else if(description.first == 'p') { QWriteLocker readDataLock(&m_dataPkgLock); if(m_dataPkg.isEmpty()) { m_dataDescription.prepend(description); return; } data = QCryptographicHash::hash(m_dataPkg.takeFirst(), QCryptographicHash::Md5); // data = m_dataPkg.takeFirst(); } else if(description.first == 's') { QWriteLocker readDataLock(&m_dataFDLock); if(m_dataFD.isEmpty()) { m_dataDescription.prepend(description); return; } data = m_dataFD.takeFirst().toLatin1(); } readDescriptionLock.unlock(); // m_dbgLog.write("Ok: 200\n");// m_dbgLog.flush(); // m_dbgLog.write("ok\n"); // m_dbgLog.flush(); // qDebug("=== got both ==="); // QWriteLocker writeLocker(&m_peerStreamLock); // // if(description.first != data.first) // { // qDebug("Peer: PeerObject::checkReadData() - invalid type"); // // // m_dbgLog.write("Invalid data type\n"); // // m_dbgLog.flush(); // // m_peerSocket->write(QStringLiteral("fWaited for %1 but received %2").arg(s_actionTitles[description.first]).arg(s_actionTitles[data.first]).toLatin1()); // m_peerSocket->flush(); // // if(m_close) // close(1); // return; // } // Compare data if(data != description.second) { qDebug("Peer: PeerObject::checkReadData() - invalid data"); // m_dbgLog.write("Invalid data\n"); // m_dbgLog.flush(); m_peerSocket->write("fReceived invalid data\n"); // m_peerSocket->flush(); if(m_close) close(1); return; } static quint32 totalRead = 0; totalRead++; Logger::log("Processed", totalRead); m_peerSocket->write("s\n"); // m_peerSocket->flush(); readDescriptionLock.relock(); } if(m_close && m_dataDescription.isEmpty()) { if(m_data.isEmpty() && m_dataPkg.isEmpty() && m_dataFD.isEmpty()) close(); else { m_peerSocket->write("fNo more data descriptions\n"); // m_peerSocket->flush(); close(1); } } else callSlotQueued(this, "checkReadData"); // m_dbgLog.write("PeerObject::~checkReadData()\n"); // m_dbgLog.flush(); }