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));
    }
}
Пример #7
0
void startExcept(const std::string & filepath, const std::set<std::string> & blackList)
{
    addCallbackMaskExcept(CallbackMask::Logging, blackList);
    startWriter(filepath);
}
Пример #8
0
void start(const std::string & filepath)
{
    addCallbackMask(CallbackMask::Logging);
    startWriter(filepath);
}