// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include #include #include #include namespace zen { /** * Test service to facilitate testing the HTTP framework and client interactions */ class HttpTestingService : public HttpService, public WebSocketService { public: HttpTestingService(); ~HttpTestingService(); virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; virtual Ref HandlePackageRequest(HttpServerRequest& HttpServiceRequest) override; class PackageHandler : public IHttpPackageHandler { public: PackageHandler(HttpTestingService& Svc, uint32_t RequestId); ~PackageHandler(); virtual void FilterOffer(std::vector& OfferCids) override; virtual void OnRequestBegin() override; virtual IoBuffer CreateTarget(const IoHash& Cid, uint64_t StorageSize) override; virtual void OnRequestComplete() override; private: HttpTestingService& m_Svc; uint32_t m_RequestId; }; private: virtual void RegisterHandlers(WebSocketServer& Server) override; virtual bool HandleRequest(const WebSocketMessage& Request) override; HttpRequestRouter m_Router; std::atomic m_Counter{0}; metrics::OperationTiming m_TimingStats; RwLock m_RwLock; std::unordered_map> m_HandlerMap; }; } // namespace zen