aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/projectstore/oplogreferencedset.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/projectstore/oplogreferencedset.h')
-rw-r--r--src/zenserver/projectstore/oplogreferencedset.h15
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