diff options
| author | 2026-06-24 14:52:28 +0000 | |
|---|---|---|
| committer | 2026-06-24 14:53:00 +0000 | |
| commit | db5e5eb40d7f8652383099a2154f00158aa476c2 (patch) | |
| tree | e8c60130234137fc59505a360e804917f6c6f01e /ref/store/memory/memory.go | |
| parent | TODO: maint, gc (diff) | |
ref/store{,/memory}: Add
Diffstat (limited to 'ref/store/memory/memory.go')
| -rw-r--r-- | ref/store/memory/memory.go | 43 |
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 +} |
