aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/cache/cachedisklayer.cpp
diff options
context:
space:
mode:
authorzousar <[email protected]>2025-02-26 14:30:36 -0700
committerzousar <[email protected]>2025-02-26 14:30:36 -0700
commit6243ad171f12c3ba9d99244612e5c0d4991c3369 (patch)
tree5fadcfa80adc761479ab833255fc5153601005c9 /src/zenstore/cache/cachedisklayer.cpp
parentEnforce Overwrite Prevention According To Cache Policy (diff)
downloadzen-6243ad171f12c3ba9d99244612e5c0d4991c3369.tar.xz
zen-6243ad171f12c3ba9d99244612e5c0d4991c3369.zip
Move utility methods in cachedisklayer
Value comparison methods moved to more appropriate area in file.
Diffstat (limited to 'src/zenstore/cache/cachedisklayer.cpp')
-rw-r--r--src/zenstore/cache/cachedisklayer.cpp76
1 files changed, 38 insertions, 38 deletions
diff --git a/src/zenstore/cache/cachedisklayer.cpp b/src/zenstore/cache/cachedisklayer.cpp
index eaed1f64e..54f0c4bfc 100644
--- a/src/zenstore/cache/cachedisklayer.cpp
+++ b/src/zenstore/cache/cachedisklayer.cpp
@@ -233,6 +233,42 @@ using namespace std::literals;
namespace zen::cache::impl {
+static bool
+ValueMatchesRawSizeAndHash(const ZenCacheValue& Value, uint64_t RawSize, const std::function<IoHash()>& RawHashProvider)
+{
+ if ((Value.RawSize != 0) || (Value.RawHash != IoHash::Zero))
+ {
+ return ((RawSize == Value.RawSize) && (RawHashProvider() == Value.RawHash));
+ }
+ else if (Value.Value.GetContentType() == ZenContentType::kCompressedBinary)
+ {
+ uint64_t ValueRawSize = 0;
+ IoHash ValueRawHash = IoHash::Zero;
+ return CompressedBuffer::ValidateCompressedHeader(Value.Value, ValueRawHash, ValueRawSize) && (RawSize == ValueRawSize) &&
+ (RawHashProvider() == ValueRawHash);
+ }
+
+ return (RawSize == Value.Value.GetSize()) && (RawHashProvider() == IoHash::HashBuffer(Value.Value));
+}
+
+static bool
+ValueMatchesValue(const ZenCacheValue& Value1, const ZenCacheValue& Value2)
+{
+ if ((Value1.RawSize != 0) || (Value1.RawHash != IoHash::Zero))
+ {
+ return ValueMatchesRawSizeAndHash(Value2, Value1.RawSize, [&Value1]() { return Value1.RawHash; });
+ }
+ else if (Value1.Value.GetContentType() == ZenContentType::kCompressedBinary)
+ {
+ uint64_t Value1RawSize = 0;
+ IoHash Value1RawHash = IoHash::Zero;
+ return CompressedBuffer::ValidateCompressedHeader(Value1.Value, Value1RawHash, Value1RawSize) &&
+ ValueMatchesRawSizeAndHash(Value2, Value1RawSize, [Value1RawHash]() { return Value1RawHash; });
+ }
+
+ return ValueMatchesRawSizeAndHash(Value2, Value1.Value.GetSize(), [&Value1]() { return IoHash::HashBuffer(Value1.Value); });
+}
+
class BucketManifestSerializer
{
using MetaDataIndex = ZenCacheDiskLayer::CacheBucket::MetaDataIndex;
@@ -1793,42 +1829,6 @@ ZenCacheDiskLayer::CacheBucket::Get(const IoHash& HashKey, ZenCacheValue& OutVal
}
}
-static bool
-ValueMatchesRawSizeAndHash(const ZenCacheValue& Value, uint64_t RawSize, const std::function<IoHash()>& RawHashProvider)
-{
- if ((Value.RawSize != 0) || (Value.RawHash != IoHash::Zero))
- {
- return ((RawSize == Value.RawSize) && (RawHashProvider() == Value.RawHash));
- }
- else if (Value.Value.GetContentType() == ZenContentType::kCompressedBinary)
- {
- uint64_t ValueRawSize = 0;
- IoHash ValueRawHash = IoHash::Zero;
- return CompressedBuffer::ValidateCompressedHeader(Value.Value, ValueRawHash, ValueRawSize) && (RawSize == ValueRawSize) &&
- (RawHashProvider() == ValueRawHash);
- }
-
- return (RawSize == Value.Value.GetSize()) && (RawHashProvider() == IoHash::HashBuffer(Value.Value));
-}
-
-static bool
-ValueMatchesValue(const ZenCacheValue& Value1, const ZenCacheValue& Value2)
-{
- if ((Value1.RawSize != 0) || (Value1.RawHash != IoHash::Zero))
- {
- return ValueMatchesRawSizeAndHash(Value2, Value1.RawSize, [&Value1]() { return Value1.RawHash; });
- }
- else if (Value1.Value.GetContentType() == ZenContentType::kCompressedBinary)
- {
- uint64_t Value1RawSize = 0;
- IoHash Value1RawHash = IoHash::Zero;
- return CompressedBuffer::ValidateCompressedHeader(Value1.Value, Value1RawHash, Value1RawSize) &&
- ValueMatchesRawSizeAndHash(Value2, Value1RawSize, [Value1RawHash]() { return Value1RawHash; });
- }
-
- return ValueMatchesRawSizeAndHash(Value2, Value1.Value.GetSize(), [&Value1]() { return IoHash::HashBuffer(Value1.Value); });
-}
-
bool
ZenCacheDiskLayer::CacheBucket::Put(const IoHash& HashKey,
const ZenCacheValue& Value,
@@ -1857,7 +1857,7 @@ ZenCacheDiskLayer::CacheBucket::Put(const IoHash& HashKey,
const BucketMetaData& MetaData = m_MetaDatas[Payload->MetaData];
if (MetaData)
{
- if (!ValueMatchesRawSizeAndHash(Value, MetaData.RawSize, [&MetaData]() { return MetaData.RawHash; }))
+ if (!cache::impl::ValueMatchesRawSizeAndHash(Value, MetaData.RawSize, [&MetaData]() { return MetaData.RawHash; }))
{
if (OptionalBatchHandle)
{
@@ -1873,7 +1873,7 @@ ZenCacheDiskLayer::CacheBucket::Put(const IoHash& HashKey,
{
IndexLock.ReleaseNow();
ZenCacheValue ExistingValue;
- if (Get(HashKey, ExistingValue) && !ValueMatchesValue(Value, ExistingValue))
+ if (Get(HashKey, ExistingValue) && !cache::impl::ValueMatchesValue(Value, ExistingValue))
{
if (OptionalBatchHandle)
{