From 2b0bc6def92b846effbed29a34f284a3ec2ac01a Mon Sep 17 00:00:00 2001 From: zousar <2936246+zousar@users.noreply.github.com> Date: Fri, 1 Dec 2023 14:49:10 -0700 Subject: Add endpoint for all chunk infos Add endpoint for querying all chunk infos in an oplog. --- src/zenserver/projectstore/httpprojectstore.cpp | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/zenserver/projectstore/httpprojectstore.cpp') diff --git a/src/zenserver/projectstore/httpprojectstore.cpp b/src/zenserver/projectstore/httpprojectstore.cpp index 261485834..3994a9a46 100644 --- a/src/zenserver/projectstore/httpprojectstore.cpp +++ b/src/zenserver/projectstore/httpprojectstore.cpp @@ -275,6 +275,11 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, [this](HttpRouterRequest& Req) { HandleFilesRequest(Req); }, HttpVerb::kGet); + m_Router.RegisterRoute( + "{project}/oplog/{log}/chunks", + [this](HttpRouterRequest& Req) { HandleChunksRequest(Req); }, + HttpVerb::kGet); + m_Router.RegisterRoute( "{project}/oplog/{log}/{chunk}/info", [this](HttpRouterRequest& Req) { HandleChunkInfoRequest(Req); }, @@ -642,6 +647,41 @@ HttpProjectService::HandleFilesRequest(HttpRouterRequest& Req) return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); } +void +HttpProjectService::HandleChunksRequest(HttpRouterRequest& Req) +{ + ZEN_TRACE_CPU("ProjectService::Chunks"); + + HttpServerRequest& HttpReq = Req.ServerRequest(); + + const auto& ProjectId = Req.GetCapture(1); + const auto& OplogId = Req.GetCapture(2); + + CbObject ResponsePayload; + std::pair Result = m_ProjectStore->GetProjectChunks(ProjectId, OplogId, ResponsePayload); + if (Result.first == HttpResponseCode::OK) + { + return HttpReq.WriteResponse(HttpResponseCode::OK, ResponsePayload); + } + else + { + if (Result.first == HttpResponseCode::BadRequest) + { + m_ProjectStats.BadRequestCount++; + } + ZEN_DEBUG("Request {}: '{}' failed with {}. Reason: `{}`", + ToString(HttpReq.RequestVerb()), + HttpReq.QueryString(), + static_cast(Result.first), + Result.second); + } + if (Result.second.empty()) + { + return HttpReq.WriteResponse(Result.first); + } + return HttpReq.WriteResponse(Result.first, HttpContentType::kText, Result.second); +} + void HttpProjectService::HandleChunkInfoRequest(HttpRouterRequest& Req) { -- cgit v1.2.3 From ed465b8d83c5b1a3f996fd8f4f037427574918f2 Mon Sep 17 00:00:00 2001 From: zousar <2936246+zousar@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:46:00 -0700 Subject: Change naming to ChunkInfos instead of Chunks --- src/zenserver/projectstore/httpprojectstore.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/zenserver/projectstore/httpprojectstore.cpp') diff --git a/src/zenserver/projectstore/httpprojectstore.cpp b/src/zenserver/projectstore/httpprojectstore.cpp index 3994a9a46..0ba49cf8a 100644 --- a/src/zenserver/projectstore/httpprojectstore.cpp +++ b/src/zenserver/projectstore/httpprojectstore.cpp @@ -276,8 +276,8 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects, HttpVerb::kGet); m_Router.RegisterRoute( - "{project}/oplog/{log}/chunks", - [this](HttpRouterRequest& Req) { HandleChunksRequest(Req); }, + "{project}/oplog/{log}/chunkinfos", + [this](HttpRouterRequest& Req) { HandleChunkInfosRequest(Req); }, HttpVerb::kGet); m_Router.RegisterRoute( @@ -648,9 +648,9 @@ HttpProjectService::HandleFilesRequest(HttpRouterRequest& Req) } void -HttpProjectService::HandleChunksRequest(HttpRouterRequest& Req) +HttpProjectService::HandleChunkInfosRequest(HttpRouterRequest& Req) { - ZEN_TRACE_CPU("ProjectService::Chunks"); + ZEN_TRACE_CPU("ProjectService::ChunkInfos"); HttpServerRequest& HttpReq = Req.ServerRequest(); @@ -658,7 +658,7 @@ HttpProjectService::HandleChunksRequest(HttpRouterRequest& Req) const auto& OplogId = Req.GetCapture(2); CbObject ResponsePayload; - std::pair Result = m_ProjectStore->GetProjectChunks(ProjectId, OplogId, ResponsePayload); + std::pair Result = m_ProjectStore->GetProjectChunkInfos(ProjectId, OplogId, ResponsePayload); if (Result.first == HttpResponseCode::OK) { return HttpReq.WriteResponse(HttpResponseCode::OK, ResponsePayload); -- cgit v1.2.3