aboutsummaryrefslogtreecommitdiff
path: root/zenserver/monitoring/httpstats.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-10-05 18:10:19 +0200
committerStefan Boberg <[email protected]>2021-10-05 18:10:19 +0200
commit09fa320db4c7727c04eb88f5d19c4c1a3b2189e8 (patch)
tree0d0649b08d8ee479287e8ef4cc6f2507a74f9ed5 /zenserver/monitoring/httpstats.cpp
parenthttp: Exclude iothreadpool from compilation on non-Windows (diff)
parentPass logger from Zen client to session instead from spdlog registry. (diff)
downloadzen-09fa320db4c7727c04eb88f5d19c4c1a3b2189e8.tar.xz
zen-09fa320db4c7727c04eb88f5d19c4c1a3b2189e8.zip
Merge branch 'main' of https://github.com/EpicGames/zen into main
Diffstat (limited to 'zenserver/monitoring/httpstats.cpp')
-rw-r--r--zenserver/monitoring/httpstats.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/zenserver/monitoring/httpstats.cpp b/zenserver/monitoring/httpstats.cpp
new file mode 100644
index 000000000..de04294d0
--- /dev/null
+++ b/zenserver/monitoring/httpstats.cpp
@@ -0,0 +1,50 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "httpstats.h"
+
+namespace zen {
+
+HttpStatsService::HttpStatsService() : m_Log(logging::Get("stats"))
+{
+}
+
+HttpStatsService::~HttpStatsService()
+{
+}
+
+const char*
+HttpStatsService::BaseUri() const
+{
+ return "/stats/";
+}
+
+void
+HttpStatsService::RegisterHandler(std::string_view Id, IHttpStatsProvider& Provider)
+{
+ RwLock::ExclusiveLockScope _(m_Lock);
+ m_Providers.insert_or_assign(std::string(Id), &Provider);
+}
+
+void
+HttpStatsService::HandleRequest(HttpServerRequest& Request)
+{
+ using namespace std::literals;
+
+ std::string_view Key = Request.RelativeUri();
+
+ switch (Request.RequestVerb())
+ {
+ case HttpVerb::kHead:
+ case HttpVerb::kGet:
+ if (auto It = m_Providers.find(std::string{Key}); It != end(m_Providers))
+ {
+ return It->second->HandleStatsRequest(Request);
+ }
+
+ [[fallthrough]];
+ default:
+ return;
+ }
+}
+
+} // namespace zen