diff options
Diffstat (limited to 'zenserver/testing/httptest.cpp')
| -rw-r--r-- | zenserver/testing/httptest.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp index d1955ca27..2d469c936 100644 --- a/zenserver/testing/httptest.cpp +++ b/zenserver/testing/httptest.cpp @@ -36,17 +36,33 @@ HttpTestingService::HandleRequest(HttpServerRequest& Request) m_Router.HandleRequest(Request); } -////////////////////////////////////////////////////////////////////////// - Ref<IHttpPackageHandler> HttpTestingService::HandlePackageRequest(HttpServerRequest& HttpServiceRequest) { - return new PackageHandler(HttpServiceRequest); + RwLock::ExclusiveLockScope _(m_RwLock); + + const uint32_t RequestId = HttpServiceRequest.RequestId(); + + if (auto It = m_HandlerMap.find(RequestId); It != m_HandlerMap.end()) + { + Ref<HttpTestingService::PackageHandler> Handler = std::move(It->second); + + m_HandlerMap.erase(It); + + return Handler.Get(); + } + + auto InsertResult = m_HandlerMap.insert({RequestId, nullptr}); + + _.ReleaseNow(); + + return (InsertResult.first->second = new PackageHandler(*this, RequestId)).Get(); } -HttpTestingService::PackageHandler::PackageHandler(const HttpServerRequest& Request) +////////////////////////////////////////////////////////////////////////// + +HttpTestingService::PackageHandler::PackageHandler(HttpTestingService& Svc, uint32_t RequestId) : m_Svc(Svc), m_RequestId(RequestId) { - ZEN_UNUSED(Request); } HttpTestingService::PackageHandler::~PackageHandler() @@ -61,7 +77,12 @@ HttpTestingService::PackageHandler::FilterOffer(std::vector<IoHash>& OfferCids) return; } void -HttpTestingService::PackageHandler::OnBeginChunks() +HttpTestingService::PackageHandler::OnRequestBegin() +{ +} + +void +HttpTestingService::PackageHandler::OnRequestComplete() { } @@ -73,9 +94,4 @@ HttpTestingService::PackageHandler::CreateTarget(const IoHash& Cid, uint64_t Sto return {}; } -void -HttpTestingService::PackageHandler::OnEndChunks() -{ -} - } // namespace zen |