diff options
Diffstat (limited to 'plugins/zeroconf/zeroconfplugin.cpp')
-rw-r--r-- | plugins/zeroconf/zeroconfplugin.cpp | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/plugins/zeroconf/zeroconfplugin.cpp b/plugins/zeroconf/zeroconfplugin.cpp deleted file mode 100644 index 6307bdd..0000000 --- a/plugins/zeroconf/zeroconfplugin.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005 by Joris Guisson * - * joris.guisson@gmail.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ -#include <kgenericfactory.h> -#include <util/log.h> -#include <interfaces/coreinterface.h> -#include <interfaces/torrentinterface.h> -#include <torrent/globals.h> -#include <torrent/server.h> -#include "zeroconfplugin.h" -#include "avahiservice.h" - - -#define NAME "Zeroconf" -#define AUTHOR "Lesly Weyts and Kevin Andre" - -K_EXPORT_COMPONENT_FACTORY(ktzeroconfplugin,KGenericFactory<kt::ZeroConfPlugin>("ktzeroconfplugin")) - -using namespace bt; - -namespace kt -{ - - ZeroConfPlugin::ZeroConfPlugin(TQObject* parent, const char* name, const TQStringList& args) - : Plugin(parent, name,args,NAME,i18n("Zeroconf"),AUTHOR,TQString(),i18n("Finds peers running ktorrent on the local network to share torrents with"),"ktplugins") - { - services.setAutoDelete(true); - } - - - ZeroConfPlugin::~ZeroConfPlugin() - {} - - void ZeroConfPlugin::load() - { - CoreInterface* core = getCore(); - connect(core,TQ_SIGNAL(torrentAdded( kt::TorrentInterface* )), - this,TQ_SLOT(torrentAdded( kt::TorrentInterface* ))); - connect(core,TQ_SIGNAL(torrentRemoved( kt::TorrentInterface* )), - this,TQ_SLOT(torrentRemoved( kt::TorrentInterface* ))); - - // go over existing torrents and add them - bt::QueueManager* qman = core->getQueueManager(); - for (TQPtrList<kt::TorrentInterface>::iterator i = qman->begin();i != qman->end();i++) - { - torrentAdded(*i); - } - } - - void ZeroConfPlugin::unload() - { - CoreInterface* core = getCore(); - disconnect(core,TQ_SIGNAL(torrentAdded( kt::TorrentInterface* )), - this,TQ_SLOT(torrentAdded( kt::TorrentInterface* ))); - disconnect(core,TQ_SIGNAL(torrentRemoved( kt::TorrentInterface* )), - this,TQ_SLOT(torrentRemoved( kt::TorrentInterface*))); - - bt::PtrMap<kt::TorrentInterface*,AvahiService>::iterator i = services.begin(); - while (i != services.end()) - { - AvahiService* av = i->second; - kt::TorrentInterface* ti = i->first; - ti->removePeerSource(av); - i++; - } - services.clear(); - } - - void ZeroConfPlugin::torrentAdded(kt::TorrentInterface* tc) - { - if (services.contains(tc)) - return; - - bt::Uint16 port = bt::Globals::instance().getServer().getPortInUse(); - AvahiService* av = new AvahiService(tc->getOwnPeerID(),port,tc->getInfoHash()); - services.insert(tc,av); - tc->addPeerSource(av); - Out(SYS_ZCO|LOG_NOTICE) << "ZeroConf service added for " - << tc->getStats().torrent_name << endl; - connect(av,TQ_SIGNAL(serviceDestroyed( AvahiService* )), - this,TQ_SLOT(avahiServiceDestroyed( AvahiService* ))); - } - - - void ZeroConfPlugin::torrentRemoved(kt::TorrentInterface* tc) - { - AvahiService* av = services.find(tc); - if (!av) - return; - Out(SYS_ZCO|LOG_NOTICE) << "ZeroConf service removed for " - << tc->getStats().torrent_name << endl; - tc->removePeerSource(av); - services.erase(tc); - } - - void ZeroConfPlugin::avahiServiceDestroyed(AvahiService* av) - { - services.setAutoDelete(false); - - Out(SYS_ZCO|LOG_NOTICE) << "ZeroConf service destroyed " << endl; - bt::PtrMap<kt::TorrentInterface*,AvahiService>::iterator i = services.begin(); - while (i != services.end()) - { - if (i->second == av) - { - services.erase(i->first); - break; - } - i++; - } - services.setAutoDelete(true); - } - - bool ZeroConfPlugin::versionCheck(const TQString & version) const - { - return version == KT_VERSION_MACRO; - } -} -#include "zeroconfplugin.moc" |