mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-14 16:57:55 +00:00
- Clean up of bittorrent class
This commit is contained in:
parent
1b0d2a7d55
commit
d5e2905ead
@ -62,7 +62,7 @@
|
|||||||
enum ProxyType {HTTP=1, SOCKS5=2, HTTP_PW=3, SOCKS5_PW=4};
|
enum ProxyType {HTTP=1, SOCKS5=2, HTTP_PW=3, SOCKS5_PW=4};
|
||||||
|
|
||||||
// Main constructor
|
// 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;
|
resolve_countries = false;
|
||||||
// To avoid some exceptions
|
// To avoid some exceptions
|
||||||
fs::path::default_name_check(fs::no_check);
|
fs::path::default_name_check(fs::no_check);
|
||||||
@ -204,7 +204,7 @@ void bittorrent::configureSession() {
|
|||||||
qDebug("Configuring session");
|
qDebug("Configuring session");
|
||||||
// Downloads
|
// Downloads
|
||||||
// * Save path
|
// * Save path
|
||||||
setDefaultSavePath(Preferences::getSavePath());
|
defaultSavePath = Preferences::getSavePath();
|
||||||
if(Preferences::isTempPathEnabled()) {
|
if(Preferences::isTempPathEnabled()) {
|
||||||
setDefaultTempPath(Preferences::getTempPath());
|
setDefaultTempPath(Preferences::getTempPath());
|
||||||
} else {
|
} else {
|
||||||
@ -1271,10 +1271,6 @@ void bittorrent::addTorrentsFromScanFolder(QStringList &pathList) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bittorrent::setDefaultSavePath(QString savepath) {
|
|
||||||
defaultSavePath = savepath;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString bittorrent::getDefaultSavePath() const {
|
QString bittorrent::getDefaultSavePath() const {
|
||||||
return defaultSavePath;
|
return defaultSavePath;
|
||||||
}
|
}
|
||||||
@ -1297,6 +1293,7 @@ void bittorrent::setDefaultTempPath(QString temppath) {
|
|||||||
h.move_storage(getSavePath(h.hash()));
|
h.move_storage(getSavePath(h.hash()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Moving all downloading torrents to temporary save path
|
||||||
std::vector<torrent_handle> torrents = getTorrents();
|
std::vector<torrent_handle> torrents = getTorrents();
|
||||||
std::vector<torrent_handle>::iterator torrentIT;
|
std::vector<torrent_handle>::iterator torrentIT;
|
||||||
for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) {
|
for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) {
|
||||||
@ -1597,12 +1594,8 @@ void bittorrent::readAlerts() {
|
|||||||
if(h.is_valid()){
|
if(h.is_valid()){
|
||||||
// Authentication
|
// Authentication
|
||||||
if(p->status_code != 401) {
|
if(p->status_code != 401) {
|
||||||
QString hash = h.hash();
|
qDebug("Received a tracker error for %s: %s", p->url.c_str(), p->msg.c_str());
|
||||||
qDebug("Received a tracker error for %s", p->url.c_str());
|
trackersErrors[h.hash()][misc::toQString(p->url)] = misc::toQString(p->message());
|
||||||
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;
|
|
||||||
} else {
|
} else {
|
||||||
emit trackerAuthenticationRequired(h);
|
emit trackerAuthenticationRequired(h);
|
||||||
}
|
}
|
||||||
@ -1611,12 +1604,21 @@ void bittorrent::readAlerts() {
|
|||||||
else if (tracker_reply_alert* p = dynamic_cast<tracker_reply_alert*>(a.get())) {
|
else if (tracker_reply_alert* p = dynamic_cast<tracker_reply_alert*>(a.get())) {
|
||||||
QTorrentHandle h(p->handle);
|
QTorrentHandle h(p->handle);
|
||||||
if(h.is_valid()){
|
if(h.is_valid()){
|
||||||
qDebug("Received a tracker reply from %s", (const char*)h.current_tracker().toLocal8Bit());
|
qDebug("Received a tracker reply from %s", h.current_tracker().toLocal8Bit().data());
|
||||||
QString hash = h.hash();
|
// Connection was successful now. Remove possible old errors
|
||||||
QHash<QString, QString> errors = trackersErrors.value(hash, QHash<QString, QString>());
|
QHash<QString, QString> errors = trackersErrors.value(h.hash(), QHash<QString, QString>());
|
||||||
// p->url requires at least libtorrent v0.13.1
|
|
||||||
errors.remove(h.current_tracker());
|
errors.remove(h.current_tracker());
|
||||||
trackersErrors[hash] = errors;
|
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[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())) {
|
else if (portmap_error_alert* p = dynamic_cast<portmap_error_alert*>(a.get())) {
|
||||||
|
284
src/bittorrent.h
284
src/bittorrent.h
@ -53,149 +53,157 @@ class HttpServer;
|
|||||||
class bittorrent : public QObject {
|
class bittorrent : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
session *s;
|
// Bittorrent
|
||||||
QPointer<FileSystemWatcher> FSWatcher;
|
session *s;
|
||||||
QPointer<QTimer> timerAlerts;
|
QPointer<QTimer> timerAlerts;
|
||||||
QPointer<QTimer> BigRatioTimer;
|
QHash<QString, QString> savepath_fromurl;
|
||||||
bool DHTEnabled;
|
QHash<QString, QHash<QString, QString> > trackersErrors;
|
||||||
QPointer<downloadThread> downloader;
|
// Ratio
|
||||||
QString defaultSavePath;
|
QPointer<QTimer> BigRatioTimer;
|
||||||
QString defaultTempPath;
|
// HTTP
|
||||||
QHash<QString, QHash<QString, QString> > trackersErrors;
|
QPointer<downloadThread> downloader;
|
||||||
QStringList consoleMessages;
|
// File System
|
||||||
QStringList peerBanMessages;
|
QPointer<FileSystemWatcher> FSWatcher;
|
||||||
bool preAllocateAll;
|
// Console / Log
|
||||||
bool addInPause;
|
QStringList consoleMessages;
|
||||||
float ratio_limit;
|
QStringList peerBanMessages;
|
||||||
bool UPnPEnabled;
|
// Settings
|
||||||
bool NATPMPEnabled;
|
bool preAllocateAll;
|
||||||
bool LSDEnabled;
|
bool addInPause;
|
||||||
QPointer<FilterParserThread> filterParser;
|
float ratio_limit;
|
||||||
QString filterPath;
|
bool UPnPEnabled;
|
||||||
bool queueingEnabled;
|
bool NATPMPEnabled;
|
||||||
QStringList url_skippingDlg;
|
bool LSDEnabled;
|
||||||
QHash<QString, QString> savepath_fromurl;
|
bool DHTEnabled;
|
||||||
bool resolve_countries;
|
bool queueingEnabled;
|
||||||
bool geoipDBLoaded;
|
QString defaultSavePath;
|
||||||
QPointer<QTimer> timerETA;
|
QString defaultTempPath;
|
||||||
QHash<QString, QList<int> > ETA_samples;
|
// GeoIP
|
||||||
// Web UI
|
bool resolve_countries;
|
||||||
QPointer<HttpServer> httpServer;
|
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:
|
protected:
|
||||||
QString getSavePath(QString hash);
|
QString getSavePath(QString hash);
|
||||||
bool initWebUi(QString username, QString password, int port);
|
bool initWebUi(QString username, QString password, int port);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor / Destructor
|
// Constructor / Destructor
|
||||||
bittorrent();
|
bittorrent();
|
||||||
~bittorrent();
|
~bittorrent();
|
||||||
QTorrentHandle getTorrentHandle(QString hash) const;
|
QTorrentHandle getTorrentHandle(QString hash) const;
|
||||||
std::vector<torrent_handle> getTorrents() const;
|
std::vector<torrent_handle> getTorrents() const;
|
||||||
bool isFilePreviewPossible(QString fileHash) const;
|
bool isFilePreviewPossible(QString fileHash) const;
|
||||||
bool isDHTEnabled() const;
|
bool isDHTEnabled() const;
|
||||||
float getPayloadDownloadRate() const;
|
float getPayloadDownloadRate() const;
|
||||||
float getPayloadUploadRate() const;
|
float getPayloadUploadRate() const;
|
||||||
session_status getSessionStatus() const;
|
session_status getSessionStatus() const;
|
||||||
int getListenPort() const;
|
int getListenPort() const;
|
||||||
float getRealRatio(QString hash) const;
|
float getRealRatio(QString hash) const;
|
||||||
session* getSession() const;
|
session* getSession() const;
|
||||||
QHash<QString, QString> getTrackersErrors(QString hash) const;
|
QHash<QString, QString> getTrackersErrors(QString hash) const;
|
||||||
bool has_filtered_files(QString hash) const;
|
bool has_filtered_files(QString hash) const;
|
||||||
bool hasActiveTorrents() const;
|
bool hasActiveTorrents() const;
|
||||||
bool isQueueingEnabled() const;
|
bool isQueueingEnabled() const;
|
||||||
int getMaximumActiveDownloads() const;
|
int getMaximumActiveDownloads() const;
|
||||||
int getMaximumActiveTorrents() const;
|
int getMaximumActiveTorrents() const;
|
||||||
int loadTorrentPriority(QString hash);
|
int loadTorrentPriority(QString hash);
|
||||||
QStringList getConsoleMessages() const;
|
QStringList getConsoleMessages() const;
|
||||||
QStringList getPeerBanMessages() const;
|
QStringList getPeerBanMessages() const;
|
||||||
qlonglong getETA(QString hash);
|
qlonglong getETA(QString hash);
|
||||||
bool useTemporaryFolder() const;
|
bool useTemporaryFolder() const;
|
||||||
QString getDefaultSavePath() const;
|
QString getDefaultSavePath() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
QTorrentHandle addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false);
|
QTorrentHandle addTorrent(QString path, bool fromScanDir = false, QString from_url = QString(), bool resumed = false);
|
||||||
QTorrentHandle addMagnetUri(QString magnet_uri, bool resumed=false);
|
QTorrentHandle addMagnetUri(QString magnet_uri, bool resumed=false);
|
||||||
void importOldTorrents();
|
void importOldTorrents();
|
||||||
void applyFormerAttributeFiles(QTorrentHandle h);
|
void applyFormerAttributeFiles(QTorrentHandle h);
|
||||||
void importOldTempData(QString torrent_path);
|
void importOldTempData(QString torrent_path);
|
||||||
void loadSessionState();
|
void loadSessionState();
|
||||||
void saveSessionState();
|
void saveSessionState();
|
||||||
void downloadFromUrl(QString url);
|
void downloadFromUrl(QString url);
|
||||||
void deleteTorrent(QString hash, bool delete_local_files = false);
|
void deleteTorrent(QString hash, bool delete_local_files = false);
|
||||||
void startUpTorrents();
|
void startUpTorrents();
|
||||||
/* Needed by Web UI */
|
/* Needed by Web UI */
|
||||||
void pauseAllTorrents();
|
void pauseAllTorrents();
|
||||||
void pauseTorrent(QString hash);
|
void pauseTorrent(QString hash);
|
||||||
void resumeTorrent(QString hash);
|
void resumeTorrent(QString hash);
|
||||||
void resumeAllTorrents();
|
void resumeAllTorrents();
|
||||||
/* End Web UI */
|
/* End Web UI */
|
||||||
void saveDHTEntry();
|
void saveDHTEntry();
|
||||||
void preAllocateAllFiles(bool b);
|
void preAllocateAllFiles(bool b);
|
||||||
void saveFastResumeData();
|
void saveFastResumeData();
|
||||||
void enableDirectoryScanning(QString scan_dir);
|
void enableDirectoryScanning(QString scan_dir);
|
||||||
void disableDirectoryScanning();
|
void disableDirectoryScanning();
|
||||||
void enableIPFilter(QString filter);
|
void enableIPFilter(QString filter);
|
||||||
void disableIPFilter();
|
void disableIPFilter();
|
||||||
void setQueueingEnabled(bool enable);
|
void setQueueingEnabled(bool enable);
|
||||||
void handleDownloadFailure(QString url, QString reason);
|
void handleDownloadFailure(QString url, QString reason);
|
||||||
void loadWebSeeds(QString fileHash);
|
void loadWebSeeds(QString fileHash);
|
||||||
void downloadUrlAndSkipDialog(QString url, QString save_path=QString::null);
|
void downloadUrlAndSkipDialog(QString url, QString save_path=QString::null);
|
||||||
// Session configuration - Setters
|
// Session configuration - Setters
|
||||||
void setListeningPort(int port);
|
void setListeningPort(int port);
|
||||||
void setMaxConnections(int maxConnec);
|
void setMaxConnections(int maxConnec);
|
||||||
void setMaxConnectionsPerTorrent(int max);
|
void setMaxConnectionsPerTorrent(int max);
|
||||||
void setMaxUploadsPerTorrent(int max);
|
void setMaxUploadsPerTorrent(int max);
|
||||||
void setDownloadRateLimit(long rate);
|
void setDownloadRateLimit(long rate);
|
||||||
void setUploadRateLimit(long rate);
|
void setUploadRateLimit(long rate);
|
||||||
void setGlobalRatio(float ratio);
|
void setGlobalRatio(float ratio);
|
||||||
void setDeleteRatio(float ratio);
|
void setDeleteRatio(float ratio);
|
||||||
void setDHTPort(int dht_port);
|
void setDHTPort(int dht_port);
|
||||||
void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true);
|
void setProxySettings(proxy_settings proxySettings, bool trackers=true, bool peers=true, bool web_seeds=true, bool dht=true);
|
||||||
void setSessionSettings(session_settings sessionSettings);
|
void setSessionSettings(session_settings sessionSettings);
|
||||||
void startTorrentsInPause(bool b);
|
void startTorrentsInPause(bool b);
|
||||||
void setDefaultSavePath(QString savepath);
|
void setDefaultTempPath(QString temppath);
|
||||||
void setDefaultTempPath(QString temppath);
|
void applyEncryptionSettings(pe_settings se);
|
||||||
void applyEncryptionSettings(pe_settings se);
|
void loadFilesPriorities(QTorrentHandle& h);
|
||||||
void loadFilesPriorities(QTorrentHandle& h);
|
void setDownloadLimit(QString hash, long val);
|
||||||
void setDownloadLimit(QString hash, long val);
|
void setUploadLimit(QString hash, long val);
|
||||||
void setUploadLimit(QString hash, long val);
|
void enableUPnP(bool b);
|
||||||
void enableUPnP(bool b);
|
void enableNATPMP(bool b);
|
||||||
void enableNATPMP(bool b);
|
void enableLSD(bool b);
|
||||||
void enableLSD(bool b);
|
bool enableDHT(bool b);
|
||||||
bool enableDHT(bool b);
|
void addConsoleMessage(QString msg, QColor color=QApplication::palette().color(QPalette::WindowText));
|
||||||
void addConsoleMessage(QString msg, QColor color=QApplication::palette().color(QPalette::WindowText));
|
void addPeerBanMessage(QString msg, bool from_ipfilter);
|
||||||
void addPeerBanMessage(QString msg, bool from_ipfilter);
|
void processDownloadedFile(QString, QString);
|
||||||
void processDownloadedFile(QString, QString);
|
void saveTrackerFile(QString hash);
|
||||||
void saveTrackerFile(QString hash);
|
void addMagnetSkipAddDlg(QString uri);
|
||||||
void addMagnetSkipAddDlg(QString uri);
|
void downloadFromURLList(const QStringList& urls);
|
||||||
void downloadFromURLList(const QStringList& urls);
|
void configureSession();
|
||||||
void configureSession();
|
void banIP(QString ip);
|
||||||
void banIP(QString ip);
|
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void addTorrentsFromScanFolder(QStringList&);
|
void addTorrentsFromScanFolder(QStringList&);
|
||||||
void readAlerts();
|
void readAlerts();
|
||||||
void loadTrackerFile(QString hash);
|
void loadTrackerFile(QString hash);
|
||||||
void deleteBigRatios();
|
void deleteBigRatios();
|
||||||
void takeETASamples();
|
void takeETASamples();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void addedTorrent(QTorrentHandle& h);
|
void addedTorrent(QTorrentHandle& h);
|
||||||
void deletedTorrent(QString hash);
|
void deletedTorrent(QString hash);
|
||||||
void pausedTorrent(QTorrentHandle& h);
|
void pausedTorrent(QTorrentHandle& h);
|
||||||
void resumedTorrent(QTorrentHandle& h);
|
void resumedTorrent(QTorrentHandle& h);
|
||||||
void finishedTorrent(QTorrentHandle& h);
|
void finishedTorrent(QTorrentHandle& h);
|
||||||
void fullDiskError(QTorrentHandle& h, QString msg);
|
void fullDiskError(QTorrentHandle& h, QString msg);
|
||||||
void trackerError(QString hash, QString time, QString msg);
|
void trackerError(QString hash, QString time, QString msg);
|
||||||
void trackerAuthenticationRequired(QTorrentHandle& h);
|
void trackerAuthenticationRequired(QTorrentHandle& h);
|
||||||
void newDownloadedTorrent(QString path, QString url);
|
void newDownloadedTorrent(QString path, QString url);
|
||||||
void updateFileSize(QString hash);
|
void updateFileSize(QString hash);
|
||||||
void downloadFromUrlFailure(QString url, QString reason);
|
void downloadFromUrlFailure(QString url, QString reason);
|
||||||
void torrentFinishedChecking(QTorrentHandle& h);
|
void torrentFinishedChecking(QTorrentHandle& h);
|
||||||
void metadataReceived(QTorrentHandle &h);
|
void metadataReceived(QTorrentHandle &h);
|
||||||
void torrentPaused(QTorrentHandle &h);
|
void torrentPaused(QTorrentHandle &h);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user