diff options
Diffstat (limited to 'zenserver/monitoring')
| -rw-r--r-- | zenserver/monitoring/httpstats.cpp | 16 | ||||
| -rw-r--r-- | zenserver/monitoring/httpstats.h | 1 | ||||
| -rw-r--r-- | zenserver/monitoring/httpstatus.cpp | 16 | ||||
| -rw-r--r-- | zenserver/monitoring/httpstatus.h | 1 |
4 files changed, 30 insertions, 4 deletions
diff --git a/zenserver/monitoring/httpstats.cpp b/zenserver/monitoring/httpstats.cpp index de04294d0..4d985f8c2 100644 --- a/zenserver/monitoring/httpstats.cpp +++ b/zenserver/monitoring/httpstats.cpp @@ -26,6 +26,15 @@ HttpStatsService::RegisterHandler(std::string_view Id, IHttpStatsProvider& Provi } void +HttpStatsService::UnregisterHandler(std::string_view Id, IHttpStatsProvider& Provider) +{ + ZEN_UNUSED(Provider); + + RwLock::ExclusiveLockScope _(m_Lock); + m_Providers.erase(std::string(Id)); +} + +void HttpStatsService::HandleRequest(HttpServerRequest& Request) { using namespace std::literals; @@ -36,9 +45,12 @@ HttpStatsService::HandleRequest(HttpServerRequest& Request) { case HttpVerb::kHead: case HttpVerb::kGet: - if (auto It = m_Providers.find(std::string{Key}); It != end(m_Providers)) { - return It->second->HandleStatsRequest(Request); + RwLock::SharedLockScope _(m_Lock); + if (auto It = m_Providers.find(std::string{Key}); It != end(m_Providers)) + { + return It->second->HandleStatsRequest(Request); + } } [[fallthrough]]; diff --git a/zenserver/monitoring/httpstats.h b/zenserver/monitoring/httpstats.h index 1c3c79dd0..732815a9a 100644 --- a/zenserver/monitoring/httpstats.h +++ b/zenserver/monitoring/httpstats.h @@ -23,6 +23,7 @@ public: virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; void RegisterHandler(std::string_view Id, IHttpStatsProvider& Provider); + void UnregisterHandler(std::string_view Id, IHttpStatsProvider& Provider); private: spdlog::logger& m_Log; diff --git a/zenserver/monitoring/httpstatus.cpp b/zenserver/monitoring/httpstatus.cpp index e12662b1c..8b10601dd 100644 --- a/zenserver/monitoring/httpstatus.cpp +++ b/zenserver/monitoring/httpstatus.cpp @@ -26,6 +26,15 @@ HttpStatusService::RegisterHandler(std::string_view Id, IHttpStatusProvider& Pro } void +HttpStatusService::UnregisterHandler(std::string_view Id, IHttpStatusProvider& Provider) +{ + ZEN_UNUSED(Provider); + + RwLock::ExclusiveLockScope _(m_Lock); + m_Providers.erase(std::string(Id)); +} + +void HttpStatusService::HandleRequest(HttpServerRequest& Request) { using namespace std::literals; @@ -36,9 +45,12 @@ HttpStatusService::HandleRequest(HttpServerRequest& Request) { case HttpVerb::kHead: case HttpVerb::kGet: - if (auto It = m_Providers.find(std::string{Key}); It != end(m_Providers)) { - return It->second->HandleStatusRequest(Request); + RwLock::SharedLockScope _(m_Lock); + if (auto It = m_Providers.find(std::string{Key}); It != end(m_Providers)) + { + return It->second->HandleStatusRequest(Request); + } } [[fallthrough]]; diff --git a/zenserver/monitoring/httpstatus.h b/zenserver/monitoring/httpstatus.h index 8f069f760..b04e45324 100644 --- a/zenserver/monitoring/httpstatus.h +++ b/zenserver/monitoring/httpstatus.h @@ -23,6 +23,7 @@ public: virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; void RegisterHandler(std::string_view Id, IHttpStatusProvider& Provider); + void UnregisterHandler(std::string_view Id, IHttpStatusProvider& Provider); private: spdlog::logger& m_Log; |