aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/cachekey.h
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-11-10 08:47:57 +0100
committerPer Larsson <[email protected]>2021-11-10 08:47:57 +0100
commit424be141e88b04b4de7ab5def2c29b03f5f72d48 (patch)
tree2feba55ce29e78f9449f46c7c511cc5446bc9624 /zenserver/cache/cachekey.h
parentSort cache keys when resolving payload ID's. (diff)
downloadzen-424be141e88b04b4de7ab5def2c29b03f5f72d48.tar.xz
zen-424be141e88b04b4de7ab5def2c29b03f5f72d48.zip
Handle cache record policy.
Diffstat (limited to 'zenserver/cache/cachekey.h')
-rw-r--r--zenserver/cache/cachekey.h23
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;