try adding request_timeout option

This commit is contained in:
Anis Jonischkeit 2025-01-28 11:56:23 +11:00 committed by GitHub
commit 43e1f7faaf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 44 additions and 1 deletions

View file

@ -332,6 +332,8 @@ namespace BitTorrent
virtual void setHashingThreads(int num) = 0;
virtual int filePoolSize() const = 0;
virtual void setFilePoolSize(int size) = 0;
virtual int requestTimeout() const = 0;
virtual void setRequestTimeout(int size) = 0;
virtual int checkingMemUsage() const = 0;
virtual void setCheckingMemUsage(int size) = 0;
virtual int diskCacheSize() const = 0;

View file

@ -408,6 +408,7 @@ SessionImpl::SessionImpl(QObject *parent)
, m_asyncIOThreads(BITTORRENT_SESSION_KEY(u"AsyncIOThreadsCount"_s), 10)
, m_hashingThreads(BITTORRENT_SESSION_KEY(u"HashingThreadsCount"_s), 1)
, m_filePoolSize(BITTORRENT_SESSION_KEY(u"FilePoolSize"_s), 100)
, m_requestTimeout(BITTORRENT_SESSION_KEY(u"RequestTimeout"_s), 60)
, m_checkingMemUsage(BITTORRENT_SESSION_KEY(u"CheckingMemUsageSize"_s), 32)
, m_diskCacheSize(BITTORRENT_SESSION_KEY(u"DiskCacheSize"_s), -1)
, m_diskCacheTTL(BITTORRENT_SESSION_KEY(u"DiskCacheTTL"_s), 60)
@ -1916,6 +1917,7 @@ lt::settings_pack SessionImpl::loadLTSettings() const
settingsPack.set_int(lt::settings_pack::hashing_threads, hashingThreads());
#endif
settingsPack.set_int(lt::settings_pack::file_pool_size, filePoolSize());
settingsPack.set_int(lt::settings_pack::request_timeout, requestTimeout());
const int checkingMemUsageSize = checkingMemUsage() * 64;
settingsPack.set_int(lt::settings_pack::checking_mem_usage, checkingMemUsageSize);
@ -4412,6 +4414,20 @@ void SessionImpl::setFilePoolSize(const int size)
configureDeferred();
}
int SessionImpl::requestTimeout() const
{
return m_requestTimeout;
}
void SessionImpl::setRequestTimeout(const int size)
{
if (size == m_requestTimeout)
return;
m_requestTimeout = size;
configureDeferred();
}
int SessionImpl::checkingMemUsage() const
{
return std::max(1, m_checkingMemUsage.get());

View file

@ -301,6 +301,8 @@ namespace BitTorrent
void setHashingThreads(int num) override;
int filePoolSize() const override;
void setFilePoolSize(int size) override;
int requestTimeout() const override;
void setRequestTimeout(int size) override;
int checkingMemUsage() const override;
void setCheckingMemUsage(int size) override;
int diskCacheSize() const override;
@ -637,6 +639,7 @@ namespace BitTorrent
CachedSettingValue<int> m_asyncIOThreads;
CachedSettingValue<int> m_hashingThreads;
CachedSettingValue<int> m_filePoolSize;
CachedSettingValue<int> m_requestTimeout;
CachedSettingValue<int> m_checkingMemUsage;
CachedSettingValue<int> m_diskCacheSize;
CachedSettingValue<int> m_diskCacheTTL;

View file

@ -121,6 +121,7 @@ namespace
HASHING_THREADS,
#endif
FILE_POOL_SIZE,
REQUEST_TIMEOUT,
CHECKING_MEM_USAGE,
#ifndef QBT_USES_LIBTORRENT2
// cache
@ -226,6 +227,8 @@ void AdvancedSettings::saveAdvancedSettings() const
#endif
// File pool size
session->setFilePoolSize(m_spinBoxFilePoolSize.value());
// Request timeout
session->setRequestTimeout(m_spinBoxRequestTimeout.value());
// Checking Memory Usage
session->setCheckingMemUsage(m_spinBoxCheckingMemUsage.value());
#ifndef QBT_USES_LIBTORRENT2
@ -542,6 +545,10 @@ void AdvancedSettings::loadAdvancedSettings()
m_spinBoxFilePoolSize.setValue(session->filePoolSize());
addRow(FILE_POOL_SIZE, (tr("File pool size") + u' ' + makeLink(u"https://www.libtorrent.org/reference-Settings.html#file_pool_size", u"(?)"))
, &m_spinBoxFilePoolSize);
// Timouts
m_spinBoxRequestTimeout.setValue(session->requestTimeout());
addRow(REQUEST_TIMEOUT, (tr("Request timeout") + u' ' + makeLink(u"https://www.libtorrent.org/reference-Settings.html#request_timeout", u"(?)"))
, &m_spinBoxRequestTimeout);
// Checking Memory Usage
m_spinBoxCheckingMemUsage.setMinimum(1);

View file

@ -69,7 +69,7 @@ private:
template <typename T> void addRow(int row, const QString &text, T *widget);
QSpinBox m_spinBoxSaveResumeDataInterval, m_spinBoxSaveStatisticsInterval, m_spinBoxTorrentFileSizeLimit, m_spinBoxBdecodeDepthLimit, m_spinBoxBdecodeTokenLimit,
m_spinBoxAsyncIOThreads, m_spinBoxFilePoolSize, m_spinBoxCheckingMemUsage, m_spinBoxDiskQueueSize,
m_spinBoxAsyncIOThreads, m_spinBoxFilePoolSize, m_spinBoxRequestTimeout, m_spinBoxCheckingMemUsage, m_spinBoxDiskQueueSize,
m_spinBoxOutgoingPortsMin, m_spinBoxOutgoingPortsMax, m_spinBoxUPnPLeaseDuration, m_spinBoxPeerToS,
m_spinBoxListRefresh, m_spinBoxTrackerPort, m_spinBoxSendBufferWatermark, m_spinBoxSendBufferLowWatermark,
m_spinBoxSendBufferWatermarkFactor, m_spinBoxConnectionSpeed, m_spinBoxSocketSendBufferSize, m_spinBoxSocketReceiveBufferSize, m_spinBoxSocketBacklogSize,

View file

@ -415,6 +415,8 @@ void AppController::preferencesAction()
data[u"hashing_threads"_s] = session->hashingThreads();
// File pool size
data[u"file_pool_size"_s] = session->filePoolSize();
// Request timeout
data[u"request_timeout"_s] = session->requestTimeout()();
// Checking memory usage
data[u"checking_memory_use"_s] = session->checkingMemUsage();
// Disk write cache
@ -1051,6 +1053,9 @@ void AppController::setPreferencesAction()
// File pool size
if (hasKey(u"file_pool_size"_s))
session->setFilePoolSize(it.value().toInt());
// Request timeout
if (hasKey(u"request_timeout"_s))
session->setRequestTimeout(it.value().toInt());
// Checking Memory Usage
if (hasKey(u"checking_memory_use"_s))
session->setCheckingMemUsage(it.value().toInt());

View file

@ -1343,6 +1343,14 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
<input type="text" id="filePoolSize" style="width: 15em;">
</td>
</tr>
<tr>
<td>
<label for="requestTimeout">QBT_TR(Request timeout:)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#request_timeout" target="_blank">(?)</a></label>
</td>
<td>
<input type="text" id="requestTimeout" style="width: 15em;">
</td>
</tr>
<tr>
<td>
<label for="outstandMemoryWhenCheckingTorrents">QBT_TR(Outstanding memory when checking torrents:)QBT_TR[CONTEXT=OptionsDialog]&nbsp;<a href="https://www.libtorrent.org/reference-Settings.html#checking_mem_usage" target="_blank">(?)</a></label>
@ -2559,6 +2567,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
$("asyncIOThreads").value = pref.async_io_threads;
$("hashingThreads").value = pref.hashing_threads;
$("filePoolSize").value = pref.file_pool_size;
$("requestTimeout").value = pref.requestTimeout;
$("outstandMemoryWhenCheckingTorrents").value = pref.checking_memory_use;
$("diskCache").value = pref.disk_cache;
$("diskCacheExpiryInterval").value = pref.disk_cache_ttl;
@ -3027,6 +3036,7 @@ Use ';' to split multiple entries. Can use wildcard '*'.)QBT_TR[CONTEXT=OptionsD
settings["async_io_threads"] = Number($("asyncIOThreads").value);
settings["hashing_threads"] = Number($("hashingThreads").value);
settings["file_pool_size"] = Number($("filePoolSize").value);
settings["request_timeout"] = Number($("requestTimeout").value);
settings["checking_memory_use"] = Number($("outstandMemoryWhenCheckingTorrents").value);
settings["disk_cache"] = Number($("diskCache").value);
settings["disk_cache_ttl"] = Number($("diskCacheExpiryInterval").value);