aboutsummaryrefslogtreecommitdiffstats
path: root/include/ObjectManager.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/ObjectManager.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/include/ObjectManager.h b/include/ObjectManager.h
new file mode 100644
index 0000000..8abf44c
--- /dev/null
+++ b/include/ObjectManager.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include "Api.h"
+#include "Types.h"
+
+#include <cstdint>
+#include <set>
+#include <string>
+#include <vector>
+
+namespace nt
+{
+ class NT_API ObjectManager
+ {
+ public:
+ class IObject {
+ public:
+ virtual ~IObject() = default;
+ };
+ class Multigroup : IObject {};
+ class Relation : IObject {};
+ class Tuple : IObject {};
+ class Transaction : IObject {};
+ struct object_type {
+ OBJECT_TYPE label;
+ // If the object is not durable. E.g.: TRANSACTION
+ bool disposable;
+ std::set<METHOD> methods;
+ };
+ struct registry_head {
+ uint32_t reference_count;
+ uint32_t handle_count;
+ struct object_type* type;
+ std::vector<std::string> path;
+ //security_descriptor to be added later, maybe also a set of labels
+ };
+ struct registry {
+ struct registry_head* head;
+ IObject object;
+ // TODO: Treat as a list for now, but ideally it's a tree
+ struct registry* next;
+ };
+ struct registry** entries;
+ // Looks into this registry and attempts to retrieve the entry
+ struct registry* Find(const std::vector<std::string> object_path);
+ };
+}