void MediaIndexer::removeInfo(const QList<MediaItem> &mediaList) { if (m_state == Running) { return; } if (m_nepomukInited && (mediaList.count() > 0)) { QString filename = QString("bangarang/%1.jb") .arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); QString path = KStandardDirs::locateLocal("data", filename, true); QFile file(path); if (!file.open(QIODevice::WriteOnly)) { return; } QTextStream out(&file); out << "#Count = " << mediaList.count() << "\n"; for (int i = 0; i < mediaList.count(); i++) { writeRemoveInfo(mediaList.at(i), out); out << "\n"; } out << "\n" <<"\n"; file.close(); emit startWriter(QStringList(path)); m_status["description"] = i18n("Starting update..."); m_status["progress"] = 0; emit updateStatus(m_status); } }
void MediaIndexer::updateRating(const QList<MediaItem> &mediaList, int rating) { if (!m_nepomukInited) { return; } if (m_writer->state() == QProcess::Starting || m_state == Running) { return; } QString filename = QString("bangarang/%1.jb") .arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); QString path = KStandardDirs::locateLocal("data", filename, true); QFile file(path); if (!file.open(QIODevice::WriteOnly)) { return; } QTextStream out(&file); bool validUpdate = false; for (int i = 0; i < mediaList.count(); i++) { QString resourceUri = mediaList.at(i).fields["resourceUri"].toString(); if (!resourceUri.isEmpty() && (rating >= 0) && (rating <= 10)) { out << "[" << resourceUri << "]\n"; out << "rating = " << rating << "\n"; out << "\n" << "\n"; validUpdate = true; } } if (validUpdate) { emit startWriter(QStringList(path)); } }
void MediaIndexer::updatePlaybackInfo(const QString &resourceUri, bool incrementPlayCount, const QDateTime &playDateTime) { if (m_state == Running) { return; } if (m_nepomukInited && !resourceUri.isEmpty()) { kDebug() << "Updating playback info..."; QString filename = QString("bangarang/%1.jb") .arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); QString path = KStandardDirs::locateLocal("data", filename, true); QFile file(path); if (!file.open(QIODevice::WriteOnly)) { return; } QTextStream out(&file); out << "[" << resourceUri << "]\n"; out << "lastPlayed = " << playDateTime.toString("yyyyMMddhhmmss") << "\n"; if (incrementPlayCount) { int playCount = 0; Nepomuk::Resource res(resourceUri); if (res.exists()) { playCount = res.property(MediaVocabulary().playCount()).toInt(); } playCount = playCount + 1; out << "playCount = " << playCount << "\n"; } out << "\n" << "\n"; emit startWriter(QStringList(path)); } }
int TestConcurrentReadWrite(STORAGE::Filesystem *fs) { for (int i = 0; i < numWriters; ++i) { std::srand((unsigned int)std::time(NULL) + i); data[i] = random_string(dataSize); } THREADING::ThreadPool pool(numThreads); std::thread writeThread([&pool, fs] { for (int i = 0; i < numWriters; ++i) { pool.enqueue([fs, i] {startWriter(fs, i); }); } }); std::thread readThread([&pool, fs] { for (int i = 0; i < numReaders; ++i) { std::future<bool> ret = pool.enqueue([fs] {return startReader(fs); }); if (!ret.get()) { failure = true; break; } } }); readThread.join(); writeThread.join(); return failure; }
MediaIndexer::MediaIndexer(QObject * parent) : QObject(parent) { qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus"); m_nepomukInited = Utilities::nepomukInited(); m_state = Idle; m_percent = 0; m_writer = new KProcess(this); m_writer->setOutputChannelMode(KProcess::OnlyStdoutChannel); m_writer->setWorkingDirectory(KStandardDirs::locateLocal("data", "bangarang/", true)); connect(this, SIGNAL(startWriter(QStringList)), this, SLOT(startWriterSlot(QStringList))); connect(m_writer, SIGNAL(readyReadStandardOutput()), this, SLOT(processWriterOutput())); connect(m_writer, SIGNAL(started()), this, SIGNAL(started())); connect(m_writer, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus))); connect(m_writer, SIGNAL(error(QProcess::ProcessError)), this, SLOT(error(QProcess::ProcessError))); }
void MediaIndexer::updateRating(const QString & resourceUri, int rating) { if (m_writer->state() == QProcess::Starting || m_state == Running) { return; } if (m_nepomukInited && !resourceUri.isEmpty() && (rating >= 0) && (rating <= 10)) { QString filename = QString("bangarang/%1.jb") .arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz")); QString path = KStandardDirs::locateLocal("data", filename, true); QFile file(path); if (!file.open(QIODevice::WriteOnly)) { return; } QTextStream out(&file); out << "[" << resourceUri << "]\n"; out << "rating = " << rating << "\n"; out << "\n" << "\n"; emit startWriter(QStringList(path)); } }
void startExcept(const std::string & filepath, const std::set<std::string> & blackList) { addCallbackMaskExcept(CallbackMask::Logging, blackList); startWriter(filepath); }
void start(const std::string & filepath) { addCallbackMask(CallbackMask::Logging); startWriter(filepath); }