diff options
Diffstat (limited to 'src/zenserver/projectstore/oplogreferencedset.h')
| -rw-r--r-- | src/zenserver/projectstore/oplogreferencedset.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/zenserver/projectstore/oplogreferencedset.h b/src/zenserver/projectstore/oplogreferencedset.h index 297fd29d5..dcc156060 100644 --- a/src/zenserver/projectstore/oplogreferencedset.h +++ b/src/zenserver/projectstore/oplogreferencedset.h @@ -6,7 +6,10 @@ #include <optional> #include <string_view> -#include <unordered_set> + +ZEN_THIRD_PARTY_INCLUDES_START +#include <tsl/robin_set.h> +ZEN_THIRD_PARTY_INCLUDES_END namespace zen { @@ -24,8 +27,12 @@ class IoBuffer; class OplogReferencedSet { public: - void Emplace(Oid OplogId); - bool Contains(Oid OplogId, std::string_view OplogKey); + inline bool Contains(const Oid& OplogId) const { return Set.contains(OplogId); } + static inline bool IsNonPackage(std::string_view OplogKey) + { + // A referencedset always includes all non-package keys + return OplogKey.empty() || !OplogKey.starts_with('/'); + } void Clear(); static std::optional<OplogReferencedSet> LoadFromChunk(const IoBuffer& ChunkData); @@ -33,7 +40,7 @@ public: static constexpr std::string_view ReferencedSetOplogKey = "ReferencedSet"; private: - std::unordered_set<Oid> Set; + tsl::robin_set<Oid, Oid::Hasher> Set; }; } // namespace zen |