Add BEAMMP_MAX_CONCURRENT_CONNECTIONS env var (#496)

By creating this pull request, I understand that code that is AI
generated or otherwise automatically generated may be rejected without
further discussion.
I declare that I fully understand all code I pushed into this PR, and
wrote all this code myself and own the rights to this code.
This commit is contained in:
Tixx
2026-06-27 21:29:10 +02:00
committed by GitHub
3 changed files with 22 additions and 1 deletions
+1
View File
@@ -23,6 +23,7 @@
namespace Env { namespace Env {
enum class Key { enum class Key {
MAX_CONCURRENT_CONNECTIONS,
// provider settings // provider settings
PROVIDER_UPDATE_MESSAGE, PROVIDER_UPDATE_MESSAGE,
PROVIDER_DISABLE_CONFIG, PROVIDER_DISABLE_CONFIG,
+3
View File
@@ -45,6 +45,9 @@ std::string_view Env::ToString(Env::Key key) {
case Key::PROVIDER_IP_ENV: case Key::PROVIDER_IP_ENV:
return "BEAMMP_PROVIDER_IP_ENV"; return "BEAMMP_PROVIDER_IP_ENV";
break; break;
case Key::MAX_CONCURRENT_CONNECTIONS:
return "BEAMMP_MAX_CONCURRENT_CONNECTIONS";
break;
} }
return ""; return "";
} }
+18 -1
View File
@@ -19,6 +19,7 @@
#include "TNetwork.h" #include "TNetwork.h"
#include "Client.h" #include "Client.h"
#include "Common.h" #include "Common.h"
#include "Env.h"
#include "LuaAPI.h" #include "LuaAPI.h"
#include "TConnectionLimiter.h" #include "TConnectionLimiter.h"
#include "THeartbeatThread.h" #include "THeartbeatThread.h"
@@ -45,8 +46,24 @@
typedef boost::asio::detail::socket_option::integer<SOL_SOCKET, SO_RCVTIMEO> rcv_timeout_option; typedef boost::asio::detail::socket_option::integer<SOL_SOCKET, SO_RCVTIMEO> rcv_timeout_option;
static constexpr uint8_t MAX_CONCURRENT_CONNECTIONS = 10;
static constexpr uint8_t MAX_GLOBAL_CONNECTIONS = 128; static constexpr uint8_t MAX_GLOBAL_CONNECTIONS = 128;
static const uint8_t MAX_CONCURRENT_CONNECTIONS = []() -> uint8_t {
if (auto EnvVar = Env::Get(Env::Key::MAX_CONCURRENT_CONNECTIONS)) {
try {
beammp_debugf("BEAMMP_MAX_CONCURRENT_CONNECTIONS: {}", EnvVar.value());
if (const int value = std::stoi(std::string(EnvVar.value())); value > 0 && value <= MAX_GLOBAL_CONNECTIONS) {
beammp_debugf("BEAMMP_MAX_CONCURRENT_CONNECTIONS Parsed: {}", value);
return static_cast<uint8_t>(value);
}
beammp_warn("Env variable BEAMMP_MAX_CONCURRENT_CONNECTIONS is out of range, using default value.");
} catch (const std::exception&) {
beammp_warn("Error parsing Env variable BEAMMP_MAX_CONCURRENT_CONNECTIONS, using default value.");
}
}
return 10;
}();
static constexpr uint8_t READ_TIMEOUT_S = 10; // seconds static constexpr uint8_t READ_TIMEOUT_S = 10; // seconds
std::vector<uint8_t> StringToVector(const std::string& Str) { std::vector<uint8_t> StringToVector(const std::string& Str) {