diff options
| author | Dan Engelbrecht <[email protected]> | 2022-06-17 07:06:21 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-06-17 07:06:21 -0700 |
| commit | c7e22a4ef1cce7103b9afbeec487461cb32f8dbe (patch) | |
| tree | 8b99d51bf496c96f82161c18fbdcfd5c6f8f31fd /zenserver/casstore.cpp | |
| parent | fixed merge mistake which caused a build error (diff) | |
| download | zen-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.cpp | 112 |
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 |