aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-09-16 21:19:02 +0200
committerPer Larsson <[email protected]>2021-09-16 21:19:02 +0200
commitc7c4b3b05a0e9826a35758f6212140fd29e5b474 (patch)
tree2008778b892bbe4eb0a8d32c4737071c9b720646 /zenserver/cache/structuredcache.cpp
parentCompact binary package caching support (#9) (diff)
downloadzen-c7c4b3b05a0e9826a35758f6212140fd29e5b474.tar.xz
zen-c7c4b3b05a0e9826a35758f6212140fd29e5b474.zip
zcache - minor cleanup.
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp52
1 files changed, 24 insertions, 28 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index cf7deaa93..da2e8850e 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -437,26 +437,22 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
CbObject CacheRecord = Package.GetObject();
- int32_t AttachmentCount = 0;
- int32_t NewAttachmentCount = 0;
- uint64_t TotalAttachmentBytes = 0;
- uint64_t TotalNewBytes = 0;
- bool AttachmentsOk = true;
-
+ struct AttachmentInsertResult
+ {
+ int32_t Count = 0;
+ int32_t NewCount = 0;
+ uint64_t Bytes = 0;
+ uint64_t NewBytes = 0;
+ bool Ok = false;
+ };
+
+ AttachmentInsertResult AttachmentResult{.Ok = true};
std::span<const CbAttachment> Attachments = Package.GetAttachments();
+ std::vector<IoHash> PayloadIds;
- std::vector<IoHash> PayloadIds;
PayloadIds.reserve(Attachments.size());
- CacheRecord.IterateAttachments([this,
- &Ref,
- &Package,
- &AttachmentsOk,
- &AttachmentCount,
- &TotalAttachmentBytes,
- &TotalNewBytes,
- &NewAttachmentCount,
- &PayloadIds](CbFieldView AttachmentHash) {
+ CacheRecord.IterateAttachments([this, &Ref, &Package, &AttachmentResult, &PayloadIds](CbFieldView AttachmentHash) {
if (const CbAttachment* Attachment = Package.FindAttachment(AttachmentHash.AsHash()))
{
if (Attachment->IsCompressedBinary())
@@ -469,12 +465,12 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
if (InsertResult.New)
{
- TotalNewBytes += ChunkSize;
- ++NewAttachmentCount;
+ AttachmentResult.NewBytes += ChunkSize;
+ AttachmentResult.NewCount++;
}
- TotalAttachmentBytes += ChunkSize;
- AttachmentCount++;
+ AttachmentResult.Bytes += ChunkSize;
+ AttachmentResult.Count++;
}
else
{
@@ -482,7 +478,7 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
Ref.BucketSegment,
Ref.HashKey,
AttachmentHash.AsHash());
- AttachmentsOk = false;
+ AttachmentResult.Ok = false;
}
}
else
@@ -491,17 +487,17 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
Ref.BucketSegment,
Ref.HashKey,
AttachmentHash.AsHash());
- AttachmentsOk = false;
+ AttachmentResult.Ok = false;
}
});
- if (!AttachmentsOk)
+ if (!AttachmentResult.Ok)
{
return Request.WriteResponse(HttpResponseCode::BadRequest, HttpContentType::kText, "Invalid attachments");
}
IoBuffer CacheRecordChunk = CacheRecord.GetBuffer().AsIoBuffer();
- const uint64_t TotalPackageBytes = TotalAttachmentBytes + CacheRecordChunk.Size();
+ const uint64_t TotalPackageBytes = AttachmentResult.Bytes + CacheRecordChunk.Size();
ZenCacheValue CacheValue{.Value = CacheRecordChunk};
m_CacheStore.Put(Ref.BucketSegment, Ref.HashKey, CacheValue);
@@ -517,10 +513,10 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
Ref.BucketSegment,
Ref.HashKey,
zen::NiceBytes(TotalPackageBytes),
- NewAttachmentCount,
- AttachmentCount,
- zen::NiceBytes(TotalNewBytes),
- zen::NiceBytes(TotalAttachmentBytes));
+ AttachmentResult.NewCount,
+ AttachmentResult.Count,
+ zen::NiceBytes(AttachmentResult.NewBytes),
+ zen::NiceBytes(AttachmentResult.Bytes));
return Request.WriteResponse(zen::HttpResponseCode::Created);
}