Speedup compilation speed

libtorrent has a relatively heavy headers, that take lots of time to
process. This commit removes unnecessary includes of libtorrent headers
and replaces them with forward declarations.

I had to move some functions in QBtSession from slots to regular
functions because moc'ed file want to see complete types of all
parameters of slots.

"time make" of full rebuild before this series of commits:

real    13m35.937s
user    12m1.295s
sys     1m25.908s

after:

real    10m54.390s
user    9m31.167s
sys     1m12.580s
This commit is contained in:
Ivan Sorokin 2014-10-18 03:42:36 +04:00
commit de5f38a160
11 changed files with 105 additions and 59 deletions

View file

@ -70,6 +70,9 @@
#include <libtorrent/alert_types.hpp>
#include <libtorrent/torrent_info.hpp>
#include <libtorrent/error_code.hpp>
#include <libtorrent/alert_types.hpp>
#include <libtorrent/session.hpp>
#include <libtorrent/ip_filter.hpp>
#include <queue>
#include <string.h>
#include "dnsupdater.h"
@ -2056,48 +2059,6 @@ void QBtSession::disableIPFilter() {
filterPath = "";
}
// Set BT session settings (user_agent)
void QBtSession::setSessionSettings(const session_settings &sessionSettings) {
qDebug("Set session settings");
s->set_settings(sessionSettings);
}
// Set Proxy
void QBtSession::setProxySettings(proxy_settings proxySettings) {
qDebug() << Q_FUNC_INFO;
proxySettings.proxy_peer_connections = Preferences::instance()->proxyPeerConnections();
s->set_proxy(proxySettings);
// Define environment variable
QString proxy_str;
switch(proxySettings.type) {
case proxy_settings::http_pw:
proxy_str = "http://"+misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::http:
proxy_str = "http://"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::socks5:
proxy_str = misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::socks5_pw:
proxy_str = misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
default:
qDebug("Disabling HTTP communications proxy");
qputenv("http_proxy", QByteArray());
qputenv("sock_proxy", QByteArray());
return;
}
// We need this for urllib in search engine plugins
qDebug("HTTP communications proxy string: %s", qPrintable(proxy_str));
if (proxySettings.type == proxy_settings::socks5 || proxySettings.type == proxy_settings::socks5_pw)
qputenv("sock_proxy", proxy_str.toLocal8Bit());
else
qputenv("http_proxy", proxy_str.toLocal8Bit());
}
void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) {
try {
for (int i=0; i<h.num_files(); ++i) {
@ -2794,6 +2755,53 @@ session_status QBtSession::getSessionStatus() const {
return s->status();
}
void QBtSession::applyEncryptionSettings(pe_settings se) {
qDebug("Applying encryption settings");
s->set_pe_settings(se);
}
// Set Proxy
void QBtSession::setProxySettings(proxy_settings proxySettings) {
qDebug() << Q_FUNC_INFO;
proxySettings.proxy_peer_connections = Preferences::instance()->proxyPeerConnections();
s->set_proxy(proxySettings);
// Define environment variable
QString proxy_str;
switch(proxySettings.type) {
case proxy_settings::http_pw:
proxy_str = "http://"+misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::http:
proxy_str = "http://"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::socks5:
proxy_str = misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
case proxy_settings::socks5_pw:
proxy_str = misc::toQString(proxySettings.username)+":"+misc::toQString(proxySettings.password)+"@"+misc::toQString(proxySettings.hostname)+":"+QString::number(proxySettings.port);
break;
default:
qDebug("Disabling HTTP communications proxy");
qputenv("http_proxy", QByteArray());
qputenv("sock_proxy", QByteArray());
return;
}
// We need this for urllib in search engine plugins
qDebug("HTTP communications proxy string: %s", qPrintable(proxy_str));
if (proxySettings.type == proxy_settings::socks5 || proxySettings.type == proxy_settings::socks5_pw)
qputenv("sock_proxy", proxy_str.toLocal8Bit());
else
qputenv("http_proxy", proxy_str.toLocal8Bit());
}
// Set BT session settings (user_agent)
void QBtSession::setSessionSettings(const session_settings &sessionSettings) {
qDebug("Set session settings");
s->set_settings(sessionSettings);
}
QString QBtSession::getSavePath(const QString &hash, bool fromScanDir, QString filePath, bool imported) {
QString savePath;
if (TorrentTempData::hasTempData(hash)) {
@ -2923,11 +2931,6 @@ qreal QBtSession::getPayloadUploadRate() const {
return s->status().payload_upload_rate;
}
void QBtSession::applyEncryptionSettings(pe_settings se) {
qDebug("Applying encryption settings");
s->set_pe_settings(se);
}
// Will fast resume torrents in
// backup directory
void QBtSession::startUpTorrents() {