diff options
| author | Joe Kirchoff <[email protected]> | 2022-03-30 14:15:15 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-03-30 14:15:15 -0700 |
| commit | eb33c52b8e338b1bccf0d9d26b56d7ef611f6059 (patch) | |
| tree | 994b2af87e7b0cfba3250d41227c94d777738dc4 /zenserver/upstream/jupiter.cpp | |
| parent | Retain flags for small objects in structured cache (#68) (diff) | |
| download | zen-eb33c52b8e338b1bccf0d9d26b56d7ef611f6059.tar.xz zen-eb33c52b8e338b1bccf0d9d26b56d7ef611f6059.zip | |
Simple file-based compute (#65)
Diffstat (limited to 'zenserver/upstream/jupiter.cpp')
| -rw-r--r-- | zenserver/upstream/jupiter.cpp | 53 |
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()); } } |