aboutsummaryrefslogtreecommitdiff
path: root/ref/store/memory/memory.go
diff options
context:
space:
mode:
Diffstat (limited to 'ref/store/memory/memory.go')
-rw-r--r--ref/store/memory/memory.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/ref/store/memory/memory.go b/ref/store/memory/memory.go
new file mode 100644
index 00000000..3c8f4968
--- /dev/null
+++ b/ref/store/memory/memory.go
@@ -0,0 +1,43 @@
+package memory
+
+import (
+ "sync"
+
+ "lindenii.org/go/furgit/object/id"
+ "lindenii.org/go/furgit/ref/store"
+)
+
+// Memory reads and writes one in-memory Git reference namespace.
+//
+// Labels: Close-Caller.
+type Memory struct {
+ mu sync.RWMutex //exhaustruct:optional
+ objectFormat id.ObjectFormat
+ refs map[string]storedRef
+}
+
+var (
+ _ store.Reader = (*Memory)(nil)
+ _ store.Transactioner = (*Memory)(nil)
+ _ store.Batcher = (*Memory)(nil)
+)
+
+// New builds one empty in-memory reference store for one object format.
+func New(objectFormat id.ObjectFormat) *Memory {
+ return &Memory{
+ objectFormat: objectFormat,
+ refs: make(map[string]storedRef),
+ }
+}
+
+// ObjectFormat returns the object format used by the store.
+func (memory *Memory) ObjectFormat() id.ObjectFormat {
+ return memory.objectFormat
+}
+
+// Close closes the in-memory reference store.
+//
+// Labels: MT-Unsafe.
+func (memory *Memory) Close() error {
+ return nil
+}