aboutsummaryrefslogtreecommitdiff
path: root/zenstore/gc.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-12-07 11:06:22 +0100
committerPer Larsson <[email protected]>2021-12-07 11:06:22 +0100
commitfdcd769a821adb03b3cf79bb873fe46dfeb02e55 (patch)
treec1fea6b5a9a94403226bc43874a4c65778ddb5a9 /zenstore/gc.cpp
parentFixed bug in container GC. (diff)
downloadzen-fdcd769a821adb03b3cf79bb873fe46dfeb02e55.tar.xz
zen-fdcd769a821adb03b3cf79bb873fe46dfeb02e55.zip
Added support for time based eviction policy in structured cache.
Diffstat (limited to 'zenstore/gc.cpp')
-rw-r--r--zenstore/gc.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/zenstore/gc.cpp b/zenstore/gc.cpp
index b18a577bf..5aff20e7a 100644
--- a/zenstore/gc.cpp
+++ b/zenstore/gc.cpp
@@ -47,14 +47,17 @@ SaveCompactBinaryObject(const std::filesystem::path& Path, const CbObject& Objec
struct GcContext::GcState
{
- CasChunkSet m_CasChunks;
- CasChunkSet m_CidChunks;
- bool m_DeletionMode = true;
- bool m_ContainerGcEnabled = false;
+ CasChunkSet m_CasChunks;
+ CasChunkSet m_CidChunks;
+ GcClock::TimePoint m_GcTime;
+ GcClock::Duration m_MaxCacheDuration = std::chrono::hours(24);
+ bool m_DeletionMode = true;
+ bool m_ContainerGcEnabled = false;
};
-GcContext::GcContext() : m_State(std::make_unique<GcState>())
+GcContext::GcContext(GcClock::TimePoint Time) : m_State(std::make_unique<GcState>())
{
+ m_State->m_GcTime = Time;
}
GcContext::~GcContext()
@@ -115,6 +118,24 @@ GcContext::SetContainerGcEnabled(bool NewState)
m_State->m_ContainerGcEnabled = NewState;
}
+GcClock::TimePoint
+GcContext::Time() const
+{
+ return m_State->m_GcTime;
+}
+
+GcClock::Duration
+GcContext::MaxCacheDuration() const
+{
+ return m_State->m_MaxCacheDuration;
+}
+
+void
+GcContext::MaxCacheDuration(GcClock::Duration Duration)
+{
+ m_State->m_MaxCacheDuration = Duration;
+}
+
//////////////////////////////////////////////////////////////////////////
GcContributor::GcContributor(CasGc& Gc) : m_Gc(Gc)