aboutsummaryrefslogtreecommitdiff
path: root/zenserver/casstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-06-17 07:06:21 -0700
committerGitHub <[email protected]>2022-06-17 07:06:21 -0700
commitc7e22a4ef1cce7103b9afbeec487461cb32f8dbe (patch)
tree8b99d51bf496c96f82161c18fbdcfd5c6f8f31fd /zenserver/casstore.cpp
parentfixed merge mistake which caused a build error (diff)
downloadzen-c7e22a4ef1cce7103b9afbeec487461cb32f8dbe.tar.xz
zen-c7e22a4ef1cce7103b9afbeec487461cb32f8dbe.zip
Make cas storage an hidden implementation detail of CidStore (#130)v0.1.4-pre6v0.1.4-pre5
- Bumped ZEN_SCHEMA_VERSION - CasStore no longer a public API, it is hidden behind CidStore - Moved cas.h from public header folder - CidStore no longer maps from Cid -> Cas, we store entries in Cas under RawHash - CasStore now decompresses data to validate content (matching against RawHash) - CasChunkSet renames to HashKeySet and put in separate header/cpp file - Disabled "Chunk" command for now as it relied on CAS being exposed as a service - Changed CAS http service to Cid http server - Moved "Run" command completely inside ZEN_WITH_EXEC_SERVICES define - Removed "cas.basic" test - Uncommented ".exec.basic" test and added return-skip at start of test - Moved ScrubContext to separate header file - Renamed CasGC to GcManager - Cleaned up configuration passing in cas store classes - Removed CAS stuff from GcContext and clarified naming in class - Remove migration code
Diffstat (limited to 'zenserver/casstore.cpp')
-rw-r--r--zenserver/casstore.cpp112
1 files changed, 0 insertions, 112 deletions
diff --git a/zenserver/casstore.cpp b/zenserver/casstore.cpp
deleted file mode 100644
index 872a40df8..000000000
--- a/zenserver/casstore.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include "casstore.h"
-
-#include <zencore/fmtutils.h>
-#include <zencore/logging.h>
-
-#include <gsl/gsl-lite.hpp>
-
-namespace zen {
-
-HttpCasService::HttpCasService(CasStore& Store) : m_CasStore(Store)
-{
- m_Router.AddPattern("cas", "([0-9A-Fa-f]{40})");
-
- m_Router.RegisterRoute(
- "{cas}",
- [this](HttpRouterRequest& Req) {
- IoHash Hash = IoHash::FromHexString(Req.GetCapture(1));
- ZEN_DEBUG("CAS request for {}", Hash);
-
- HttpServerRequest& ServerRequest = Req.ServerRequest();
-
- switch (ServerRequest.RequestVerb())
- {
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- {
- if (IoBuffer Value = m_CasStore.FindChunk(Hash))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Value);
- }
-
- return ServerRequest.WriteResponse(HttpResponseCode::NotFound);
- }
- break;
-
- case HttpVerb::kPut:
- {
- IoBuffer Payload = ServerRequest.ReadPayload();
- IoHash PayloadHash = IoHash::HashBuffer(Payload.Data(), Payload.Size());
-
- // URI hash must match content hash
- if (PayloadHash != Hash)
- {
- return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
- }
-
- m_CasStore.InsertChunk(Payload, PayloadHash);
-
- return ServerRequest.WriteResponse(HttpResponseCode::OK);
- }
- break;
-
- default:
- break;
- }
- },
- HttpVerb::kGet | HttpVerb::kPut | HttpVerb::kHead);
-}
-
-const char*
-HttpCasService::BaseUri() const
-{
- return "/cas/";
-}
-
-void
-HttpCasService::HandleRequest(zen::HttpServerRequest& Request)
-{
- if (Request.RelativeUri().empty())
- {
- // Root URI request
-
- switch (Request.RequestVerb())
- {
- case HttpVerb::kPut:
- case HttpVerb::kPost:
- {
- IoBuffer Payload = Request.ReadPayload();
- IoHash PayloadHash = IoHash::HashBuffer(Payload.Data(), Payload.Size());
-
- ZEN_DEBUG("CAS POST request for {} ({} bytes)", PayloadHash, Payload.Size());
-
- auto InsertResult = m_CasStore.InsertChunk(Payload, PayloadHash);
-
- if (InsertResult.New)
- {
- return Request.WriteResponse(HttpResponseCode::Created);
- }
- else
- {
- return Request.WriteResponse(HttpResponseCode::OK);
- }
- }
- break;
-
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- break;
-
- default:
- break;
- }
- }
- else
- {
- m_Router.HandleRequest(Request);
- }
-}
-
-} // namespace zen