[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/ioslaves/kio_torrent
From: Christian Weilbach <christian () whiletaker ! homeip ! net>
Date: 2010-08-29 21:06:30
Message-ID: 20100829210630.8C3CDAC86C () svn ! kde ! org
[Download RAW message or body]
SVN commit 1169691 by weilbach:
first working proof of concept hack.
M +1 -1 CMakeLists.txt
M +4 -69 dbusthread.cpp
M +3 -17 dbusthread.h
M +37 -10 kio_torrent.cpp
M +6 -6 kio_torrent.h
--- trunk/playground/ioslaves/kio_torrent/CMakeLists.txt #1169690:1169691
@@ -25,7 +25,7 @@
########### kio_torrent ###############
-set(kio_torrent_SRCS kio_torrent.cpp dbusthread.cpp )
+set(kio_torrent_SRCS kio_torrent.cpp ktorrentdbusinterface.cpp dbusthread.cpp )
kde4_add_plugin(kio_torrent ${kio_torrent_SRCS})
--- trunk/playground/ioslaves/kio_torrent/dbusthread.cpp #1169690:1169691
@@ -18,89 +18,24 @@
*/
#include "dbusthread.h"
-#include "kio_torrent.h"
+#include "ktorrentdbusinterface.h"
-#include <QtCore/QMutex>
#include <QtCore/QThread>
-#include <QtDBus/QDBusInterface>
-#include <QtDBus/QDBusConnection>
-#include <QtDBus/QDBusConnectionInterface>
-#include <QtDBus/QDBusReply>
-#include <kcomponentdata.h>
-#include <kstandarddirs.h>
-#include <KUrl>
#include <kdebug.h>
-DBusThread::DBusThread(TorrentProtocol* slave)
+DBusThread::DBusThread(KTorrentDBusInterface* i)
{
kDebug();
- m_slave = slave;
+ m_interface = i;
}
void DBusThread::run()
{
kDebug();
- initializeDBus();
+ m_interface->initializeDBus();
kDebug() << " starting event loop.";
exec();
kDebug() << " event loop finished.";
}
-
-void DBusThread::initializeDBus()
-{
- kDebug();
- m_mutex.lock();
- QDBusConnection bus = QDBusConnection::sessionBus();
- m_coreKtInterface = new QDBusInterface("org.ktorrent.ktorrent", "/core", \
"org.ktorrent.core", bus );
- QDBusReply<QStringList>groupList = m_coreKtInterface->call("groups");
- if (!groupList.isValid()) {
- kError() << "Could not get the group list, do you have a compatible KTorrent \
version running?";
- } else {
- kDebug() << groupList.value();
- if (!groupList.value().contains("kio_torrent")) {
- m_coreKtInterface->call("addGroup","kio_torrent");
- }
- QDBusInterface groupInt("org.ktorrent.ktorrent", "/group/kio_torrent", \
"org.ktorrent.group");
- KStandardDirs *dirs = new KStandardDirs();
- groupInt.call("setDefaultSaveLocation",dirs->saveLocation("data","kio_torrent"));
- }
-
-/* if (!connect(m_coreKtInterface, SIGNAL(finished(const QString&)),
- this, SLOT(slotFinished(const QString&)))) {
- kDebug() << "Could not connect to finished().";
- }
- if (!connect(m_coreKtInterface, SIGNAL(torrentAdded(const QString&)),
- this, SLOT(slotTorrentAdded(const QString&)))) {
- kDebug() << "Could not connect to torrentAdded().:";
- }*/
- bus.connect("org.ktorrent.ktorrent","/core","org.ktorrent.core","torrentAdded",this,SLOT(slotTorrentAdded(const \
QString &)));
- bus.connect("org.ktorrent.ktorrent","/core","org.ktorrent.core","torrentRemoved",this,SLOT(slotTorrentRemoved(const \
QString &)));
- m_mutex.unlock();
-}
-
-void DBusThread::load(const QString& url)
-{
- kDebug() << url;
- QString httpUrl = url;
- httpUrl.replace("torrent:","http:");
- QStringList splitUrl = httpUrl.split(QRegExp(".torrent(/)"));
- kDebug() << splitUrl[0]+".torrent";
- m_coreKtInterface->call("loadSilently", splitUrl[0]+".torrent","kio_torrent");
-}
-
-
-void DBusThread::slotFinished(const QString& tor)
-{
- kDebug()<< tor;
- m_slave->finishGet();
-}
-
-void DBusThread::slotTorrentAdded(const QString& tor)
-{
- kDebug()<< tor;
- m_slave->finishGet();
-}
-
-#include "dbusthread.moc"
--- trunk/playground/ioslaves/kio_torrent/dbusthread.h #1169690:1169691
@@ -20,31 +20,17 @@
#ifndef DBUSTHREAD_H
#define DBUSTHREAD_H
-#include <QtCore/QMutex>
#include <QtCore/QThread>
-#include <QtDBus/QDBusInterface>
-#include <QtDBus/QDBusConnection>
-#include <KUrl>
-class TorrentProtocol;
+class KTorrentDBusInterface;
class DBusThread : public QThread
{
- Q_OBJECT
public:
- DBusThread( TorrentProtocol* );
+ DBusThread( KTorrentDBusInterface* );
void run();
- void initializeDBus();
- void load(const QString&);
-
- private slots:
- void slotFinished(const QString&);
- void slotTorrentAdded(const QString&);
private:
- QDBusInterface* m_coreKtInterface;
- KUrl m_url;
- QMutex m_mutex;
- TorrentProtocol* m_slave;
+ KTorrentDBusInterface* m_interface;
};
#endif // DBUSTHREAD_H
--- trunk/playground/ioslaves/kio_torrent/kio_torrent.cpp #1169690:1169691
@@ -18,16 +18,18 @@
*/
#include "kio_torrent.h"
-#include "dbusthread.h"
+#include "ktorrentdbusinterface.h"
#include <stdlib.h>
#include <unistd.h>
#include <QCoreApplication>
+#include <QFile>
#include <kcomponentdata.h>
#include <kstandarddirs.h>
#include <KUrl>
+#include <KMimeType>
#include <kdebug.h>
using namespace KIO;
@@ -53,17 +55,16 @@
}
TorrentProtocol::TorrentProtocol( const QByteArray &pool, const QByteArray &app ) : \
SlaveBase("torrent", pool, app ) + , m_finishStat(false)
, m_finishGet(false)
{
kDebug();
- m_dbusThread = new DBusThread(this);
- m_dbusThread->start();
+ m_ktorrentDBusInterface = new KTorrentDBusInterface(this);
}
TorrentProtocol::~TorrentProtocol()
{
- m_dbusThread->quit();
- delete m_dbusThread;
+ delete m_ktorrentDBusInterface;
kDebug();
}
@@ -76,26 +77,52 @@
void TorrentProtocol::stat( const KUrl& url )
{
kDebug() << url.url();
+ m_ktorrentDBusInterface->load( url );
+ while( true ){
+ if(m_finishStat){
+ m_finishStat = false;
finished();
+ break;
}
+ usleep (100);
+ }
+}
void TorrentProtocol::get( const KUrl& url )
{
kDebug() << url.url();
- m_dbusThread->load( url.url() );
while( true ){
if(m_finishGet){
m_finishGet = false;
- finished();
break;
}
- sleep (1000);
+ usleep (100);
}
+
+ KMimeType::Ptr mt = KMimeType::findByUrl( m_path, 0, true /* local URL */ );
+ emit mimeType( mt->name() );
+
+ QFile file(m_path);
+ if (!file.open(QIODevice::ReadOnly))
+ return;
+
+ while (!file.atEnd()) {
+ QByteArray d = file.read(1024*32);
+ data(d);
}
+ file.close();
+ finished();
+}
-void TorrentProtocol::finishGet()
+void TorrentProtocol::finishStat()
{
kDebug();
+ m_finishStat = true;
+}
+
+void TorrentProtocol::finishGet(const QString& path)
+{
+ kDebug() << p;
m_finishGet = true;
+ m_path = path;
}
-
--- trunk/playground/ioslaves/kio_torrent/kio_torrent.h #1169690:1169691
@@ -24,8 +24,7 @@
#include <kio/global.h>
#include <kio/slavebase.h>
-class DBusThread;
-class QDBusInterface;
+class KTorrentDBusInterface;
class TorrentProtocol : public KIO::SlaveBase
{
@@ -36,12 +35,13 @@
virtual void listDir( const KUrl & url );
virtual void stat( const KUrl & url );
virtual void get( const KUrl & url );
- virtual void finishGet();
+ virtual void finishStat();
+ virtual void finishGet(const QString& );
private:
KUrl m_url;
- DBusThread* m_dbusThread;
- QDBusInterface* m_coreKtInterface;
- bool m_finishGet;
+ KTorrentDBusInterface* m_ktorrentDBusInterface;
+ bool m_finishStat, m_finishGet;
+ QString m_path;
};
#endif // KIO_TORRENT_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic