diff options
| author | Per Larsson <[email protected]> | 2021-11-10 08:47:57 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2021-11-10 08:47:57 +0100 |
| commit | 424be141e88b04b4de7ab5def2c29b03f5f72d48 (patch) | |
| tree | 2feba55ce29e78f9449f46c7c511cc5446bc9624 /zenserver/cache/cachekey.h | |
| parent | Sort cache keys when resolving payload ID's. (diff) | |
| download | zen-424be141e88b04b4de7ab5def2c29b03f5f72d48.tar.xz zen-424be141e88b04b4de7ab5def2c29b03f5f72d48.zip | |
Handle cache record policy.
Diffstat (limited to 'zenserver/cache/cachekey.h')
| -rw-r--r-- | zenserver/cache/cachekey.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/zenserver/cache/cachekey.h b/zenserver/cache/cachekey.h index 5b67b0261..6ce5d3aab 100644 --- a/zenserver/cache/cachekey.h +++ b/zenserver/cache/cachekey.h @@ -7,8 +7,12 @@ #include <zencore/uid.h> #include <gsl/gsl-lite.hpp> +#include <unordered_map> + namespace zen { +class CbObjectView; + enum class CachePolicy : uint8_t { None = 0, @@ -37,6 +41,25 @@ CachePolicy ParseStoreCachePolicy(std::string_view StorePolicy, CachePolicy Defa CachePolicy ParseSkipCachePolicy(std::string_view SkipPolicy, CachePolicy Default = CachePolicy::None); +class CacheRecordPolicy +{ +public: + CacheRecordPolicy() = default; + + CachePolicy GetRecordPolicy() const { return m_RecordPolicy; } + CachePolicy GetPayloadPolicy(const Oid& PayloadId) const; + CachePolicy GetDefaultPayloadPolicy() const { return m_DefaultPayloadPolicy; } + + static bool FromCompactBinary(CbObjectView RecordPolicyObject, CacheRecordPolicy& OutRecordPolicy); + +private: + using PayloadPolicyMap = std::unordered_map<Oid, CachePolicy, Oid::Hasher>; + + CachePolicy m_RecordPolicy = CachePolicy::Default; + CachePolicy m_DefaultPayloadPolicy = CachePolicy::Default; + PayloadPolicyMap m_PayloadPolicies; +}; + struct CacheKey { std::string Bucket; |