diff options
| author | Stefan Boberg <[email protected]> | 2021-10-21 18:03:41 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-10-21 18:03:41 +0200 |
| commit | 3e824897aed32282ec9ee297e1cfc3efc5a8d251 (patch) | |
| tree | 199d71e7314ecf7df577b4466f0d599b86c4dd08 /zenstore/gc.cpp | |
| parent | Added IsReady flag to ZenServerEntry (diff) | |
| download | zen-3e824897aed32282ec9ee297e1cfc3efc5a8d251.tar.xz zen-3e824897aed32282ec9ee297e1cfc3efc5a8d251.zip | |
gc: Added GcStorage base class and hooked it up to CasGc
Diffstat (limited to 'zenstore/gc.cpp')
| -rw-r--r-- | zenstore/gc.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/zenstore/gc.cpp b/zenstore/gc.cpp index 612cceed9..79c646db2 100644 --- a/zenstore/gc.cpp +++ b/zenstore/gc.cpp @@ -47,7 +47,19 @@ GcContributor::~GcContributor() ////////////////////////////////////////////////////////////////////////// -CasGc::CasGc(CasStore& Store) : m_CasStore(Store) +GcStorage::GcStorage(CasGc& Gc) : m_Gc(Gc) +{ + m_Gc.AddGcStorage(this); +} + +GcStorage::~GcStorage() +{ + m_Gc.AddGcStorage(this); +} + +////////////////////////////////////////////////////////////////////////// + +CasGc::CasGc() { } @@ -70,6 +82,20 @@ CasGc::RemoveGcContributor(GcContributor* Contributor) } void +CasGc::AddGcStorage(GcStorage* Storage) +{ + RwLock::ExclusiveLockScope _(m_Lock); + m_GcStorage.push_back(Storage); +} + +void +CasGc::RemoveGcStorage(GcStorage* Storage) +{ + RwLock::ExclusiveLockScope _(m_Lock); + std::erase_if(m_GcStorage, [&](GcStorage* $) { return $ == Storage; }); +} + +void CasGc::CollectGarbage() { } |