diff options
| author | Dan Engelbrecht <[email protected]> | 2025-05-20 18:43:41 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-05-20 18:43:41 +0200 |
| commit | 47cba21817608be9232e9d0a55bf01a313d4be2c (patch) | |
| tree | d6fdc355af5c4b6f4a494b70dbb43ab4db9cf4d7 /src/zenutil | |
| parent | Merge pull request #402 from ue-foundation/zs/fix-oplog-import-oplog-creation (diff) | |
| download | zen-47cba21817608be9232e9d0a55bf01a313d4be2c.tar.xz zen-47cba21817608be9232e9d0a55bf01a313d4be2c.zip | |
use explicit capture for lambdas (#404)
Diffstat (limited to 'src/zenutil')
| -rw-r--r-- | src/zenutil/jupiter/jupitersession.cpp | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/src/zenutil/jupiter/jupitersession.cpp b/src/zenutil/jupiter/jupitersession.cpp index de138f994..01a703a1b 100644 --- a/src/zenutil/jupiter/jupitersession.cpp +++ b/src/zenutil/jupiter/jupitersession.cpp @@ -697,28 +697,35 @@ JupiterSession::GetMultipartBuildBlob(std::string_view Namespace, while (Offset < TotalSize) { uint64_t PartSize = Min(ChunkSize, TotalSize - Offset); - OutWorkItems.emplace_back( - [this, Namespace, BucketId, BuildId, Hash, TotalSize, Workload, Offset, PartSize]() -> JupiterResult { - std::string RequestUrl = fmt::format("/api/v2/builds/{}/{}/{}/blobs/{}?supportsRedirect={}", - Namespace, - BucketId, - BuildId, - Hash.ToHexString(), - m_AllowRedirect ? "true"sv : "false"sv); - HttpClient::Response Response = m_HttpClient.Get( - RequestUrl, - HttpClient::KeyValueMap({{"Range", fmt::format("bytes={}-{}", Offset, Offset + PartSize - 1)}})); - if (Response.IsSuccess()) + OutWorkItems.emplace_back([this, + Namespace = std::string(Namespace), + BucketId = std::string(BucketId), + BuildId = Oid(BuildId), + Hash = IoHash(Hash), + TotalSize, + Workload, + Offset, + PartSize]() -> JupiterResult { + std::string RequestUrl = fmt::format("/api/v2/builds/{}/{}/{}/blobs/{}?supportsRedirect={}", + Namespace, + BucketId, + BuildId, + Hash.ToHexString(), + m_AllowRedirect ? "true"sv : "false"sv); + HttpClient::Response Response = m_HttpClient.Get( + RequestUrl, + HttpClient::KeyValueMap({{"Range", fmt::format("bytes={}-{}", Offset, Offset + PartSize - 1)}})); + if (Response.IsSuccess()) + { + Workload->OnReceive(Offset, Response.ResponsePayload); + uint64_t ByteRemaning = Workload->BytesRemaining.fetch_sub(Response.ResponsePayload.GetSize()); + if (ByteRemaning == Response.ResponsePayload.GetSize()) { - Workload->OnReceive(Offset, Response.ResponsePayload); - uint64_t ByteRemaning = Workload->BytesRemaining.fetch_sub(Response.ResponsePayload.GetSize()); - if (ByteRemaning == Response.ResponsePayload.GetSize()) - { - Workload->OnComplete(); - } + Workload->OnComplete(); } - return detail::ConvertResponse(Response, "JupiterSession::GetMultipartBuildBlob"sv); - }); + } + return detail::ConvertResponse(Response, "JupiterSession::GetMultipartBuildBlob"sv); + }); Offset += PartSize; } } |