diff options
Diffstat (limited to 'src/zenserver/hub/httphubservice.h')
| -rw-r--r-- | src/zenserver/hub/httphubservice.h | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/zenserver/hub/httphubservice.h b/src/zenserver/hub/httphubservice.h index d08eeea2a..f4d1b0b89 100644 --- a/src/zenserver/hub/httphubservice.h +++ b/src/zenserver/hub/httphubservice.h @@ -2,10 +2,17 @@ #pragma once +#include <zencore/thread.h> #include <zenhttp/httpserver.h> +#include <zenhttp/httpstatus.h> +#include <zenhttp/websocket.h> + +#include <memory> namespace zen { +class HttpProxyHandler; +class HttpStatsService; class Hub; /** ZenServer Hub Service @@ -14,27 +21,43 @@ class Hub; * use in UEFN content worker style scenarios. * */ -class HttpHubService : public zen::HttpService +class HttpHubService : public HttpService, public IHttpStatusProvider, public IHttpStatsProvider, public IWebSocketHandler { public: - HttpHubService(Hub& Hub); + HttpHubService(Hub& Hub, HttpProxyHandler& Proxy, HttpStatsService& StatsService, HttpStatusService& StatusService); ~HttpHubService(); HttpHubService(const HttpHubService&) = delete; HttpHubService& operator=(const HttpHubService&) = delete; virtual const char* BaseUri() const override; - virtual void HandleRequest(zen::HttpServerRequest& Request) override; + virtual void HandleRequest(HttpServerRequest& Request) override; + virtual void HandleStatusRequest(HttpServerRequest& Request) override; + virtual void HandleStatsRequest(HttpServerRequest& Request) override; + virtual CbObject CollectStats() override; + virtual uint64_t GetActivityCounter() override; + + // IWebSocketHandler + void OnWebSocketOpen(Ref<WebSocketConnection> Connection, std::string_view RelativeUri) override; + void OnWebSocketMessage(WebSocketConnection& Conn, const WebSocketMessage& Msg) override; + void OnWebSocketClose(WebSocketConnection& Conn, uint16_t Code, std::string_view Reason) override; void SetNotificationEndpoint(std::string_view UpstreamNotificationEndpoint, std::string_view InstanceId); private: - HttpRequestRouter m_Router; - Hub& m_Hub; + HttpRequestRouter m_Router; + metrics::OperationTiming m_HttpRequests; + + HttpStatsService& m_StatsService; + HttpStatusService& m_StatusService; + + void HandleDeprovisionAll(HttpServerRequest& Request); void HandleModuleGet(HttpServerRequest& Request, std::string_view ModuleId); void HandleModuleDelete(HttpServerRequest& Request, std::string_view ModuleId); + + HttpProxyHandler& m_Proxy; }; } // namespace zen |