[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