aboutsummaryrefslogtreecommitdiff
path: root/ref/store/memory/memory.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-06-24 14:52:28 +0000
committerGravatar Runxi Yu2026-06-24 14:53:00 +0000
commitdb5e5eb40d7f8652383099a2154f00158aa476c2 (patch)
treee8c60130234137fc59505a360e804917f6c6f01e /ref/store/memory/memory.go
parentTODO: maint, gc (diff)
ref/store{,/memory}: Add
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
+}