diff options
| author | Dan Engelbrecht <[email protected]> | 2022-09-22 00:51:23 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2022-09-22 10:52:15 +0200 |
| commit | 75d1e777af58922bbba00ebbdc05bdc0fd768b9f (patch) | |
| tree | ecbdc366194193e19caf8387b54dcdeaa8ce0e57 /zenutil | |
| parent | Add elapsed seconds per individual request from upstream (#167) (diff) | |
| download | zen-de/auto-batch-upstream.tar.xz zen-de/auto-batch-upstream.zip | |
Diffstat (limited to 'zenutil')
| -rw-r--r-- | zenutil/cache/cacherequests.cpp | 76 | ||||
| -rw-r--r-- | zenutil/include/zenutil/cache/cacherequests.h | 30 |
2 files changed, 54 insertions, 52 deletions
diff --git a/zenutil/cache/cacherequests.cpp b/zenutil/cache/cacherequests.cpp index 2c14ef35b..e764e80c4 100644 --- a/zenutil/cache/cacherequests.cpp +++ b/zenutil/cache/cacherequests.cpp @@ -20,6 +20,8 @@ namespace zen { namespace cacherequests { + using namespace std::literals; + namespace { constinit AsciiSet ValidNamespaceNameCharactersSet{"abcdefghijklmnopqrstuvwxyz0123456789-_.ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; constinit AsciiSet ValidBucketNameCharactersSet{"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; @@ -970,43 +972,43 @@ namespace cacherequests { } } - // bool CacheRecord::Parse(CbObjectView& Reader) - // { - // CbObjectView KeyView = Reader["Key"].AsObjectView(); - // - // if (!GetRequestCacheKey(KeyView, Key)) - // { - // return false; - // } - // CbArrayView ValuesArray = Reader["Values"].AsArrayView(); - // Values.reserve(ValuesArray.Num()); - // for (CbFieldView Value : ValuesArray) - // { - // CbObjectView ObjectView = Value.AsObjectView(); - // Values.push_back({.Id = ObjectView["Id"].AsObjectId(), - // .RawHash = ObjectView["RawHash"].AsHash(), - // .RawSize = ObjectView["RawSize"].AsUInt64()}); - // } - // return true; - // } - // - // bool CacheRecord::Format(CbObjectWriter& Writer) const - // { - // WriteCacheRequestKey(Writer, Key); - // Writer.BeginArray("Values"); - // for (const CacheRecordValue& Value : Values) - // { - // Writer.BeginObject(); - // { - // Writer.AddObjectId("Id", Value.Id); - // Writer.AddHash("RawHash", Value.RawHash); - // Writer.AddInteger("RawSize", Value.RawSize); - // } - // Writer.EndObject(); - // } - // Writer.EndArray(); - // return true; - // } + bool CacheRecord::Parse(const CbObjectView& Reader) + { + CbObjectView KeyView = Reader["Key"sv].AsObjectView(); + + if (!GetRequestCacheKey(KeyView, Key)) + { + return false; + } + CbArrayView ValuesArray = Reader["Values"sv].AsArrayView(); + Values.reserve(ValuesArray.Num()); + for (CbFieldView Value : ValuesArray) + { + CbObjectView ObjectView = Value.AsObjectView(); + Values.push_back({.Id = ObjectView["Id"sv].AsObjectId(), + .RawHash = ObjectView["RawHash"sv].AsBinaryAttachment(), + .RawSize = ObjectView["RawSize"sv].AsUInt64()}); + } + return true; + } + + bool CacheRecord::Format(CbObjectWriter& Writer) const + { + WriteCacheRequestKey(Writer, Key); + Writer.BeginArray("Values"sv); + for (const CacheRecordValue& Value : Values) + { + Writer.BeginObject(); + { + Writer.AddObjectId("Id"sv, Value.Id); + Writer.AddBinaryAttachment("RawHash"sv, Value.RawHash); + Writer.AddInteger("RawSize"sv, Value.RawSize); + } + Writer.EndObject(); + } + Writer.EndArray(); + return true; + } #if ZEN_WITH_TESTS diff --git a/zenutil/include/zenutil/cache/cacherequests.h b/zenutil/include/zenutil/cache/cacherequests.h index ffb0f8d5f..4566eba38 100644 --- a/zenutil/include/zenutil/cache/cacherequests.h +++ b/zenutil/include/zenutil/cache/cacherequests.h @@ -245,21 +245,21 @@ namespace cacherequests { ////////////////////////////////////////////////////////////////////////// - // struct CacheRecordValue - // { - // Oid Id = Oid::Zero; - // IoHash RawHash = IoHash::Zero; - // uint64_t RawSize = 0; - // }; - // - // struct CacheRecord - // { - // CacheKey Key = CacheKey::Empty; - // std::vector<CacheRecordValue> Values; - // - // bool Parse(CbObjectView& Reader); - // bool Format(CbObjectWriter& Writer) const; - // }; + struct CacheRecordValue + { + Oid Id = Oid::Zero; + IoHash RawHash = IoHash::Zero; + uint64_t RawSize = 0; + }; + + struct CacheRecord + { + CacheKey Key = CacheKey::Empty; + std::vector<CacheRecordValue> Values; + + bool Parse(const CbObjectView& Reader); + bool Format(CbObjectWriter& Writer) const; + }; } // namespace cacherequests |