Browse Source

- Clean up of bittorrent class

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
d5e2905ead
  1. 36
      src/bittorrent.cpp
  2. 28
      src/bittorrent.h

36
src/bittorrent.cpp

@ -62,7 +62,7 @@ @@ -62,7 +62,7 @@
enum ProxyType {HTTP=1, SOCKS5=2, HTTP_PW=3, SOCKS5_PW=4};
// Main constructor
bittorrent::bittorrent() : DHTEnabled(false), preAllocateAll(false), addInPause(false), ratio_limit(-1), UPnPEnabled(false), NATPMPEnabled(false), LSDEnabled(false), queueingEnabled(false), geoipDBLoaded(false) {
bittorrent::bittorrent() : preAllocateAll(false), addInPause(false), ratio_limit(-1), UPnPEnabled(false), NATPMPEnabled(false), LSDEnabled(false), DHTEnabled(false), queueingEnabled(false), geoipDBLoaded(false) {
resolve_countries = false;
// To avoid some exceptions
fs::path::default_name_check(fs::no_check);
@ -204,7 +204,7 @@ void bittorrent::configureSession() { @@ -204,7 +204,7 @@ void bittorrent::configureSession() {
qDebug("Configuring session");
// Downloads
// * Save path
setDefaultSavePath(Preferences::getSavePath());
defaultSavePath = Preferences::getSavePath();
if(Preferences::isTempPathEnabled()) {
setDefaultTempPath(Preferences::getTempPath());
} else {
@ -1271,10 +1271,6 @@ void bittorrent::addTorrentsFromScanFolder(QStringList &pathList) { @@ -1271,10 +1271,6 @@ void bittorrent::addTorrentsFromScanFolder(QStringList &pathList) {
}
}
void bittorrent::setDefaultSavePath(QString savepath) {
defaultSavePath = savepath;
}
QString bittorrent::getDefaultSavePath() const {
return defaultSavePath;
}
@ -1297,6 +1293,7 @@ void bittorrent::setDefaultTempPath(QString temppath) { @@ -1297,6 +1293,7 @@ void bittorrent::setDefaultTempPath(QString temppath) {
h.move_storage(getSavePath(h.hash()));
}
} else {
// Moving all downloading torrents to temporary save path
std::vector<torrent_handle> torrents = getTorrents();
std::vector<torrent_handle>::iterator torrentIT;
for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) {
@ -1597,12 +1594,8 @@ void bittorrent::readAlerts() { @@ -1597,12 +1594,8 @@ void bittorrent::readAlerts() {
if(h.is_valid()){
// Authentication
if(p->status_code != 401) {
QString hash = h.hash();
qDebug("Received a tracker error for %s", p->url.c_str());
QHash<QString, QString> errors = trackersErrors.value(hash, QHash<QString, QString>());
// p->url requires at least libtorrent v0.13.1
errors[misc::toQString(p->url)] = QString::fromUtf8(a->message().c_str());
trackersErrors[hash] = errors;
qDebug("Received a tracker error for %s: %s", p->url.c_str(), p->msg.c_str());
trackersErrors[h.hash()][misc::toQString(p->url)] = misc::toQString(p->message());
} else {
emit trackerAuthenticationRequired(h);
}
@ -1611,12 +1604,21 @@ void bittorrent::readAlerts() { @@ -1611,12 +1604,21 @@ void bittorrent::readAlerts() {
else if (tracker_reply_alert* p = dynamic_cast<tracker_reply_alert*>(a.get())) {
QTorrentHandle h(p->handle);
if(h.is_valid()){
qDebug("Received a tracker reply from %s", (const char*)h.current_tracker().toLocal8Bit());
QString hash = h.hash();
QHash<QString, QString> errors = trackersErrors.value(hash, QHash<QString, QString>());
// p->url requires at least libtorrent v0.13.1
qDebug("Received a tracker reply from %s", h.current_tracker().toLocal8Bit().data());
// Connection was successful now. Remove possible old errors
QHash<QString, QString> errors = trackersErrors.value(h.hash(), QHash<QString, QString>());
errors.remove(h.current_tracker());
trackersErrors[h.hash()] = errors;
}
} else if (tracker_warning_alert* p = dynamic_cast<tracker_warning_alert*>(a.get())) {
QTorrentHandle h(p->handle);
if(h.is_valid()){
// Connection was successful now. Remove possible old errors
QHash<QString, QString> errors = trackersErrors.value(h.hash(), QHash<QString, QString>());
errors.remove(h.current_tracker());
trackersErrors[hash] = errors;
trackersErrors[h.hash()] = errors;
qDebug("Received a tracker warning from %s: %s", h.current_tracker().toLocal8Bit().data(), p->msg.c_str());
// XXX: The tracker warning is silently ignored... do something with it.
}
}
else if (portmap_error_alert* p = dynamic_cast<portmap_error_alert*>(a.get())) {

28
src/bittorrent.h

@ -54,34 +54,43 @@ class bittorrent : public QObject { @@ -54,34 +54,43 @@ class bittorrent : public QObject {
Q_OBJECT
private:
// Bittorrent
session *s;
QPointer<FileSystemWatcher> FSWatcher;
QPointer<QTimer> timerAlerts;
QHash<QString, QString> savepath_fromurl;
QHash<QString, QHash<QString, QString> > trackersErrors;
// Ratio
QPointer<QTimer> BigRatioTimer;
bool DHTEnabled;
// HTTP
QPointer<downloadThread> downloader;
QString defaultSavePath;
QString defaultTempPath;
QHash<QString, QHash<QString, QString> > trackersErrors;
// File System
QPointer<FileSystemWatcher> FSWatcher;
// Console / Log
QStringList consoleMessages;
QStringList peerBanMessages;
// Settings
bool preAllocateAll;
bool addInPause;
float ratio_limit;
bool UPnPEnabled;
bool NATPMPEnabled;
bool LSDEnabled;
QPointer<FilterParserThread> filterParser;
QString filterPath;
bool DHTEnabled;
bool queueingEnabled;
QStringList url_skippingDlg;
QHash<QString, QString> savepath_fromurl;
QString defaultSavePath;
QString defaultTempPath;
// GeoIP
bool resolve_countries;
bool geoipDBLoaded;
// ETA Computation
QPointer<QTimer> timerETA;
QHash<QString, QList<int> > ETA_samples;
// IP filtering
QPointer<FilterParserThread> filterParser;
QString filterPath;
// Web UI
QPointer<HttpServer> httpServer;
QStringList url_skippingDlg;
protected:
QString getSavePath(QString hash);
@ -155,7 +164,6 @@ class bittorrent : public QObject { @@ -155,7 +164,6 @@ class bittorrent : public QObject {
void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true);
void setSessionSettings(session_settings sessionSettings);
void startTorrentsInPause(bool b);
void setDefaultSavePath(QString savepath);
void setDefaultTempPath(QString temppath);
void applyEncryptionSettings(pe_settings se);
void loadFilesPriorities(QTorrentHandle& h);

Loading…
Cancel
Save