mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
The dashboard's web server answers one request at a time, so converting a big .nif (glom files up to tens of MB) held up every other request, flairs included. - dWeb: Web::Defer hands a request to another thread; the reply is sent from the web thread on its next poll (DeferredQueue). A client that leaves first cancels it and the late reply is dropped. The synchronous route API is unchanged. - Web::Shutdown closes connections while the state their close events touch is still alive; the destructor no longer runs handlers during static destruction (stopping the dashboard aborted in ~WSClient). - WorkerPool: priority lanes, with one thread only for urgent work (flairs, small models, textures), and limited background work. - Scenery: mesh and texture routes (and the showcase's) convert on the pool; thread-safe memory and disk caches, one conversion per model at a time with waiters sharing it; zones are converted ahead onto the disk cache while viewed. - Setting scenery_workers (0: half the cores, 2 to 4). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
94 lines
2.7 KiB
CMake
94 lines
2.7 KiB
CMake
set(DASHBOARDROUTES_SOURCES
|
|
"APIRoutes.cpp"
|
|
"StaticRoutes.cpp"
|
|
"DashboardRoutes.cpp"
|
|
"WSRoutes.cpp"
|
|
"AuthRoutes.cpp"
|
|
"RouteUtils.cpp"
|
|
"PlayerActions.cpp"
|
|
"AccountRoutes.cpp"
|
|
"ClientAssets.cpp"
|
|
"MaintenanceRoutes.cpp"
|
|
"ReportRoutes.cpp"
|
|
"EconomyPlaces.cpp"
|
|
"SecurityRoutes.cpp"
|
|
"WebhookRoutes.cpp"
|
|
"EconomyJobs.cpp"
|
|
"LiveWorld.cpp"
|
|
"SettingsRoutes.cpp"
|
|
"Background.cpp"
|
|
"Scheduler.cpp"
|
|
"SettingsCatalog.cpp"
|
|
"BackupRoutes.cpp"
|
|
"BackupFiles.cpp"
|
|
"ReportViews.cpp"
|
|
"CharacterTools.cpp"
|
|
"CharacterRestore.cpp"
|
|
"MissionTools.cpp"
|
|
"CharacterProgress.cpp"
|
|
"ServerRoutes.cpp"
|
|
"LeaderboardRoutes.cpp"
|
|
"VanityRoutes.cpp"
|
|
"ChatRoutes.cpp"
|
|
"Strikes.cpp"
|
|
"Inspector.cpp"
|
|
"CDClientBrowser.cpp"
|
|
"SettingsHistory.cpp"
|
|
"Announcements.cpp"
|
|
"EventsCalendar.cpp"
|
|
"LiveEventRoutes.cpp"
|
|
"ChallengeRoutes.cpp"
|
|
"InstanceLoad.cpp"
|
|
"WorldView.cpp"
|
|
"NifFile.cpp"
|
|
"Scenery.cpp"
|
|
"WorkerPool.cpp"
|
|
"AccountModeration.cpp"
|
|
"ModerationTools.cpp"
|
|
"ModeratorHelper.cpp"
|
|
"../ai/ClaudeClient.cpp"
|
|
"../ai/ModeratorPrompt.cpp"
|
|
"PublicRoutes.cpp"
|
|
"Showcase.cpp"
|
|
"FeaturedProperties.cpp"
|
|
"PasswordRecovery.cpp"
|
|
"PrometheusMetrics.cpp"
|
|
"../email/SmtpClient.cpp"
|
|
"../email/EmailService.cpp"
|
|
"../email/OAuth2.cpp"
|
|
"../notify/WebhookFormat.cpp"
|
|
"../notify/Alerts.cpp"
|
|
# Shared with the world servers, which add items and models the same way
|
|
"${PROJECT_SOURCE_DIR}/dGame/dUtilities/ObjectIDManager.cpp"
|
|
)
|
|
|
|
add_library(DashboardRoutes STATIC ${DASHBOARDROUTES_SOURCES})
|
|
|
|
target_include_directories(DashboardRoutes PRIVATE
|
|
"${PROJECT_SOURCE_DIR}/dCommon"
|
|
"${PROJECT_SOURCE_DIR}/dCommon/dClient"
|
|
"${PROJECT_SOURCE_DIR}/dCommon/dEnums"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase/CDClientDatabase"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase/CDClientDatabase/CDClientTables"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase/GameDatabase"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase/GameDatabase/ITables"
|
|
"${PROJECT_SOURCE_DIR}/dDatabase/GameDatabase/MySQL"
|
|
"${PROJECT_SOURCE_DIR}/dNet"
|
|
"${PROJECT_SOURCE_DIR}/dWeb"
|
|
"${PROJECT_SOURCE_DIR}/dServer"
|
|
"${PROJECT_SOURCE_DIR}/thirdparty"
|
|
"${PROJECT_SOURCE_DIR}/thirdparty/nlohmann"
|
|
"${PROJECT_SOURCE_DIR}/thirdparty/libbcrypt/include"
|
|
"${PROJECT_SOURCE_DIR}/dDashboardServer/auth"
|
|
"${PROJECT_SOURCE_DIR}/dDashboardServer/routes"
|
|
"${PROJECT_SOURCE_DIR}/dDashboardServer/email"
|
|
"${PROJECT_SOURCE_DIR}/dDashboardServer/notify"
|
|
"${PROJECT_SOURCE_DIR}/dDashboardServer/ai"
|
|
"${PROJECT_SOURCE_DIR}/dChatFilter" # word rules for the chat filter page
|
|
"${PROJECT_SOURCE_DIR}/dGame/dUtilities" # ObjectIDManager.h
|
|
)
|
|
|
|
target_compile_definitions(DashboardRoutes PRIVATE PROJECT_VERSION="\"${PROJECT_VERSION}\"")
|
|
target_link_libraries(DashboardRoutes PRIVATE ${COMMON_LIBRARIES} dWeb dServer sqlite3 OpenSSL::Crypto CURL::libcurl)
|