aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/jupiter.cpp
diff options
context:
space:
mode:
authorJoe Kirchoff <[email protected]>2022-03-30 14:15:15 -0700
committerGitHub <[email protected]>2022-03-30 14:15:15 -0700
commiteb33c52b8e338b1bccf0d9d26b56d7ef611f6059 (patch)
tree994b2af87e7b0cfba3250d41227c94d777738dc4 /zenserver/upstream/jupiter.cpp
parentRetain flags for small objects in structured cache (#68) (diff)
downloadzen-eb33c52b8e338b1bccf0d9d26b56d7ef611f6059.tar.xz
zen-eb33c52b8e338b1bccf0d9d26b56d7ef611f6059.zip
Simple file-based compute (#65)
Diffstat (limited to 'zenserver/upstream/jupiter.cpp')
-rw-r--r--zenserver/upstream/jupiter.cpp53
1 files changed, 10 insertions, 43 deletions
diff --git a/zenserver/upstream/jupiter.cpp b/zenserver/upstream/jupiter.cpp
index eef1daab0..7eef96556 100644
--- a/zenserver/upstream/jupiter.cpp
+++ b/zenserver/upstream/jupiter.cpp
@@ -640,39 +640,6 @@ CloudCacheSession::GetComputeUpdates(std::string_view ChannelId, const uint32_t
return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
}
-CloudCacheResult
-CloudCacheSession::GetObjectTree(const IoHash& Key)
-{
- ZEN_TRACE_CPU("HordeClient::GetObjectTree");
-
- ExtendableStringBuilder<256> Uri;
- Uri << m_CacheClient->ServiceUrl() << "/api/v1/objects/" << m_CacheClient->BlobStoreNamespace() << "/" << Key.ToHexString() << "/tree";
-
- cpr::Session& Session = GetSession();
- const CloudCacheAccessToken& AccessToken = GetAccessToken();
-
- Session.SetOption(cpr::Url{Uri.c_str()});
- Session.SetOption(cpr::Header{{"Authorization", AccessToken.Value}, {"Accept", "application/octet-stream"}});
- Session.SetOption(cpr::Body{});
-
- cpr::Response Response = Session.Get();
- ZEN_DEBUG("GET {}", Response);
-
- if (Response.error)
- {
- return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = Response.error.message};
- }
- else if (!VerifyAccessToken(Response.status_code))
- {
- return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
- }
-
- const bool Success = Response.status_code == 200;
- const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
-
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
-}
-
std::vector<IoHash>
CloudCacheSession::Filter(std::string_view BucketId, const std::vector<IoHash>& ChunkHashes)
{
@@ -738,21 +705,24 @@ CloudCacheSession::CacheTypeExists(std::string_view TypeId, const std::set<IoHas
{
ZEN_TRACE_CPU("HordeClient::CacheTypeExists");
- ExtendableStringBuilder<256> Query;
+ ExtendableStringBuilder<256> Body;
+ Body << "[";
for (const auto& Key : Keys)
{
- Query << (Query.Size() != 0 ? "&id=" : "id=") << Key.ToHexString();
+ Body << (Body.Size() != 1 ? ",\"" : "\"") << Key.ToHexString() << "\"";
}
+ Body << "]";
ExtendableStringBuilder<256> Uri;
- Uri << m_CacheClient->ServiceUrl() << "/api/v1/" << TypeId << "/" << m_CacheClient->BlobStoreNamespace() << "/exists?" << Query;
+ Uri << m_CacheClient->ServiceUrl() << "/api/v1/" << TypeId << "/" << m_CacheClient->BlobStoreNamespace() << "/exist";
cpr::Session& Session = GetSession();
const CloudCacheAccessToken& AccessToken = GetAccessToken();
Session.SetOption(cpr::Url{Uri.c_str()});
- Session.SetOption(cpr::Header{{"Authorization", AccessToken.Value}, {"Accept", "application/x-ue-cb"}});
- Session.SetOption(cpr::Body{});
+ Session.SetOption(
+ cpr::Header{{"Authorization", AccessToken.Value}, {"Accept", "application/x-ue-cb"}, {"Content-Type", "application/json"}});
+ Session.SetOption(cpr::Body(Body.ToString()));
cpr::Response Response = Session.Post();
ZEN_DEBUG("POST {}", Response);
@@ -773,12 +743,9 @@ CloudCacheSession::CacheTypeExists(std::string_view TypeId, const std::set<IoHas
{
IoBuffer Buffer = IoBuffer(zen::IoBuffer::Wrap, Response.text.data(), Response.text.size());
const CbObject ExistsResponse = LoadCompactBinaryObject(Buffer);
- for (auto& Item : ExistsResponse["Needs"sv])
+ for (auto& Item : ExistsResponse["needs"sv])
{
- if (Item.IsHash())
- {
- Result.Have.insert(Item.AsHash());
- }
+ Result.Needs.insert(Item.AsHash());
}
}