diff options
Diffstat (limited to 'src/zenserver/hub/zenhubserver.cpp')
| -rw-r--r-- | src/zenserver/hub/zenhubserver.cpp | 48 |
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) |