X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fserver%2FTorrentSession.cpp;h=c6d8b3116b5c04ae1aaa57af8bd8ef5d1d8e8efc;hb=4fda70ff265b1a5a1f37597f57253272a2b22fbf;hp=c2fb92be88322b76a5fcbbf2eb0037212f5eba34;hpb=2acb66424c20ea4ddd481b37e4b4dcee3acde632;p=qtrapids diff --git a/src/server/TorrentSession.cpp b/src/server/TorrentSession.cpp index c2fb92b..c6d8b31 100644 --- a/src/server/TorrentSession.cpp +++ b/src/server/TorrentSession.cpp @@ -9,21 +9,21 @@ namespace qtrapids TorrentSession::TorrentSession(QObject *parent, QSettings *settings) - : QObject(parent) - , btSession_() - , alertWaiter_(new AlertWaiterThread(&btSession_, this)) + : QObject(parent) + , btSession_() + , alertWaiter_(new AlertWaiterThread(&btSession_, this)) { - qDBusRegisterMetaType(); - qDBusRegisterMetaType(); - new QtRapidsServer(this); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + new QtRapidsServer(this); - QDBusConnection dbus = QDBusConnection::sessionBus(); - dbus.registerObject("/qtrapids", this); - dbus.registerService("com.ixonos.qtrapids"); + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/qtrapids", this); + dbus.registerService("com.ixonos.qtrapids"); - alertWaiter_->allAlerts(); - connect(alertWaiter_, SIGNAL(alert()), this, SLOT(on_alert())); - alertWaiter_->start(); + alertWaiter_->allAlerts(); + connect(alertWaiter_, SIGNAL(alert()), this, SLOT(on_alert())); + alertWaiter_->start(); } @@ -32,141 +32,132 @@ void TorrentSession::on_alert() //NOTE: al parameter not necessarily needed here, as we pop_alert() now! { - //qDebug() << "QBittorrentSession:on_alert(" << al << ")"; - // if (al) - // qDebug() << "on_alert():" << QString::fromStdString(al->message()); + //qDebug() << "QBittorrentSession:on_alert(" << al << ")"; + // if (al) + // qDebug() << "on_alert():" << QString::fromStdString(al->message()); - std::auto_ptr alertPtr = btSession_.pop_alert(); + std::auto_ptr alertPtr = btSession_.pop_alert(); - if (alertPtr.get() != NULL) - { + if (alertPtr.get() != NULL) { - torrent_alert_t *ta = dynamic_cast (alertPtr.get()); + torrent_alert_t *ta = dynamic_cast (alertPtr.get()); - qDebug() - << "QBittorrentSession::on_alert(): " - << QString::fromStdString(alertPtr->message()); + qDebug() + << "QBittorrentSession::on_alert(): " + << QString::fromStdString(alertPtr->message()); - if (ta) - { + if (ta) { - if (!ta->handle.is_valid()) - { - qDebug() << "handle is invalid"; - return; - } + if (!ta->handle.is_valid()) { + qDebug() << "handle is invalid"; + return; + } - TorrentHandle handle(ta->handle); - TorrentState state; + TorrentHandle handle(ta->handle); + TorrentState state; - state.hash = Hash2QStr(handle.hash()); - state.action = TorrentState::action_update; - state.state = handle.state(); - state.progress = handle.progress() * torrent_progress_max; - state.down_rate = handle.downloadRate(); - state.up_rate = handle.uploadRate(); - state.seeds = handle.numSeeds(); - state.leeches = handle.numLeeches(); + state.hash = Hash2QStr(handle.hash()); + state.action = TorrentState::action_update; + state.state = handle.state(); + state.progress = handle.progress() * torrent_progress_max; + state.down_rate = handle.downloadRate(); + state.up_rate = handle.uploadRate(); + state.seeds = handle.numSeeds(); + state.leeches = handle.numLeeches(); - ParamsMap_t params; - emit alert(state, params); - } + ParamsMap_t params; + emit alert(state, params); + } - } + } } void TorrentSession::getState() { - torrents_t::const_iterator p; - for (p = torrents_.constBegin(); p != torrents_.constEnd(); ++p) - { - TorrentHandlePtr handle = *p; - TorrentState state; - QString hash = Hash2QStr(handle->hash()); - - state.hash = hash; - state.name = handle->name(); - state.action = TorrentState::action_add; - state.state = handle->state(); - state.progress = handle->progress() * torrent_progress_max; - state.down_rate = handle->downloadRate(); - state.up_rate = handle->uploadRate(); - state.seeds = handle->numSeeds(); - state.leeches = handle->numLeeches(); - state.total_size = handle->getTotalSize(); - - emit alert(state, ParamsMap_t()); - } + torrents_t::const_iterator p; + for (p = torrents_.constBegin(); p != torrents_.constEnd(); ++p) { + TorrentHandlePtr handle = *p; + TorrentState state; + QString hash = Hash2QStr(handle->hash()); + + state.hash = hash; + state.name = handle->name(); + state.action = TorrentState::action_add; + state.state = handle->state(); + state.progress = handle->progress() * torrent_progress_max; + state.down_rate = handle->downloadRate(); + state.up_rate = handle->uploadRate(); + state.seeds = handle->numSeeds(); + state.leeches = handle->numLeeches(); + state.total_size = handle->getTotalSize(); + + emit alert(state, ParamsMap_t()); + } } void TorrentSession::addTorrent(const QString &path, const QString &save_path , qtrapids::ParamsMap_t other_params) { - add_torrent_params_t addParams; - QFile torrent_file(path); - if (!torrent_file.exists()) - { - qWarning() << "Torrent file " << path << "doesn't exist"; - return; - } - - qDebug() << "addTorrent: " << path << " save to " << save_path; - boost::intrusive_ptr tiTmp - = new libtorrent::torrent_info - (boost::filesystem::path(path.toStdString())); - addParams.ti = tiTmp; - - // save_path is the only mandatory parameter, rest are optional. - addParams.save_path = boost::filesystem::path(save_path.toStdString()); - //addParams.storage_mode = libtorrent::storage_mode_allocate; - - TorrentHandlePtr handle(new TorrentHandle(btSession_.add_torrent(addParams))); - QString hash = Hash2QStr(handle->hash()); - - TorrentState state; - - state.hash = hash; - state.name = handle->name(); - state.action = TorrentState::action_add; - state.state = handle->state(); - state.progress = handle->progress() * torrent_progress_max; - state.down_rate = handle->downloadRate(); - state.up_rate = handle->uploadRate(); - state.seeds = handle->numSeeds(); - state.leeches = handle->numLeeches(); - state.total_size = handle->getTotalSize(); - - torrents_[hash] = handle; - - emit alert(state, ParamsMap_t()); + add_torrent_params_t addParams; + QFile torrent_file(path); + if (!torrent_file.exists()) { + qWarning() << "Torrent file " << path << "doesn't exist"; + return; + } + + qDebug() << "addTorrent: " << path << " save to " << save_path; + boost::intrusive_ptr tiTmp + = new libtorrent::torrent_info + (boost::filesystem::path(path.toStdString())); + addParams.ti = tiTmp; + + // save_path is the only mandatory parameter, rest are optional. + addParams.save_path = boost::filesystem::path(save_path.toStdString()); + //addParams.storage_mode = libtorrent::storage_mode_allocate; + + TorrentHandlePtr handle(new TorrentHandle(btSession_.add_torrent(addParams))); + QString hash = Hash2QStr(handle->hash()); + + TorrentState state; + + state.hash = hash; + state.name = handle->name(); + state.action = TorrentState::action_add; + state.state = handle->state(); + state.progress = handle->progress() * torrent_progress_max; + state.down_rate = handle->downloadRate(); + state.up_rate = handle->uploadRate(); + state.seeds = handle->numSeeds(); + state.leeches = handle->numLeeches(); + state.total_size = handle->getTotalSize(); + + torrents_[hash] = handle; + + emit alert(state, ParamsMap_t()); } void TorrentSession::removeTorrent(const QString &hash) { - torrents_t::iterator p = torrents_.find(hash); - - if (p == torrents_.end()) - { - qDebug() << "Invalid request to remove torrent with hash " << hash; - return; - } - try - { - btSession_.remove_torrent(p.value()->getHandle()); - } - catch (torrent_exception_t e) - { - qDebug() << // e.what() - "exception catched" - ; - } - - TorrentState state; - state.hash = hash; - state.action = TorrentState::action_remove; - emit alert(state, ParamsMap_t()); - torrents_.erase(p); + torrents_t::iterator p = torrents_.find(hash); + + if (p == torrents_.end()) { + qDebug() << "Invalid request to remove torrent with hash " << hash; + return; + } + try { + btSession_.remove_torrent(p.value()->getHandle()); + } catch (torrent_exception_t e) { + qDebug() << // e.what() + "exception catched" + ; + } + + TorrentState state; + state.hash = hash; + state.action = TorrentState::action_remove; + emit alert(state, ParamsMap_t()); + torrents_.erase(p); }