Expose 'socket send/receive buffer size' options

Closes #18794.
This commit is contained in:
Chocobo1
2023-04-05 17:33:45 +08:00
parent 40e28930a4
commit 77411760a0
8 changed files with 97 additions and 2 deletions

View File

@@ -328,6 +328,10 @@ namespace BitTorrent
virtual void setSendBufferWatermarkFactor(int value) = 0;
virtual int connectionSpeed() const = 0;
virtual void setConnectionSpeed(int value) = 0;
virtual int socketSendBufferSize() const = 0;
virtual void setSocketSendBufferSize(int value) = 0;
virtual int socketReceiveBufferSize() const = 0;
virtual void setSocketReceiveBufferSize(int value) = 0;
virtual int socketBacklogSize() const = 0;
virtual void setSocketBacklogSize(int value) = 0;
virtual bool isAnonymousModeEnabled() const = 0;

View File

@@ -436,6 +436,8 @@ SessionImpl::SessionImpl(QObject *parent)
, m_sendBufferLowWatermark(BITTORRENT_SESSION_KEY(u"SendBufferLowWatermark"_qs), 10)
, m_sendBufferWatermarkFactor(BITTORRENT_SESSION_KEY(u"SendBufferWatermarkFactor"_qs), 50)
, m_connectionSpeed(BITTORRENT_SESSION_KEY(u"ConnectionSpeed"_qs), 30)
, m_socketSendBufferSize(BITTORRENT_SESSION_KEY(u"SocketSendBufferSize"_qs), 0)
, m_socketReceiveBufferSize(BITTORRENT_SESSION_KEY(u"SocketReceiveBufferSize"_qs), 0)
, m_socketBacklogSize(BITTORRENT_SESSION_KEY(u"SocketBacklogSize"_qs), 30)
, m_isAnonymousModeEnabled(BITTORRENT_SESSION_KEY(u"AnonymousModeEnabled"_qs), false)
, m_isQueueingEnabled(BITTORRENT_SESSION_KEY(u"QueueingSystemEnabled"_qs), false)
@@ -1599,6 +1601,8 @@ lt::settings_pack SessionImpl::loadLTSettings() const
// from libtorrent doc:
// It will not take affect until the listen_interfaces settings is updated
settingsPack.set_int(lt::settings_pack::send_socket_buffer_size, socketSendBufferSize());
settingsPack.set_int(lt::settings_pack::recv_socket_buffer_size, socketReceiveBufferSize());
settingsPack.set_int(lt::settings_pack::listen_queue_size, socketBacklogSize());
applyNetworkInterfacesSettings(settingsPack);
@@ -4181,6 +4185,34 @@ void SessionImpl::setConnectionSpeed(const int value)
configureDeferred();
}
int SessionImpl::socketSendBufferSize() const
{
return m_socketSendBufferSize;
}
void SessionImpl::setSocketSendBufferSize(const int value)
{
if (value == m_socketSendBufferSize)
return;
m_socketSendBufferSize = value;
configureDeferred();
}
int SessionImpl::socketReceiveBufferSize() const
{
return m_socketReceiveBufferSize;
}
void SessionImpl::setSocketReceiveBufferSize(const int value)
{
if (value == m_socketReceiveBufferSize)
return;
m_socketReceiveBufferSize = value;
configureDeferred();
}
int SessionImpl::socketBacklogSize() const
{
return m_socketBacklogSize;

View File

@@ -305,6 +305,10 @@ namespace BitTorrent
void setSendBufferWatermarkFactor(int value) override;
int connectionSpeed() const override;
void setConnectionSpeed(int value) override;
int socketSendBufferSize() const override;
void setSocketSendBufferSize(int value) override;
int socketReceiveBufferSize() const override;
void setSocketReceiveBufferSize(int value) override;
int socketBacklogSize() const override;
void setSocketBacklogSize(int value) override;
bool isAnonymousModeEnabled() const override;
@@ -601,6 +605,8 @@ namespace BitTorrent
CachedSettingValue<int> m_sendBufferLowWatermark;
CachedSettingValue<int> m_sendBufferWatermarkFactor;
CachedSettingValue<int> m_connectionSpeed;
CachedSettingValue<int> m_socketSendBufferSize;
CachedSettingValue<int> m_socketReceiveBufferSize;
CachedSettingValue<int> m_socketBacklogSize;
CachedSettingValue<bool> m_isAnonymousModeEnabled;
CachedSettingValue<bool> m_isQueueingEnabled;