[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/kget/transfer-plugins/checksumsearch
From: Matthias Fuchs <mat69 () gmx ! net>
Date: 2009-11-15 17:44:46
Message-ID: 1258307086.992613.13243.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1049705 by mfuchs:
ChecksumSearch plugin does not download checksums in paralell but one after the \
other.
M +31 -18 checksumsearch.cpp
M +8 -2 checksumsearch.h
M +14 -27 checksumsearchtransferdatasource.cpp
M +0 -4 checksumsearchtransferdatasource.h
--- trunk/KDE/kdenetwork/kget/transfer-plugins/checksumsearch/checksumsearch.cpp \
#1049704:1049705 @@ -29,16 +29,14 @@
const QStringList ChecksumSearch::URLCHANGEMODES = (QStringList() << i18n("Append") \
<< i18n("Replace file") << i18n("Replace file-ending"));
-ChecksumSearch::ChecksumSearch(KUrl src, QString fileName, QString type)
- : m_copyJob(0),
- m_src(src),
+ChecksumSearch::ChecksumSearch(const QList<KUrl> &srcs, const QString &fileName, \
const QStringList &types, QObject *parent) + : QObject(parent),
+ m_copyJob(0),
+ m_srcs(srcs),
m_fileName(fileName),
- m_type(type),
- m_isEmpty(m_type.isEmpty())
+ m_types(types)
{
- m_copyJob = KIO::get(m_src, KIO::Reload, KIO::HideProgressInfo);
- connect(m_copyJob, SIGNAL(data(KIO::Job *,const QByteArray &)), \
SLOT(slotData(KIO::Job *, const QByteArray &)));
- connect(m_copyJob, SIGNAL(result(KJob *)), SLOT(slotResult(KJob *)));
+ createDownload();
}
ChecksumSearch::~ChecksumSearch()
@@ -49,8 +47,23 @@
}
}
-void ChecksumSearch::slotData(KIO::Job *job, const QByteArray& data)
+void ChecksumSearch::createDownload()
{
+ if (m_srcs.isEmpty() || m_types.isEmpty()) {
+ deleteLater();
+ } else {
+ m_src = m_srcs.takeFirst();
+ m_type = m_types.takeFirst();
+ m_isEmpty = m_type.isEmpty();
+
+ m_copyJob = KIO::get(m_src, KIO::Reload, KIO::HideProgressInfo);
+ connect(m_copyJob, SIGNAL(data(KIO::Job *,const QByteArray &)), \
SLOT(slotData(KIO::Job *, const QByteArray &))); + connect(m_copyJob, \
SIGNAL(result(KJob *)), SLOT(slotResult(KJob *))); + }
+}
+
+void ChecksumSearch::slotData(KIO::Job *job, const QByteArray &data)
+{
Q_UNUSED(job);
kDebug(5001);
@@ -64,15 +77,16 @@
}
}
-void ChecksumSearch::slotResult(KJob * job)
+void ChecksumSearch::slotResult(KJob *job)
{
kDebug(5001);
+
+ KIO::TransferJob *copyJob = static_cast<KIO::TransferJob*>(job);
- if (m_copyJob->isErrorPage())
- {
+ if (copyJob->isErrorPage()) {
kDebug(5001) << "The requested url does not exist:" << m_src.pathOrUrl();
m_copyJob = 0;
- emit finished(m_src);
+ createDownload();
return;
}
@@ -133,10 +147,9 @@
emit data(m_type, hash);
}
- //only emit finished if type was specified, otherwise parseDownloadEmpty has to \
handle this
- if (!m_isEmpty)
- {
- emit finished(m_src);
+ //only create a download here if type was specified, otherwise \
parseDownloadEmpty has to handle this + if (!m_isEmpty) {
+ createDownload();
}
}
@@ -153,7 +166,7 @@
}
}
- emit finished(m_src);
+ createDownload();
}
KUrl ChecksumSearch::createUrl(const KUrl &src, const QString &change, \
ChecksumSearch::UrlChangeMode mode)
--- trunk/KDE/kdenetwork/kget/transfer-plugins/checksumsearch/checksumsearch.h \
#1049704:1049705 @@ -30,7 +30,7 @@
Q_OBJECT
public:
- ChecksumSearch(KUrl src, QString fileName, QString type);
+ ChecksumSearch(const QList<KUrl> &srcs, const QString &fileName, const \
QStringList &types, QObject *parent = 0); ~ChecksumSearch();
/**
@@ -59,7 +59,6 @@
Q_SIGNALS:
void data(QString type, QString checksum);
- void finished(KUrl src);
private slots:
void slotResult(KJob *job);
@@ -67,6 +66,11 @@
private:
/**
+ * Creates a download
+ */
+ void createDownload();
+
+ /**
* Parses the download
*/
void parseDownload();
@@ -79,8 +83,10 @@
private:
KIO::TransferJob *m_copyJob;
KUrl m_src;
+ QList<KUrl> m_srcs;
QString m_fileName;
QString m_type;
+ QStringList m_types;
QByteArray m_dataBA;
QString m_data;
bool m_isEmpty;
--- trunk/KDE/kdenetwork/kget/transfer-plugins/checksumsearch/checksumsearchtransferdatasource.cpp \
#1049704:1049705 @@ -30,34 +30,28 @@
ChecksumSearchTransferDataSource::~ChecksumSearchTransferDataSource()
{
- qDeleteAll(m_jobs);
}
void ChecksumSearchTransferDataSource::start()
{
kDebug(5001);
- if (m_jobs.isEmpty())
- {
- QStringList changes = ChecksumSearchSettings::self()->searchStrings();
- QList<int> modes = ChecksumSearchSettings::self()->urlChangeModeList();
- QStringList types = ChecksumSearchSettings::self()->checksumTypeList();
+ QStringList changes = ChecksumSearchSettings::self()->searchStrings();
+ QList<int> modes = ChecksumSearchSettings::self()->urlChangeModeList();
+ QStringList types = ChecksumSearchSettings::self()->checksumTypeList();
+
+ QList<KUrl> urls;
- for (int i = 0; i < changes.size(); ++i)
- {
- const ChecksumSearch::UrlChangeMode mode = \
static_cast<ChecksumSearch::UrlChangeMode>(modes.at(i));
- const KUrl source = ChecksumSearch::createUrl(m_sourceUrl, \
changes.at(i), mode); + for (int i = 0; i < changes.size(); ++i) {
+ const ChecksumSearch::UrlChangeMode mode = \
static_cast<ChecksumSearch::UrlChangeMode>(modes.at(i)); + const KUrl source = \
ChecksumSearch::createUrl(m_sourceUrl, changes.at(i), mode); + \
urls.append(source); + }
+
+ if (urls.count() && types.count()) {
+ ChecksumSearch *search = new ChecksumSearch(urls, m_sourceUrl.fileName(), \
types);
- if (!m_jobs.contains(source))
- {
- ChecksumSearch *search = new ChecksumSearch(source, \
m_sourceUrl.fileName(), types.at(i));
-
- connect(search, SIGNAL(finished(KUrl)), this, \
SLOT(slotFinished(KUrl)));
- connect(search, SIGNAL(data(QString, QString)), this, \
SIGNAL(data(QString,QString)));
-
- m_jobs[source] = search;
- }
- }
+ connect(search, SIGNAL(data(QString, QString)), this, \
SIGNAL(data(QString,QString))); }
}
@@ -74,11 +68,4 @@
kDebug(5001);
}
-void ChecksumSearchTransferDataSource::slotFinished(const KUrl &src)
-{
- ChecksumSearch *search = m_jobs[src];
- m_jobs.remove(src);
- delete search;
-}
-
#include "checksumsearchtransferdatasource.moc"
--- trunk/KDE/kdenetwork/kget/transfer-plugins/checksumsearch/checksumsearchtransferdatasource.h \
#1049704:1049705 @@ -37,12 +37,8 @@
void stop();
void addSegment(const KIO::fileoffset_t offset, const KIO::fileoffset_t \
bytes, int segmentNum = -1);
- private Q_SLOTS:
- void slotFinished(const KUrl &src);
-
private:
KUrl m_src;
- QHash<KUrl, ChecksumSearch*> m_jobs;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic