aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/hub/zenhubserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/hub/zenhubserver.cpp')
-rw-r--r--src/zenserver/hub/zenhubserver.cpp48
1 files changed, 44 insertions, 4 deletions
diff --git a/src/zenserver/hub/zenhubserver.cpp b/src/zenserver/hub/zenhubserver.cpp
index b0ae0a8b1..313be977c 100644
--- a/src/zenserver/hub/zenhubserver.cpp
+++ b/src/zenserver/hub/zenhubserver.cpp
@@ -26,6 +26,15 @@ namespace zen {
void
ZenHubServerConfigurator::AddCliOptions(cxxopts::Options& Options)
{
+ const char* DefaultInstanceHttp = "asio";
+
+#if ZEN_WITH_HTTPSYS
+ if (!windows::IsRunningOnWine())
+ {
+ DefaultInstanceHttp = "httpsys";
+ }
+#endif
+
Options.add_option("hub",
"",
"upstream-notification-endpoint",
@@ -60,6 +69,31 @@ ZenHubServerConfigurator::AddCliOptions(cxxopts::Options& Options)
"Maximum number of provisioned instances for this hub",
cxxopts::value<int>(m_ServerOptions.HubInstanceLimit)->default_value("1000"),
"");
+
+ Options.add_option("hub",
+ "",
+ "hub-instance-http",
+ "Select HTTP server implementation for provisioned instances (asio|"
+#if ZEN_WITH_HTTPSYS
+ "httpsys|"
+#endif
+ "null)",
+ cxxopts::value<std::string>(m_ServerOptions.HubInstanceHttpClass)->default_value(DefaultInstanceHttp),
+ "<instance http class>");
+
+ Options.add_option("hub",
+ "",
+ "hub-instance-http-threads",
+ "Number of http server connection threads for provisioned instances",
+ cxxopts::value<unsigned int>(m_ServerOptions.HubInstanceHttpThreadCount),
+ "<instance http threads>");
+ Options.add_option("hub",
+ "",
+ "hub-instance-corelimit",
+ "Limit concurrency of provisioned instances",
+ cxxopts::value(m_ServerOptions.HubInstanceCoreLimit),
+ "<instance core limit>");
+
#if ZEN_PLATFORM_WINDOWS
Options.add_option("hub",
"",
@@ -231,10 +265,15 @@ ZenHubServer::InitializeServices(const ZenHubServerConfig& ServerConfig)
ZEN_INFO("instantiating Hub");
m_Hub = std::make_unique<Hub>(
- Hub::Configuration{.UseJobObject = ServerConfig.HubUseJobObject,
- .BasePortNumber = ServerConfig.HubBasePortNumber,
- .InstanceLimit = ServerConfig.HubInstanceLimit},
- ZenServerEnvironment(ZenServerEnvironment::Hub, ServerConfig.DataDir / "hub", ServerConfig.DataDir / "servers"),
+ Hub::Configuration{.UseJobObject = ServerConfig.HubUseJobObject,
+ .BasePortNumber = ServerConfig.HubBasePortNumber,
+ .InstanceLimit = ServerConfig.HubInstanceLimit,
+ .InstanceHttpThreadCount = ServerConfig.HubInstanceHttpThreadCount,
+ .InstanceCoreLimit = ServerConfig.HubInstanceCoreLimit},
+ ZenServerEnvironment(ZenServerEnvironment::Hub,
+ ServerConfig.DataDir / "hub",
+ ServerConfig.DataDir / "servers",
+ ServerConfig.HubInstanceHttpClass),
m_ConsulClient ? [this, HubInstanceId = fmt::format("zen-hub-{}", ServerConfig.InstanceId)](
std::string_view ModuleId,
const HubProvisionedInstanceInfo& Info) { OnProvisioned(HubInstanceId, ModuleId, Info); }
@@ -405,6 +444,7 @@ ZenHubServerMain::DoRun(ZenServerState::ZenServerEntry* Entry)
Server.SetContentRoot(m_ServerOptions.ContentDir);
Server.SetTestMode(m_ServerOptions.IsTest);
Server.SetDedicatedMode(m_ServerOptions.IsDedicated);
+ Server.SetAllowPortProbing(!m_ServerOptions.IsDedicated && m_ServerOptions.AllowPortProbing);
const int EffectiveBasePort = Server.Initialize(m_ServerOptions, Entry);
if (EffectiveBasePort == -1)