diff --git a/Facade.h b/Facade.h index 02b4bdb..60e15f3 100644 --- a/Facade.h +++ b/Facade.h @@ -10,7 +10,8 @@ using String = std::basic_string; struct Facade { - explicit Facade(int64_t version) : versioned{version} {} + explicit Facade(int64_t version) + : unversionedVersion(version), versioned{version} {} struct View { @@ -132,6 +133,9 @@ struct Facade { for (auto iter = versioned.begin(version), end = versioned.end(version); iter != end; ++iter) { auto m = *iter; + if (m.version < unversionedVersion) { + continue; + } switch (m.type) { case weaselab::VersionedMap::Set: unversioned[String(m.param1, m.param1Len)] = @@ -152,6 +156,7 @@ struct Facade { } } + unversionedVersion = version; versioned.setOldestVersion(version); } @@ -190,6 +195,7 @@ struct Facade { } } + int64_t unversionedVersion; std::map unversioned; weaselab::VersionedMap versioned; }; \ No newline at end of file