aboutsummaryrefslogtreecommitdiff
path: root/zenutil/cache/cachepolicy.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2022-01-30 16:53:18 +0100
committerStefan Boberg <[email protected]>2022-01-30 16:53:18 +0100
commit66954fb803b1046ca67197f677e7f906a8e68ed0 (patch)
treeabdfa9350d563eb68c883dd309ef58461f3744a6 /zenutil/cache/cachepolicy.cpp
parentAdded generate_projects.bat helper (diff)
parentMerge branch 'main' of https://github.com/EpicGames/zen (diff)
downloadzen-66954fb803b1046ca67197f677e7f906a8e68ed0.tar.xz
zen-66954fb803b1046ca67197f677e7f906a8e68ed0.zip
Merge branch 'main' of https://github.com/EpicGames/zen
Diffstat (limited to 'zenutil/cache/cachepolicy.cpp')
-rw-r--r--zenutil/cache/cachepolicy.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/zenutil/cache/cachepolicy.cpp b/zenutil/cache/cachepolicy.cpp
index ba345485a..3bf7a0c67 100644
--- a/zenutil/cache/cachepolicy.cpp
+++ b/zenutil/cache/cachepolicy.cpp
@@ -4,6 +4,7 @@
#include <zencore/compactbinary.h>
#include <zencore/compactbinarybuilder.h>
+#include <zencore/enumflags.h>
#include <zencore/string.h>
#include <algorithm>
@@ -206,6 +207,25 @@ CacheRecordPolicy::Load(CbObjectView Object, CachePolicy DefaultPolicy)
return Builder.Build();
}
+CacheRecordPolicy
+CacheRecordPolicy::ConvertToUpstream() const
+{
+ auto DownstreamToUpstream = [](CachePolicy P) {
+ // Remote|Local -> Set Remote
+ // Delete Skip Flags
+ // Maintain Remaining Flags
+ return (EnumHasAllFlags(P, CachePolicy::QueryRemote) ? CachePolicy::QueryLocal : CachePolicy::None) |
+ (EnumHasAllFlags(P, CachePolicy::StoreRemote) ? CachePolicy::StoreLocal : CachePolicy::None) |
+ (P & ~(CachePolicy::SkipData | CachePolicy::SkipMeta));
+ };
+ CacheRecordPolicyBuilder Builder(DownstreamToUpstream(GetDefaultValuePolicy()));
+ for (const CacheValuePolicy& ValuePolicy : GetValuePolicies())
+ {
+ Builder.AddValuePolicy(ValuePolicy.Id, DownstreamToUpstream(ValuePolicy.Policy));
+ }
+ return Builder.Build();
+}
+
void
CacheRecordPolicyBuilder::AddValuePolicy(const CacheValuePolicy& Policy)
{